admin
2021-04-19 eb7f3343af839a7c71f16e8ada2b25d5e2201c08
src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java
@@ -1,7 +1,26 @@
package com.yeshi.buwan.controller.api;
import com.google.gson.Gson;
import com.yeshi.buwan.domain.jump.JumpDetail;
import com.yeshi.buwan.domain.jump.JumpTypeEnum;
import com.yeshi.buwan.domain.video.VideoWatchHistory;
import com.yeshi.buwan.pptv.PPTVApiUtil;
import com.yeshi.buwan.pptv.PPTVUtil;
import com.yeshi.buwan.pptv.entity.PPTVProgram;
import com.yeshi.buwan.pptv.entity.PPTVSeries;
import com.yeshi.buwan.pptv.entity.PPTVSeriesProgramMap;
import com.yeshi.buwan.pptv.entity.VideoPPTVMap;
import com.yeshi.buwan.service.inter.juhe.PPTVService;
import com.yeshi.buwan.service.inter.push.PushDeviceTokenService;
import com.yeshi.buwan.service.inter.system.SystemConfigService;
import com.yeshi.buwan.service.inter.video.VideoWatchHistoryService;
import com.yeshi.buwan.util.JsonUtil;
import com.yeshi.buwan.util.ThreadUtil;
import com.yeshi.buwan.util.VersionUtil;
import com.yeshi.buwan.vo.AcceptData;
import com.yeshi.buwan.vo.video.PPTVVideoActivityInfoVO;
import com.yeshi.buwan.vo.video.PPTVWatchVIPVideoActivityWay;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
@@ -9,6 +28,9 @@
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("api/v2/video/play")
@@ -17,7 +39,13 @@
    Logger logger = LoggerFactory.getLogger(VideoPlayController.class);
    @Resource
    private PushDeviceTokenService pushDeviceTokenService;
    private PPTVService pptvService;
    @Resource
    private VideoWatchHistoryService videoWatchHistoryService;
    @Resource
    private SystemConfigService systemConfigService;
    /**
@@ -25,18 +53,121 @@
     *
     * @param acceptData
     * @param loginUid
     * @param cid
     * @param vid
     * @param Cid
     * @param Vid
     * @return
     */
    @RequestMapping("pptvPlay")
    @ResponseBody
    public String pptvPlay(AcceptData acceptData, String loginUid, String cid, String vid) {
    public String pptvPlay(AcceptData acceptData, String loginUid, String Cid, String Vid) {
        logger.info("播放PPTV:loginUid-{},cid-{},vid-{}", loginUid, cid, vid);
        logger.info("播放PPTV:loginUid-{},cid-{},vid-{}", loginUid, Cid, Vid);
        PPTVSeriesProgramMap map = pptvService.selectMapByCode(Cid, Vid);
        if (map != null) {
            String infoId = map.getInfoId();
            VideoPPTVMap videoPPTVMap = pptvService.selectVideoPPTVMapByInfoId(infoId);
            if (videoPPTVMap != null) {
                PPTVProgram program = pptvService.selectProgramById(Vid);
                if (program != null && program.getSeriesNum() != null) {
                    //当前播放的集数  program.getSeriesNum();
                    VideoWatchHistory history = new VideoWatchHistory();
                    history.setDevice(acceptData.getDevice());
                    history.setVideoId(videoPPTVMap.getVideoId());
                    history.setUid(loginUid);
                    history.setPosition(Integer.parseInt(program.getSeriesNum()) - 1);
                    videoWatchHistoryService.add(history);
                }
            }
        }
        return "";
    }
    /**
     * 获取pptv的活动
     *
     * @param acceptData
     * @param loginUid
     * @param cid
     * @param vid
     * @return
     */
    @RequestMapping("getPPTVVIPVideoActivity")
    @ResponseBody
    public String getPPTVVIPVideoActivity(AcceptData acceptData, String loginUid, String cid, String vid) {
        //查询cid与vid的名字
        PPTVSeries pptvSeries = pptvService.selectSeriesBySeriesCode(cid);
        if (pptvSeries == null) {
            try {
                pptvSeries = PPTVApiUtil.getDetail(cid);
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        pptvService.syncSeries(cid);
                    }
                });
            } catch (Exception e) {
            }
        }
        PPTVVideoActivityInfoVO vo = new PPTVVideoActivityInfoVO();
        if (pptvSeries != null) {
            vo.setVideoName("《" + pptvSeries.getName() + "》");
        } else {
            vo.setVideoName("《未知视频》");
        }
        List<PPTVWatchVIPVideoActivityWay> wayList = new ArrayList<>();
        PPTVWatchVIPVideoActivityWay way = new PPTVWatchVIPVideoActivityWay();
        way.setEndBgColor("#E9CE93");
        way.setStartBgColor("#F7EDD7");
        way.setEndPrice(new BigDecimal("77.8"));
        way.setIcon("https://buwan-1255749512.cos.ap-guangzhou.myqcloud.com/resource/icon_vip.png");
        way.setStartPrice(new BigDecimal("8.8"));
        way.setSubTitle("包月、季、年卡");
        way.setTitle("VIP看高清 免广告");
        way.setTextColor("#885E24");
        way.setType("vip");
        wayList.add(way);
        //3.9.2后返回单片购买
        if (VersionUtil.isGraterThan392(acceptData.getPlatform(), acceptData.getVersion())) {
            String buyVideoUrl = systemConfigService.getConfigValueByKeyCache("buyVideoUrl");
            if (buyVideoUrl != null && pptvSeries != null && PPTVUtil.isVIPVideo(pptvSeries.getFree()) && PPTVUtil.getAvaiableStates().contains(pptvSeries.getStatus())) {
                way = new PPTVWatchVIPVideoActivityWay();
                way.setEndBgColor("#DCE8FF");
                way.setStartBgColor("#DCE8FF");
//            way.setEndPrice(new BigDecimal("77.8"));
                way.setIcon("http://img.ysdq.yeshitv.com/resource/icon_free_money.png");
                way.setStartPrice(new BigDecimal("0"));
                way.setSubTitle("畅享海量高清");
                way.setTitle("0元看单片");
                way.setTextColor("#0052F6");
                way.setType("video");
                JumpDetail jumpDetail = new JumpDetail();
                jumpDetail.setType(JumpTypeEnum.web);
                way.setJumpDetail(jumpDetail);
                JSONObject params = new JSONObject();
                params.put("url", buyVideoUrl.replace("{infoId}", pptvSeries.getInfoID()));
                params.put("close", false);
                way.setParams(params.toString().replace("\"", "\\" + "\""));
                wayList.add(way);
            }
        }
        vo.setWayList(wayList);
        return JsonUtil.loadTrueJson(new Gson().toJson(vo));
    }
    @RequestMapping("uploadSession")
    @ResponseBody
    public String uploadSession(AcceptData acceptData, String sessionId) {
        return JsonUtil.loadTrueJson("");
    }
}