From b37275dba6b782bf3bb3817c4504f6cdef1bef7c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 18 三月 2021 18:38:51 +0800
Subject: [PATCH] APP首页顶部标签兼容

---
 src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java |  193 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 160 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java b/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java
index 20f2dc7..d590cf0 100644
--- a/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java
+++ b/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java
@@ -5,12 +5,19 @@
 import com.yeshi.buwan.domain.ad.CommonAdPositionAd;
 import com.yeshi.buwan.domain.recommend.CategoryRecommendVideo;
 import com.yeshi.buwan.domain.special.Special;
+import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.dto.search.SolrResultDTO;
+import com.yeshi.buwan.dto.search.SolrVideoSearchFilter;
+import com.yeshi.buwan.pptv.PPTVUtil;
 import com.yeshi.buwan.service.imp.*;
 import com.yeshi.buwan.service.imp.recommend.CategoryRecommendVideoService;
+import com.yeshi.buwan.service.manager.SolrAlbumVideoDataManager;
+import com.yeshi.buwan.service.manager.SolrCommonVideoDataManager;
 import com.yeshi.buwan.util.*;
 import com.yeshi.buwan.util.JuHe.VideoResourceUtil;
 import com.yeshi.buwan.util.ad.CommonAdUtil;
 import com.yeshi.buwan.util.annotation.RequireUid;
+import com.yeshi.buwan.util.video.VideoConstant;
 import com.yeshi.buwan.vo.AcceptData;
 import com.yeshi.buwan.vo.HomeClassVO;
 import com.yeshi.buwan.vo.video.VideoListResultVO;
@@ -22,7 +29,9 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
 
 @Controller
 public class ClassParser {
@@ -55,6 +64,11 @@
 
     @Resource
     private RedisManager redisManager;
+    @Resource
+    private SolrAlbumVideoDataManager solrAlbumVideoDataManager;
+
+    @Resource
+    private SearchService searchService;
 
     @RequireUid
     public void getClass(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
@@ -138,22 +152,12 @@
             }
         }
 
-//        if (acceptData.getPlatform().equalsIgnoreCase("android")) {
-//            for (SuperVideoType type : list) {
-//                if (type.getType().getName().contains("璧勮")) {
-//                    type.getType().setName("涓绘挱");
-//                    type.getType().setId(1111);
-//                    type.getType().setIcon("http://img.zcool.cn/community/017fdb57610d8a0000012e7e74b496.png");
-//                    break;
-//                }
-//            }
-//        }
 
         if ("android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() > 53 && !"qq".equalsIgnoreCase(acceptData.getChannel())) {
             SuperVideoType sty = new SuperVideoType();
             sty.setCreatetime(0 + "");
             sty.setPicture("");
-            VideoType vt = new VideoType(22222);
+            VideoType vt = new VideoType(Constant.VIDEO_TYPE_ZHIBO);
             vt.setName("缇庡コ鐩存挱");
             vt.setShow("1");
             vt.setCategoryType("http://m.v.6.cn/event/porkvideo?src=9n8wc5medm&nologo=1&t=2");
@@ -170,6 +174,28 @@
             if (!isC)
                 list.add(sty);
         }
+
+        //Android骞冲彴3.8.7涔嬪悗杩斿洖VIP
+        if ("android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= 105) {
+
+            SuperVideoType sty = new SuperVideoType();
+            sty.setCreatetime(0 + "");
+            sty.setPicture("");
+            VideoType vt = new VideoType(Constant.VIDEO_TYPE_VIP);
+            vt.setName("VIP");
+            vt.setShow("1");
+            vt.setIcon("https://hbimg.huabanimg.com/4690ea8f8144f3d46c11e417c77daa5debcb71f9201f-WpAbfw_fw658/format/jpg");
+            sty.setType(vt);
+            boolean isC = false;
+            for (SuperVideoType svt : list) {
+                if (svt.getType().getId() == vt.getId()) {
+                    isC = true;
+                    break;
+                }
+            }
+            list.add(sty);
+        }
+
 
         List<VideoType> typelist = new ArrayList<VideoType>();
         for (SuperVideoType sv : list) {
@@ -194,7 +220,7 @@
     /**
      * 鑾峰彇褰撳墠绯荤粺鎵�鏈夊悗鍙拌棰戝垎绫�
      *
-     * @param uid
+     * @param acceptData
      * @param request
      * @param out
      */
@@ -273,6 +299,8 @@
             typelist.add(vo);
         }
 
+        typelist.get(0).setDataKey("recommend");
+
         HomeClassVO vo = new HomeClassVO();
 
         vo.setDataType(HomeClassVO.DATA_TYPE_NOVEL);
@@ -345,9 +373,9 @@
             return;
         }
 
-        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getPlatform(), acceptData.getVersion());
-
         DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
