From 1d28c69a351ae108f4116a10f19f615c89a660a2 Mon Sep 17 00:00:00 2001
From: admin <2780501319@qq.com>
Date: 星期四, 01 四月 2021 01:58:43 +0800
Subject: [PATCH] 首页数据修改

---
 src/main/java/com/yeshi/buwan/controller/parser/HomeParser.java |  201 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 185 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/controller/parser/HomeParser.java b/src/main/java/com/yeshi/buwan/controller/parser/HomeParser.java
index 4028002..878c360 100644
--- a/src/main/java/com/yeshi/buwan/controller/parser/HomeParser.java
+++ b/src/main/java/com/yeshi/buwan/controller/parser/HomeParser.java
@@ -12,18 +12,33 @@
 import com.yeshi.buwan.domain.*;
 import com.yeshi.buwan.domain.jump.JumpDetail;
 import com.yeshi.buwan.domain.jump.JumpTypeEnum;
+import com.yeshi.buwan.domain.recommend.HomeRecommendSpecial;
 import com.yeshi.buwan.domain.system.DetailSystemConfig;
 import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.domain.video.InternetSearchVideo;
 import com.yeshi.buwan.domain.video.VideoWatchHistory;
+import com.yeshi.buwan.dto.log.BaseLog;
+import com.yeshi.buwan.mogotv.MogoTVUtil;
 import com.yeshi.buwan.pptv.PPTVUtil;
 import com.yeshi.buwan.pptv.entity.PPTVSeries;
 import com.yeshi.buwan.service.imp.*;
+import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
 import com.yeshi.buwan.service.inter.juhe.PPTVService;
+import com.yeshi.buwan.service.inter.juhe.YouKuService;
+import com.yeshi.buwan.service.inter.recommend.HomeRecommendSpecialService;
 import com.yeshi.buwan.service.inter.video.VideoWatchHistoryService;
+import com.yeshi.buwan.tencent.TencentVideoUtil;
 import com.yeshi.buwan.util.*;
 import com.yeshi.buwan.util.annotation.RequireUid;
+import com.yeshi.buwan.util.factory.VideoInfoFactory;
+import com.yeshi.buwan.util.log.LoggerUtil;
+import com.yeshi.buwan.util.log.UserActiveLogFactory;
 import com.yeshi.buwan.util.log.VideoLogFactory;
 import com.yeshi.buwan.vo.AcceptData;
