From 04f09e52ffd4681bdfd85e51acd3da0d1280c3d3 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 16 四月 2022 16:07:10 +0800
Subject: [PATCH] bug修复

---
 src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java |  234 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 176 insertions(+), 58 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 3754f39..8661693 100644
--- a/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java
+++ b/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java
@@ -5,16 +5,19 @@
 import com.yeshi.buwan.domain.ad.CommonAdPositionAd;
 import com.yeshi.buwan.domain.recommend.CategoryRecommendVideo;
 import com.yeshi.buwan.domain.recommend.HomeRecommendSpecial;
+import com.yeshi.buwan.domain.solr.SolrAlbumVideo;
 import com.yeshi.buwan.domain.special.Special;
 import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.domain.system.DetailSystemConfig;
 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.manager.search.SolrInternetSearchVideoDataManager;
+import com.yeshi.buwan.util.factory.VideoInfoFactory;
+import com.yeshi.buwan.videos.pptv.PPTVUtil;
 import com.yeshi.buwan.service.imp.*;
 import com.yeshi.buwan.service.imp.recommend.CategoryRecommendVideoService;
 import com.yeshi.buwan.service.inter.recommend.HomeRecommendSpecialService;
-import com.yeshi.buwan.service.manager.SolrAlbumVideoDataManager;
-import com.yeshi.buwan.service.manager.SolrCommonVideoDataManager;
+import com.yeshi.buwan.service.manager.search.SolrAlbumVideoDataManager;
 import com.yeshi.buwan.util.*;
 import com.yeshi.buwan.util.JuHe.VideoResourceUtil;
 import com.yeshi.buwan.util.ad.CommonAdUtil;
@@ -33,7 +36,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Set;
 
 @Controller
 public class ClassParser {
@@ -70,10 +72,31 @@
     private SolrAlbumVideoDataManager solrAlbumVideoDataManager;
 
     @Resource
+    private SolrInternetSearchVideoDataManager solrInternetSearchVideoDataManager;
+
+    @Resource
     private SearchService searchService;
 
     @Resource
     private HomeRecommendSpecialService homeRecommendSpecialService;
+
+    @Resource
+    private DetailSystemConfigService detailSystemConfigService;
+
+
+    private static String[] getAreas(String area) {
+        switch (area) {
+            case "娓彴":
+                return new String[]{"棣欐腐", "鍙版咕"};
+            case "鍏朵粬鍥藉":
+                return new String[]{"婢冲ぇ鍒╀簹", "鏂板姞鍧�", "鍗板害"};
+            case "娆ф床":
+                return new String[]{"鑻卞浗", "娉曞浗", "寰峰浗", "淇勭綏鏂�", "鎰忓ぇ鍒�", "鍦熻�冲叾"};
+            default:
+                return new String[]{area};
+        }
+    }
+
 
     @RequireUid
     public void getClass(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
@@ -121,8 +144,14 @@
             if (!StringUtil.isNullOrEmpty(list.get(i).getPicture())) {
                 list.get(i).getType().setIcon(list.get(i).getPicture());
             }
-            typeList.add(list.get(i).getType());
+            if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= Constant.IOS_ONLINING_VERSION) {
+                if (VideoConstant.isMainCategory(list.get(i).getType().getId())) {
+                    typeList.add(list.get(i).getType());
+                }
+            } else
+                typeList.add(list.get(i).getType());
         }
+
 
         JSONObject object = new JSONObject();
         object.put("count", (new StringBuilder(String.valueOf(typeList.size()))).toString());
@@ -158,48 +187,26 @@
         }
 
 
-        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(Constant.VIDEO_TYPE_ZHIBO);
-            vt.setName("缇庡コ鐩存挱");
-            vt.setShow("1");
-            vt.setCategoryType("http://m.v.6.cn/event/porkvideo?src=9n8wc5medm&nologo=1&t=2");
-            vt.setIcon("https://hbimg.huabanimg.com/12834704bb4aa39342c2fb51e0c644181b13997b70eb-CqlE1I_fw658/format/webp");
-            sty.setType(vt);
-            boolean isC = false;
-            for (SuperVideoType svt : list) {
-                if (svt.getType().getId() == vt.getId()) {
-                    isC = true;
-                    break;
-                }
-            }
-
-            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);
-        }
+//        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>();
@@ -259,6 +266,44 @@
             typelist.add(type);
         }
 
