From f788607ff771a47bc60d6a86e00b3433c40f3d2c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 24 九月 2021 15:22:03 +0800
Subject: [PATCH] 接入视频直播

---
 src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java |  234 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 189 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java b/src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java
index fa312b3..ca59293 100644
--- a/src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java
+++ b/src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java
@@ -3,20 +3,23 @@
 import com.google.gson.Gson;
 import com.yeshi.buwan.domain.jump.JumpDetail;
 import com.yeshi.buwan.domain.jump.JumpTypeEnum;
+import com.yeshi.buwan.domain.pptv.PPTVPlayProcessRecord;
 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.domain.vip.VideoBuyRecord;
+import com.yeshi.buwan.exception.ParamsException;
+import com.yeshi.buwan.videos.pptv.PPTVApiUtil;
+import com.yeshi.buwan.videos.pptv.PPTVUtil;
+import com.yeshi.buwan.videos.pptv.entity.PPTVProgram;
+import com.yeshi.buwan.videos.pptv.entity.PPTVSeries;
+import com.yeshi.buwan.videos.pptv.entity.PPTVSeriesProgramMap;
+import com.yeshi.buwan.videos.pptv.entity.VideoPPTVMap;
+import com.yeshi.buwan.service.inter.juhe.PPTVPlayProcessRecordService;
 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.service.inter.vip.VIPService;
+import com.yeshi.buwan.service.inter.vip.VideoBuyRecordService;
+import com.yeshi.buwan.util.*;
 import com.yeshi.buwan.vo.AcceptData;
 import com.yeshi.buwan.vo.video.PPTVVideoActivityInfoVO;
 import com.yeshi.buwan.vo.video.PPTVWatchVIPVideoActivityWay;
@@ -30,6 +33,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Controller
@@ -47,6 +51,18 @@
     @Resource
     private SystemConfigService systemConfigService;
 
+    @Resource
+    private VIPService vipService;
+
+    @Resource
+    private VideoBuyRecordService videoBuyRecordService;
+
+    @Resource
+    private RedisManager redisManager;
+
+    @Resource
+    private PPTVPlayProcessRecordService pptvPlayProcessRecordService;
+
 
     /**
      * PPTV鎾斁
@@ -63,24 +79,50 @@
 
         logger.info("鎾斁PPTV锛歭oginUid-{}锛宑id-{}锛寁id-{}", loginUid, Cid, Vid);
 
-        PPTVSeriesProgramMap map = pptvService.selectMapByCode(Cid, Vid);
+        PPTVSeriesProgramMap map = pptvService.selectMapByCode(Cid, StringUtil.isNullOrEmpty(Vid) ? null : Vid);
         if (map != null) {
             String infoId = map.getInfoId();
-            VideoPPTVMap videoPPTVMap = pptvService.selectVideoPPTVMapByInfoId(infoId);
+            PPTVSeries series = pptvService.selectSeriesBySeriesCode(Cid);
+            if (series == null) {
+                return "";
+            }
+
+            VideoPPTVMap videoPPTVMap = pptvService.selectVideoPPTVMapByPPInfo(infoId, (series.getProgramType().contains("鐢靛奖") || series.getProgramType2().contains("鐢靛奖")) ? Vid : null);
+
             if (videoPPTVMap != null) {
-                PPTVProgram program = pptvService.selectProgramById(Vid);
+                PPTVProgram program = pptvService.selectProgramById(StringUtil.isNullOrEmpty(Vid) ? Cid : 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);
+                    history.setPosition(StringUtil.isNullOrEmpty(program.getSeriesNum()) ? 0 : Integer.parseInt(program.getSeriesNum()) - 1);
                     videoWatchHistoryService.add(history);
                 }
             }
         }
         return "";
+    }
+
+
+    @RequestMapping("pptvFinishPlay")
+    @ResponseBody
+    public String pptvFinishPlay(AcceptData acceptData, String loginUid, String cid, String vid, Integer currentTime) {
+        ///璁板綍缁撴潫鎾斁
+        PPTVPlayProcessRecord record = new PPTVPlayProcessRecord();
+        record.setCid(cid);
+        record.setDetailSystemId(acceptData.getDetailSystem().getId());
+        record.setDeviceId(StringUtil.isNullOrEmpty(acceptData.getUtdId()) ? acceptData.getDevice() : acceptData.getUtdId());
+        record.setVid(vid);
+        record.setLoginUid(loginUid);
+        record.setCurrentTime(currentTime);
+        try {
+            pptvPlayProcessRecordService.addRecord(record);
+        } catch (ParamsException e) {
+            e.printStackTrace();
+        }
+        return JsonUtil.loadTrueJson("");
     }
 
     /**
@@ -98,6 +140,7 @@
         //鏌ヨcid涓巚id鐨勫悕瀛�
         PPTVSeries pptvSeries = pptvService.selectSeriesBySeriesCode(cid);
         if (pptvSeries == null) {
+//            PPTVProgram program = pptvService.selectProgramById(cid);
             try {
                 pptvSeries = PPTVApiUtil.getDetail(cid);
                 ThreadUtil.run(new Runnable() {
@@ -111,6 +154,10 @@
             }
         }
 
+        if (StringUtil.isNullOrEmpty(vid)) {
+            vid = cid;
+        }
+
         PPTVVideoActivityInfoVO vo = new PPTVVideoActivityInfoVO();
         if (pptvSeries != null) {
             vo.setVideoName("銆�" + pptvSeries.getName() + "銆�");
@@ -119,41 +166,49 @@
         }
 
         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);
+        PPTVWatchVIPVideoActivityWay way = null;
+
+        if (!vipService.isVIP(loginUid)) {
+            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");
+                boolean canBuy = pptvSeries.getGoodsInfo() != null && !StringUtil.isNullOrEmpty(pptvSeries.getGoodsInfo().getGoodsNo());
+                if (canBuy) {
+                    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);
+                    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.setNeedLogin(true);
+                    jumpDetail.setType(JumpTypeEnum.web);
+                    way.setJumpDetail(jumpDetail);
+                    JSONObject params = new JSONObject();
+                    params.put("url", buyVideoUrl.replace("{cid}", cid).replace("{vid}", vid));
+                    params.put("close", false);
+                    way.setParams(params.toString().replace("\"", "\\" + "\""));
+                    wayList.add(way);
+                }
             }
         }
 
@@ -161,12 +216,101 @@
         return JsonUtil.loadTrueJson(new Gson().toJson(vo));
     }
 
-    @RequestMapping("uploadSession")
+
+    /**
+     * 鑾峰彇PPTV鐨勬挱鏀剧姸鎬�
+     *
+     * @param acceptData
+     * @param loginUid
+     * @param cid
+     * @param vid
+     * @return
+     */
+    @RequestMapping("getPPTVVideoPlayState")
     @ResponseBody