+import com.yeshi.buwan.vo.video.VideoDetailVO;
+import com.yeshi.buwan.youku.YouKuUtil;
+import com.yeshi.buwan.youku.entity.YouKuSearchVideoMap;
+import com.yeshi.buwan.youku.entity.YouKuShowDetail;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.methods.GetMethod;
@@ -41,6 +56,9 @@
 
 @Controller
 public class HomeParser {
+
+    private Logger logger = LoggerFactory.getLogger(HomeParser.class);
+
     @Resource
     private SystemService systemService;
     @Resource
@@ -83,17 +101,23 @@
     @Resource
     private VideoWatchHistoryService videoWatchHistoryService;
 
+    @Resource
+    private HomeRecommendSpecialService homeRecommendSpecialService;
+
     private final Logger userPlayLogger = LoggerFactory.getLogger("videoPlayUser");
 
     @RequireUid
     public void getHomeAd(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
         String vtid = request.getParameter("Vtid");
-        if (!"310".equals(vtid)) {
+        HomeRecommendSpecial special = homeRecommendSpecialService.getSpecial(vtid);
+        //鍏煎鏂扮増鏈�
+        if (special != null) {
+
             JSONObject object = new JSONObject();
 
             DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
 
-            List<HomeAd> list = homeAdService.getHomeAdList(detailSystem);
+            List<HomeAd> list = homeAdService.getHomeAdList(detailSystem, special != null ? special.getDataKey() : null);
 
             if (acceptData.getPlatform().equalsIgnoreCase("ios"))// IOS娴嬭瘯
             {
@@ -119,7 +143,6 @@
                 for (int i = 0; i < list.size(); i++)
                     array.add(StringUtil.outPutResultJson(list.get(i)));
                 object.put("data", array);
-
             } else {
                 for (HomeAd ad : list) {
                     if (ad.getVideo() != null) {
@@ -137,6 +160,7 @@
 
                 object.put("data", array);
             }
+            object.put("bannerSizeRate", special.getBannerSizeRate());
             out.print(JsonUtil.loadTrueJson(object.toString()));
         } else {
             classParser.getRecommendCategoryVideoBanner(acceptData, request, out);
@@ -156,12 +180,14 @@
             vtid = "309"; // 涓轰簡鍏煎浠ュ墠鐨勬帹鑽�
         }
 
+        HomeRecommendSpecial special = homeRecommendSpecialService.getSpecial(vtid);
+
         DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
         JSONObject object = new JSONObject();
 
         List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion());
-        List<HomeType> list1 = homeTypeService.getHomeType(detailSystem.getId(), resourceList,
-                CacheUtil.getMD5Long(resourceList), -1, Long.parseLong(vtid));
+        List<HomeType> list1 = homeTypeService.getHomeType(detailSystem.getId(), acceptData.getPlatform(), acceptData.getVersion(), resourceList,
+                CacheUtil.getMD5Long(resourceList), -1, special != null ? special.getDataKey() : null);
         List<HomeType> list = new ArrayList<>();
         for (HomeType ht : list1)
             list.add(ht);
@@ -201,7 +227,7 @@
                     if (adContent != null && adPosition != null) {
                         HomeType.HomeTypeAd ad = new Gson().fromJson(adContent.getValue(), HomeType.HomeTypeAd.class);
                         int adP = Integer.parseInt(adPosition.getValue());
-                        if (adP < list.size()) {
+                        if (adP < list.size() && adP > -1) {
                             HomeType homeType = new HomeType();
                             homeType.setAd(ad);
                             list.add(adP, homeType);
@@ -267,6 +293,57 @@
         type.setVideoList(vlist);
         return type;
     }
+
+
+    // 棣栭〉绫诲瀷鑾峰彇
+    public void getHomeVideoList(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+
+        // 20170914 涓�绾ц棰戝垎绫籌D
+        String homeTypeId = request.getParameter("Id");
+        int page = Integer.parseInt(request.getParameter("Page"));
+
+        if (StringUtil.isNullOrEmpty(homeTypeId)) {
+            out.print(JsonUtil.loadFalseJson(""));
+            return;
+        }
+
+        HomeType homeType = homeTypeService.getHomeTypeById(homeTypeId);
+        if (homeType == null) {
+            out.print(JsonUtil.loadFalseJson(""));
+            return;
+        }
+
+        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion());
+        //鏌ヨ澶у浘
+        List<HomeVideo> bigPictureVideos = homeTypeService.getHomeVideoList(homeTypeId, resourceList, true, page, homeType.getNumber());
+
+
+        //澶у浘闇�瑕佹瘡娆¢兘杩斿洖
+
+        JSONObject object = new JSONObject();
+
+        Long count = homeTypeService.getHomeVideoListCount(homeTypeId, resourceList, null);
+        List<HomeVideo> list1 = homeTypeService.getHomeVideoList(homeTypeId, resourceList, false, page, homeType.getNumber());
+        List<HomeVideo> list = new ArrayList<>();
+        list.addAll(bigPictureVideos);
+        list.addAll(list1);
+        JSONObject data = new JSONObject();
+        data.put("count", count);
+        JSONArray array = new JSONArray();
+        for (int i = 0; i < list.size(); i++)
+            array.add(StringUtil.outPutResultJson(list.get(i)));
+        object.put("list", array);
+
+        //鍒ゆ柇鏄惁杩樻湁涓嬩竴椤�
+        int totalPage = (int) ((count - bigPictureVideos.size()) % homeType.getNumber() == 0 ? (count - bigPictureVideos.size()) / homeType.getNumber() : (count - bigPictureVideos.size()) / homeType.getNumber() + 1);
+
+        if (page >= totalPage) {
+            page = 0;
+        }
+        data.put("page", page);
+        out.print(JsonUtil.loadTrueJson(object.toString()));
+    }
+
 
     @RequireUid
     public void getMoreVideo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
@@ -334,9 +411,81 @@
         out.print(JsonUtil.loadTrueJson(object.toString()));
     }
 
+
+    @Resource
+    private InternetSearchVideoService internetSearchVideoService;
+    @Resource
+    private YouKuUtil youKuUtil;
+
+    @Resource
+    private MogoTVUtil mogoTVUtil;
+
+    @Resource
+    private TencentVideoUtil tencentVideoUtil;
+
+
+    public void getVideoDetailForInternetSearch(AcceptData acceptData, String videoId, HttpServletRequest request, PrintWriter out) {
+        String loginUid = request.getParameter("LoginUid");
+        String from = request.getParameter("From");
+        InternetSearchVideo internetSearchVideo = internetSearchVideoService.selectByPrimaryKey(videoId);
+        String resourceId = request.getParameter("ResourceId");
+        if (StringUtil.isNullOrEmpty(resourceId)) {
+            resourceId = internetSearchVideo.getResourceIds().split(",")[0];
+        }
+        VideoInfo info = null;
+        if (Integer.parseInt(resourceId) == YouKuUtil.RESOURCE_ID) {
+            try {
+                info = youKuUtil.getVideoInfo(internetSearchVideo);
+
+            } catch (Exception e) {
+                logger.error("鍏ㄧ綉鎼滆棰戣鎯呭嚭閿欙細" + videoId);
+                e.printStackTrace();
+                out.print(JsonUtil.loadFalseAdmin(e.getMessage()));
+                return;
+            }
+
+        } else if (Integer.parseInt(resourceId) == MogoTVUtil.RESOURCE_ID) {
+            try {
+                info = mogoTVUtil.getVideoInfo(internetSearchVideo);
+            } catch (Exception e) {
+                logger.error("鍏ㄧ綉鎼滆棰戣鎯呭嚭閿欙細" + videoId);
+                out.print(JsonUtil.loadFalseAdmin(e.getMessage()));
+                return;
+            }
+        } else if (Integer.parseInt(resourceId) == TencentVideoUtil.RESOURCE_ID) {
+            try {
+                info = tencentVideoUtil.getVideoInfo(internetSearchVideo);
+            } catch (Exception e) {
+                logger.error("鍏ㄧ綉鎼滆棰戣鎯呭嚭閿欙細" + videoId);
+                out.print(JsonUtil.loadFalseAdmin(e.getMessage()));
+                return;
+            }
+        }
+
+        LoggerUtil.getUserActiveLogger().info(UserActiveLogFactory.createVideoDetail(new BaseLog(acceptData, loginUid), videoId, info.getName(), from));
+
+        info.setWatchCount("" + (int) (Math.random() * 1000));
+
+        JSONArray array = new JSONArray();
+        JSONObject obj = new JSONObject();
+
+        if (VersionUtil.isGraterThan390(acceptData.getPlatform(), acceptData.getVersion())) {
+            out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(new VideoDetailVO(Utils.convertVideo(info), new VideoDetailVO.VideoAdInfo(true, false), null)), array.toString(),
+                    obj.toString()));
+        } else {
+            out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(Utils.convertVideo(info)), array.toString(),
+                    obj.toString()));
+        }
+    }
+
     @RequireUid
     public void getVideoDetail(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
         String videoId = request.getParameter("VideoId");
+        if (!NumberUtil.isNumeric(videoId)) {
+            getVideoDetailForInternetSearch(acceptData, videoId, request, out);
+            return;
+        }
+
         String resourceId = request.getParameter("ResourceId");
         String thirdType = request.getParameter("Type");
         String loginUid = request.getParameter("LoginUid");
@@ -409,12 +558,14 @@
             data.put("name", series.getName());
             data.put("pptv", true);
             out.print(JsonUtil.loadTrueJson(data.toString()));
+            LoggerUtil.getUserActiveLogger().info(UserActiveLogFactory.createVideoDetail(new BaseLog(acceptData, loginUid), videoId, series.getName(), from));
             return;
         }
 
 
         VideoInfo info = videoDeailUtil.getVideoInfo(detailSystem.getId(), videoId, resourceId, resourceList,
                 CacheUtil.getMD5Long(resourceList));