+        if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= Constant.IOS_ONLINING_VERSION) {
+            typelist = new ArrayList<>();
+            HomeClassVO vo = new HomeClassVO();
+            vo.setId(309L);
+            vo.setName("鎺ㄨ崘");
+            vo.setShowTitle("鎺ㄨ崘");
+            vo.setDataType(HomeClassVO.DATA_TYPE_RECOMMEND);
+            typelist.add(vo);
+
+            vo = new HomeClassVO();
+            vo.setId(VideoConstant.VIDEO_CATEGORY_DIANYING);
+            vo.setName("鐢靛奖");
+            vo.setShowTitle("鐢靛奖");
+            vo.setDataType(HomeClassVO.DATA_TYPE_CLASS);
+            typelist.add(vo);
+
+            vo = new HomeClassVO();
+            vo.setId(VideoConstant.VIDEO_CATEGORY_DIANSHIJU);
+            vo.setName("鐢佃鍓�");
+            vo.setShowTitle("鐢佃鍓�");
+            vo.setDataType(HomeClassVO.DATA_TYPE_CLASS);
+            typelist.add(vo);
+
+            vo = new HomeClassVO();
+            vo.setId(VideoConstant.VIDEO_CATEGORY_DONGMAN);
+            vo.setName("鍔ㄦ极");
+            vo.setShowTitle("鍔ㄦ极");
+            vo.setDataType(HomeClassVO.DATA_TYPE_CLASS);
+            typelist.add(vo);
+
+            vo = new HomeClassVO();
+            vo.setId(VideoConstant.VIDEO_CATEGORY_ZONGYI);
+            vo.setName("缁艰壓");
+            vo.setShowTitle("缁艰壓");
+            vo.setDataType(HomeClassVO.DATA_TYPE_CLASS);
+            typelist.add(vo);
+        }
+
         JSONObject object = new JSONObject();
         object.put("count", (new StringBuilder(String.valueOf(typelist.size()))).toString());
         JSONArray array = new JSONArray();
@@ -304,6 +349,13 @@
             if (sv.getType().getId() != 309L && sv.getType().getId() != 310L)
                 typelist.add(vo);
         }
+
+        //IOS瀹℃牳鐗堟湰
+        DetailSystemConfig onLineVersion = detailSystemConfigService.getConfigByKey("ios_online_version", acceptData.getDetailSystem(), acceptData.getVersion());
+        if (onLineVersion != null && Integer.parseInt(onLineVersion.getValue()) <= acceptData.getVersion()) {
+            typelist.clear();
+        }
+
         //鑾峰彇棣栭〉鎺ㄨ崘鏍囩
         List<HomeRecommendSpecial> specialList = homeRecommendSpecialService.listSpecialByDetailSystemId(acceptData.getDetailSystem().getId(), null, 1, Constant.pageCount);
         if (specialList != null) {
@@ -315,6 +367,8 @@
                 vo.setShowTitle(special.getName());
                 vo.setDataKey(special.getDataKey());
                 vo.setDataType(HomeClassVO.DATA_TYPE_RECOMMEND);
+                if (vo.getName().contains("楂樻竻"))
+                    vo.setColor("#ff6600");
                 typelist.add(0, vo);
             }
         }
@@ -386,7 +440,7 @@
 
         DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
 
-        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(detailSystem, acceptData.getVersion());
+        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(detailSystem, acceptData.getVersion(), acceptData.getChannel());
         List<VideoInfo> list = starService.getStarVideo(detailSystem.getId(), starId, pageIndex,
                 CacheUtil.getMD5Long(resourceList));
 
@@ -448,7 +502,7 @@
         if (Utils.isTest(request, user, detailSystem.getId()))
             detailSystem = systemService.getDetailSystemById(40 + "");
 
-        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion());
+        List<Long> resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion(), acceptData.getChannel());
 
         String resourceMD5 = CacheUtil.getMD5Long(resourceList);
 
@@ -457,7 +511,7 @@
         VideoListResultVO vo = null;
 
         try {
-            vo = redisManager.getVideoList(key);
+             vo = redisManager.getVideoList(key);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -479,7 +533,7 @@
 
             } else if (!StringUtil.isNullOrEmpty(homeType)) {
 
-                list = new ArrayList<VideoInfo>();
+                list = new ArrayList<>();
                 List<HomeVideo> homeVideoList = homeTypeService.getVideoByTypes(homeType, pageIndex, detailSystem);
 
                 for (HomeVideo hv : homeVideoList) {
@@ -538,7 +592,7 @@
                                 break;
                             default:
                         }
-                        filter.setResourceIds(new String[]{PPTVUtil.RESOURCE_ID + ""});
+                        filter.setResourceIds(Arrays.asList(new String[]{PPTVUtil.RESOURCE_ID + ""}));
 
                         //鏇存柊鏃堕棿
                         if ("1".equalsIgnoreCase(order)) {
@@ -557,12 +611,37 @@
                         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)));