-    public String uploadSession(AcceptData acceptData, String sessionId) {
+    public String getPPTVVideoPlayState(AcceptData acceptData, String loginUid, String cid, String vid) {
+
+        vid = StringUtil.isNullOrEmpty(vid) ? cid : vid;
+
+        //鑾峰彇褰撳墠鐢ㄦ埛鏄惁涓簐ip
+        boolean vip = StringUtil.isNullOrEmpty(loginUid) ? false : vipService.isVIP(loginUid);
+
+        boolean isVIPVideo = false;
+        boolean isBought = false;
+        boolean canBuy = false;
+        //鑾峰彇鏄惁涓簐ip瑙嗛
+        PPTVSeries pptvSeries = pptvService.selectSeriesBySeriesCode(cid);
+
+        if (pptvSeries != null) {
+            if (StringUtil.isNullOrEmpty(vid) || vid.trim().equalsIgnoreCase("0")) {
+                if (pptvSeries != null) {
+                    isVIPVideo = PPTVUtil.isVIPVideo(pptvSeries.getFree());
+                }
+            } else {
+                PPTVProgram program = pptvService.selectProgramById(vid);
+                if (program != null)
+                    isVIPVideo = PPTVUtil.isVIPVideo(program.getFree());
+            }
+
+            canBuy = pptvSeries.getGoodsInfo() != null && !StringUtil.isNullOrEmpty(pptvSeries.getGoodsInfo().getGoodsNo());
+            //鏄惁宸茬粡璐拱鍗曠墖
+            if (pptvSeries != null && canBuy) {
+                isBought = !StringUtil.isNullOrEmpty(redisManager.getCommonString(PPTVUtil.getBuyGoodsCacheKey(loginUid, pptvSeries.getGoodsInfo().getGoodsNo())));
+            }
+        }
+
+        if (!isBought)
+            isBought = videoBuyRecordService.isBought(loginUid, cid, vid, new Date());
+
+        //鑾峰彇鎾斁杩涘害
+        PPTVPlayProcessRecord record = new PPTVPlayProcessRecord();
+        record.setCid(cid);
+        record.setDetailSystemId(acceptData.getDetailSystem().getId());
+        record.setDeviceId(StringUtil.isNullOrEmpty(acceptData.getUtdId()) ? acceptData.getDevice() : acceptData.getUtdId());
+        String id = PPTVPlayProcessRecord.createId(record.getDetailSystemId(), record.getDeviceId(), cid);
+        record = pptvPlayProcessRecordService.selectByPrimaryKey(id);
 
 
-        return JsonUtil.loadTrueJson("");
+        net.sf.json.JSONObject data = new net.sf.json.JSONObject();
+        data.put("vipUser", vip);
+        data.put("vipVideo", isVIPVideo);
+        data.put("bought", isBought);
+        data.put("canBuy", canBuy);
+        data.put("showInterstitialAd", true);
+        data.put("showPreVideoAd", false);
+        if (pptvSeries != null)
+            data.put("title", pptvSeries.getName());
+        if (record != null) {
+            data.put("playPosition", record.getCurrentTime());
+        }
+        return JsonUtil.loadTrueJson(data.toString());
+    }
+
+
+    /**
+     * 鑾峰彇璁㈠崟鐨勮棰戜俊鎭�
+     *
+     * @param acceptData
+     * @return
+     */
+    @RequestMapping("getOrderVideoInfo")
+    @ResponseBody
+    public String getOrderVideoInfo(AcceptData acceptData, String loginUid, String cid, String vid) {
+        VideoBuyRecord record = videoBuyRecordService.getLatestRecord(loginUid, cid, vid);
+        if (record == null) {
+            return JsonUtil.loadFalseJson("璐拱璁板綍涓嶅瓨鍦�");
+        }
+        JumpDetail jumpDetail = new JumpDetail();
+        jumpDetail.setType(JumpTypeEnum.clazz);
+        jumpDetail.setActivity("com.weikou.beibeivideo.ui.media.VideoDetailActivity2");
+        net.sf.json.JSONObject params = new net.sf.json.JSONObject();
+        params.put("Id", PPTVUtil.getVisualVideoId(record.getCid(), record.getVid()));
+        params.put("from", "order");
+
+        net.sf.json.JSONObject data = new net.sf.json.JSONObject();
+        data.put("jumpDetail", new Gson().toJson(jumpDetail));
+        data.put("params", params);
+        return JsonUtil.loadTrueJson(data.toString());
     }
 
 

--
Gitblit v1.8.0