+        LoggerUtil.getUserActiveLogger().info(UserActiveLogFactory.createVideoDetail(new BaseLog(acceptData, loginUid), videoId, info != null ? info.getName() : "", from));
 
         List<VideoType> typeList = classService.getVideoTypeList(info.getId());
         if (typeList != null && typeList.size() > 0) {
@@ -438,29 +589,41 @@
             info.setCommentCount((int) count);
 
         JSONObject obj = new JSONObject();
+        VideoDetailVO.AttentionInfo attention = null;
         if (info.getVideoDetailList() != null)
             if (info.getVideoDetailList().size() > 1) {// 澶氶泦,鍙叧娉�
                 boolean isAttention = false;
                 if (!StringUtil.isNullOrEmpty(loginUid)) {
                     isAttention = attentionService.isAddAttention(loginUid, info.getId());
                 }
+                attention = new VideoDetailVO.AttentionInfo();
+                attention.setName(info.getName());
+                attention.setPicture(info.getPicture());
+                if (StringUtil.isNullOrEmpty(info.getUpdatetime())) {
+                    attention.setUpdateInfo("鏇存柊:" + TimeUtil.getCommentTime(info.getCreatetime()));
+                } else {
+                    attention.setUpdateInfo("鏇存柊:" + TimeUtil.getCommentTime(Long.parseLong(info.getUpdatetime())));
+                }
+                attention.setAttention(isAttention);
+
+                //鍏煎鑰佺増鏈�
                 JSONObject attentionInfo = new JSONObject();
-                attentionInfo.put("Name", info.getName());
-                attentionInfo.put("Picture", info.getPicture());
-                if (StringUtil.isNullOrEmpty(info.getUpdatetime()))
-                    attentionInfo.put("UpdateInfo", "鏇存柊:" + TimeUtil.getCommentTime(info.getCreatetime()));
-                else
-                    attentionInfo.put("UpdateInfo", "鏇存柊:" + TimeUtil.getCommentTime(Long.parseLong(info.getUpdatetime())));
-                attentionInfo.put("IsAttention", isAttention);
+                attentionInfo.put("Picture", attention.getPicture());
+                attentionInfo.put("Name", attention.getName());
+                attentionInfo.put("UpdateInfo", attention.getUpdateInfo());
+                attentionInfo.put("IsAttention", attention.isAttention());
                 obj.put("Attention", attentionInfo);
             }
         UserInfo user = userService.getUserInfo(acceptData.getUid());
-        if (Utils.isTest(request, user, detailSystem.getId()))
-            out.print(JsonUtil.loadTrueJson(""));
-        else
+        if (VersionUtil.isGraterThan390(acceptData.getPlatform(), acceptData.getVersion())) {
+            out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(new VideoDetailVO(Utils.convertVideo(info), new VideoDetailVO.VideoAdInfo(true, true), attention)), array.toString(),
+                    obj.toString()));
+        } else {
             out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(Utils.convertVideo(info)), array.toString(),
                     obj.toString()));
+        }
     }
+
 
     /**
      * 鑾峰彇瑙嗛鐨勫墽闆嗗垪琛�
@@ -517,6 +680,12 @@
             return;
         }
 
+        if (!NumberUtil.isNumeric(detailId)) {
+            out.print(JsonUtil.loadFalseJson(""));
+            return;
+        }
+
+
         boolean collect = collectionService.isCollect(acceptData.getUid(), detailId, thirdType);
         if (collect)
             out.print(JsonUtil.loadTrueJson(""));

--
Gitblit v1.8.0