+                        //閫氳繃涓撹緫鎼滅储鏌ヨ
+                        List<String> rids = new ArrayList<>();
+                        for (Long rid : resourceList) {
+                            rids.add(rid + "");
+                        }
+
+                        SolrVideoSearchFilter filter = new SolrVideoSearchFilter();
+                        filter.setResourceIds(rids);
+                        filter.setVideoType((int) typeid);
+                        filter.setAreas(Arrays.asList(getAreas(country)));
+                        SolrResultDTO result = solrAlbumVideoDataManager.find(filter, pageIndex, 20);
+
+                        list = new ArrayList<>();
+                        for (Object av : result.getVideoList()) {
+                            list.add(VideoInfoFactory.create((SolrAlbumVideo) av));
+                        }
+                        count = result.getTotalCount() + "";
+
+                        if (pageIndex == 1 && result.getTotalCount() == 0) {
+
+                            solrInternetSearchVideoDataManager.find(filter,pageIndex,20);
+
+                        }
+
+
+//                        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 + "";
+//                        count = 1000 + "";
                     }
                 }
             }
@@ -818,11 +897,33 @@
         out.print(JsonUtil.loadTrueJson(object.toString()));
     }
 
+    @Resource
+    private VideoResourceService videoResourceService;
+
     @RequireUid
     public void getSpecialDetail(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
         String specialid = request.getParameter("Id");
         Special special = specialService.getSpecial(specialid);
         List<VideoInfo> list = specialService.getSpecialVideoList(specialid);
+        List<Long> availableResourceIds = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion(), acceptData.getChannel());
+        List<VideoInfo> tempList = new ArrayList<>();
+        for (VideoInfo videoInfo : list) {
+            List<VideoResource> resourceList = videoResourceService.getResourceByVideo(videoInfo);
+            List<Long> rids = new ArrayList<>();
+            for (VideoResource vr : resourceList) {
+                if (availableResourceIds.contains(Long.parseLong(vr.getId()))) {
+                    rids.add(Long.parseLong(vr.getId()));
+                    break;
+                }
+            }
+            if (rids.size() > 0) {
+                tempList.add(videoInfo);
+            }
+        }
+
+        list = tempList;
+
+
         JSONObject object = new JSONObject();
         object.put("count", list.size());
         JSONArray array = new JSONArray();
@@ -895,8 +996,25 @@
     public void getRecommendCategoryVideoList(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
         String typeid = request.getParameter("Type");
         DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
-        List<VideoInfo> rankList = categoryRecommendCacheVideoService.getVideoListByRank(Integer.parseInt(typeid),
-                detailSystem.getId(), acceptData.getPlatform(), acceptData.getVersion());
+        List<VideoInfo> rankList = null;
+//        if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= Constant.IOS_ONLINING_VERSION) {
+//            SolrVideoSearchFilter filter = new SolrVideoSearchFilter();
+//            filter.setResourceIds(new String[]{25 + ""});
+//            filter.setVideoType(Integer.parseInt(typeid));
+//            filter.setFreeType(0);
+//            SolrResultDTO dto = solrAlbumVideoDataManager.find(filter, 1, 30);
+//            List<SolrAlbumVideo> list = dto.getVideoList();
+//            rankList = new ArrayList<>();
+//            for (SolrAlbumVideo video : list) {
+//                rankList.add(VideoInfoFactory.create(video));
+//            }
+//        }
+//        else {
+        rankList = categoryRecommendCacheVideoService.getVideoListByRank(Integer.parseInt(typeid),
+                detailSystem.getId(), acceptData.getPlatform(), acceptData.getVersion(), acceptData.getChannel());
+//        }
+
+
         List<VideoInfo> list = new ArrayList<>();
         list.addAll(rankList);
         for (VideoInfo vi : list) {// 娓呴櫎鏃犵敤鏁版嵁,闃叉娴垂甯﹀,鏇存敼鍥剧墖

--
Gitblit v1.8.0