From 32d6c2ea8039b4771fd6b1ded8b022733e32352f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 03 四月 2021 18:56:57 +0800 Subject: [PATCH] 首页瀑布流 --- src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java | 191 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 156 insertions(+), 35 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 fdc6716..5970141 100644 --- a/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java +++ b/src/main/java/com/yeshi/buwan/controller/parser/ClassParser.java @@ -4,6 +4,8 @@ import com.yeshi.buwan.domain.ad.CommonAd; 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.dto.search.SolrResultDTO; @@ -11,12 +13,14 @@ 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.inter.recommend.HomeRecommendSpecialService; 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.factory.VideoInfoFactory; import com.yeshi.buwan.util.video.VideoConstant; import com.yeshi.buwan.vo.AcceptData; import com.yeshi.buwan.vo.HomeClassVO; @@ -70,6 +74,9 @@ @Resource private SearchService searchService; + @Resource + private HomeRecommendSpecialService homeRecommendSpecialService; + @RequireUid public void getClass(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); @@ -116,8 +123,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()); @@ -184,7 +197,7 @@ VideoType vt = new VideoType(Constant.VIDEO_TYPE_VIP); vt.setName("VIP"); vt.setShow("1"); - vt.setIcon("https://hbimg.huabanimg.com/12834704bb4aa39342c2fb51e0c644181b13997b70eb-CqlE1I_fw658/format/webp"); + vt.setIcon("https://hbimg.huabanimg.com/4690ea8f8144f3d46c11e417c77daa5debcb71f9201f-WpAbfw_fw658/format/jpg"); sty.setType(vt); boolean isC = false; for (SuperVideoType svt : list) { @@ -254,6 +267,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(); @@ -295,15 +346,27 @@ vo.setShowTitle(type.getShowTitle()); vo.setType(type.getType()); vo.setCategoryType(type.getCategoryType()); - - typelist.add(vo); + //鍒犻櫎鑰佺増鏈腑鐨勯櫎寮�鍒嗙被鐨勯《閮ㄦ爣绛� + if (sv.getType().getId() != 309L && sv.getType().getId() != 310L) + typelist.add(vo); } + //鑾峰彇棣栭〉鎺ㄨ崘鏍囩 + List<HomeRecommendSpecial> specialList = homeRecommendSpecialService.listSpecialByDetailSystemId(acceptData.getDetailSystem().getId(), null, 1, Constant.pageCount); + if (specialList != null) { + for (int i = specialList.size() - 1; i >= 0; i--) { + HomeRecommendSpecial special = specialList.get(i); + HomeClassVO vo = new HomeClassVO(); + vo.setId(Long.parseLong(special.getId())); + vo.setName(special.getName()); + 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); - HomeClassVO vo = new HomeClassVO(); - - vo.setDataType(HomeClassVO.DATA_TYPE_NOVEL); - vo.setName("灏忚"); - typelist.add(1, vo); + } + } JSONObject object = new JSONObject(); object.put("count", (new StringBuilder(String.valueOf(typelist.size()))).toString()); @@ -312,7 +375,6 @@ array.add(StringUtil.outPutResultJson(typelist.get(j))); object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); - } @@ -466,7 +528,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) { @@ -622,6 +684,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; @@ -681,43 +751,54 @@ list.remove(0); } - } else if ((Constant.VIDEO_TYPE_VIP + "").equalsIgnoreCase(parentId)) { + } else if (containsVIPType) { //VIP鍒嗙被 - VideoType type = new VideoType(Constant.VIDEO_TYPE_VIP); - type.setName("鍏ㄩ儴"); - type.setShow("1"); - type.setCategoryType("area"); - list.add(type); + + //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_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_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_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); @@ -786,11 +867,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()); + 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(); @@ -850,6 +953,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); @@ -861,8 +966,24 @@ 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()); + } + + List<VideoInfo> list = new ArrayList<>(); list.addAll(rankList); for (VideoInfo vi : list) {// 娓呴櫎鏃犵敤鏁版嵁,闃叉娴垂甯﹀,鏇存敼鍥剧墖 -- Gitblit v1.8.0