+
+        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(detailSystem, acceptData.getVersion());
         List<VideoInfo> list = starService.getStarVideo(detailSystem.getId(), starId, pageIndex,
                 CacheUtil.getMD5Long(resourceList));
 
@@ -404,11 +432,12 @@
             return;
         }
 
-        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getPlatform(), acceptData.getVersion());
-        DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
+        DetailSystem detailSystem = acceptData.getDetailSystem();
         UserInfo user = userService.getUserInfo(acceptData.getUid());
         if (Utils.isTest(request, user, detailSystem.getId()))
             detailSystem = systemService.getDetailSystemById(40 + "");
+
+        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion());
 
         String resourceMD5 = CacheUtil.getMD5Long(resourceList);
 
@@ -454,6 +483,7 @@
                         .toString();
             } else if (!StringUtil.isNullOrEmpty(videoType)) {
                 if (StringUtil.isNullOrEmpty(categoryType) || "genre".equalsIgnoreCase(categoryType)) {// 鎸夊垎绫绘绱㈡暟鎹�
+
                     if (!StringUtil.isNullOrEmpty(order)) {
                         Long startTime = System.currentTimeMillis();
                         List<VideoInfo> list1 = classService.getTypeVideoList(videoType, detailSystem, pageIndex, 20,
@@ -473,19 +503,56 @@
                                 list.add(info);
                     }
                     count = 1200 + "";
+
+
                 } else {// 鎸夊湴鍖烘绱㈡暟鎹�
-                    String areaId = videoType;// 鍥界睄ID
-                    CategoryContry cc = categoryAreaService.getCategoryArea(areaId);
-                    String country = cc.getName();
-                    long typeid = cc.getParent().getCid();
-                    if (StringUtil.isNullOrEmpty(order))
-                        order = 1 + "";
-                    list = categoryAreaService.getVideoInfoByArea(typeid + "", detailSystem, pageIndex, 20,
-                            Integer.parseInt(order), resourceList, country,
-                            StringUtil.Md5(typeid + "-" + detailSystem + "-" + pageIndex + "-" + order + "-" + country
-                                    + "-" + CacheUtil.getMD5Long(resourceList)));
-                    System.out.println("鍒楄〃鏈�缁堟暟閲�:" + list.size());
-                    count = 1000 + "";
+                    //闈濾IP鍒嗙被
+                    List<Integer> vipTypes = Arrays.asList(Constant.vipTypes);
+                    if (vipTypes.contains(Integer.parseInt(videoType))) {
+                        //VIP鍒嗙被
+                        SolrVideoSearchFilter filter = new SolrVideoSearchFilter();
+                        filter.setFreeType(1);
+                        switch (Integer.parseInt(videoType)) {
+                            case Constant.VIDEO_TYPE_VIP_MOVIE:
+                                filter.setVideoType(VideoConstant.VIDEO_CATEGORY_DIANYING);
+                                break;
+                            case Constant.VIDEO_TYPE_VIP_TV:
+                                filter.setVideoType(VideoConstant.VIDEO_CATEGORY_DIANSHIJU);
+                                break;
+                            case Constant.VIDEO_TYPE_VIP_CARTOON:
+                                filter.setVideoType(VideoConstant.VIDEO_CATEGORY_DONGMAN);
+                                break;
+                            case Constant.VIDEO_TYPE_VIP_SHOW:
+                                filter.setVideoType(VideoConstant.VIDEO_CATEGORY_ZONGYI);
+                                break;
+                            default:
+                        }
+                        filter.setResourceIds(new String[]{PPTVUtil.RESOURCE_ID + ""});
+
+                        //鏇存柊鏃堕棿
+                        if ("1".equalsIgnoreCase(order)) {
+                            filter.setSortKey("updateTime");
+                        } else {
+                            //瑙傜湅娆℃暟
+                            filter.setSortKey("watchcount");
+                        }
+                        SolrResultDTO resultDTO = solrAlbumVideoDataManager.find(filter, pageIndex, 20);
+                        count = resultDTO.getTotalCount() + "";
+                        list = searchService.convertSolrAlbumResultToVideo(resultDTO.getVideoList(), resourceList);
+                    } else {
+                        String areaId = videoType;// 鍥界睄ID
+                        CategoryContry cc = categoryAreaService.getCategoryArea(areaId);
+                        String country = cc.getName();
+                        long typeid = cc.getParent().getCid();
+                        if (StringUtil.isNullOrEmpty(order))
+                            order = 1 + "";
+                        list = categoryAreaService.getVideoInfoByArea(typeid + "", detailSystem, pageIndex, 20,
+                                Integer.parseInt(order), resourceList, country,
+                                StringUtil.Md5(typeid + "-" + detailSystem + "-" + pageIndex + "-" + order + "-" + country
+                                        + "-" + CacheUtil.getMD5Long(resourceList)));
+                        System.out.println("鍒楄〃鏈�缁堟暟閲�:" + list.size());
+                        count = 1000 + "";
+                    }
                 }
             }
             list = banQuanService.getBanQuanVideo(list, detailSystem.getId(), CacheUtil.getMD5VideoInfo(list));
@@ -557,6 +624,14 @@
 
         String parentId = request.getParameter("ParentId");
 
+        //鏄惁鍖呭惈VIP鐨勫垎绫�
+        boolean containsVIPType = false;
+        try {
+            List<Integer> vipTypeList = Arrays.asList(Constant.vipTypes);
+            containsVIPType = vipTypeList.contains(Integer.parseInt(parentId));
+        } catch (Exception e) {
+
+        }
         if (StringUtil.isNullOrEmpty(parentId)) {
             out.print(JsonUtil.loadFalseJson("璇蜂笂浼燩arentId"));
             return;
@@ -612,9 +687,58 @@
                 list.add(vt);
             }
 
+            if (acceptData.getVersion() > 60) { // 20170915鍒犻櫎鎺ㄨ崘
+                list.remove(0);
+            }
+
+        } else if (containsVIPType) {
+            //VIP鍒嗙被
+
+            //VIP鏍瑰垎绫�
+            if (Constant.VIDEO_TYPE_VIP == Integer.parseInt(parentId)) {
+                VideoType type = new VideoType(Constant.VIDEO_TYPE_VIP);
+                type.setName("鍏ㄩ儴");
+                type.setShow("1");
+                type.setCategoryType("area");
+                list.add(type);
+
+
+                type = new VideoType(Constant.VIDEO_TYPE_VIP_MOVIE);
+                type.setName("鐢靛奖");
+                type.setShow("1");
+                type.setCategoryType("area");
+                list.add(type);
+
+                type = new VideoType(Constant.VIDEO_TYPE_VIP_TV);
+                type.setName("鐢佃鍓�");
+                type.setShow("1");
+                type.setCategoryType("area");
+                list.add(type);
+
+
+                type = new VideoType(Constant.VIDEO_TYPE_VIP_CARTOON);
+                type.setName("鍔ㄦ极");
+                type.setShow("1");
+                type.setCategoryType("area");
+                list.add(type);
+
+//            type = new VideoType(Constant.VIDEO_TYPE_VIP_SHOW);
+//            type.setName("缁艰壓");
+//            type.setShow("1");
+//            type.setCategoryType("area");
+//            list.add(type);
+            } else {
+                VideoType type = new VideoType(Integer.parseInt(parentId));
+                type.setName("鍏ㄩ儴");
+                type.setShow("1");
+                type.setCategoryType("area");
+                list.add(type);
+            }
+
+
         } else {
             List<VideoType> clist = classService.getFirstTypeList(parentId);
-            list = new ArrayList<VideoType>();
+            list = new ArrayList<>();
             if (clist != null)
                 for (VideoType vt : clist)
                     list.add(vt);
@@ -627,13 +751,14 @@
             type.setShow("1");
             type.setCategoryType("genre");
             list.add(0, type);
+            if (acceptData.getVersion() > 60) { // 20170915鍒犻櫎鎺ㄨ崘
+                list.remove(0);
+            }
         }
         for (int i = 0; i < list.size(); i++) {
             array.add(StringUtil.outPutResultJson(list.get(i)));
         }
-        if (acceptData.getVersion() > 60) { // 20170915鍒犻櫎鎺ㄨ崘
-            array.remove(0);
-        }
+
         object.put("count", array.size());
         object.put("data", array);
         out.print(JsonUtil.loadTrueJson(object.toString()));
@@ -746,6 +871,8 @@
             if ("310".equals(typeid)) { // 310鍋氱殑鐗规畩澶勭悊:鍓嶇澶勭悊鐨勬槸HomeAd锛屾墍鏈夐渶瑕佽繑鍥瀐omeAD鐨勫舰寮�
                 Object vi = json.get("VideoInfo");
                 json.put("Video", vi);
+                //璁剧疆banner鐨勬瘮渚�
+                object.put("bannerSizeRate", "0.56");
             }
             json.put("LinkType", "1");
             array.add(json);
@@ -759,7 +886,7 @@
         DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
         List<VideoInfo> rankList = categoryRecommendCacheVideoService.getVideoListByRank(Integer.parseInt(typeid),
                 detailSystem.getId(), acceptData.getPlatform(), acceptData.getVersion());
-        List<VideoInfo> list = new ArrayList<VideoInfo>();
+        List<VideoInfo> list = new ArrayList<>();
         list.addAll(rankList);
         for (VideoInfo vi : list) {// 娓呴櫎鏃犵敤鏁版嵁,闃叉娴垂甯﹀,鏇存敼鍥剧墖
             vi.setIntroduction("");

--
Gitblit v1.8.0