From 19533a17aa55fafc70d0a385928e785cb50e1ebc Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期五, 30 七月 2021 02:05:14 +0800 Subject: [PATCH] 爱奇艺视频更新 --- src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java | 213 +++++++++++++++++++++++++++-------------------------- 1 files changed, 108 insertions(+), 105 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java b/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java index 3001d79..7d9bae7 100644 --- a/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java +++ b/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java @@ -6,8 +6,11 @@ import javax.annotation.Resource; import com.yeshi.buwan.dao.*; +import com.yeshi.buwan.dao.system.DetailSystemDao; import com.yeshi.buwan.domain.*; -import com.yeshi.buwan.service.inter.VideoResourceMapExtraInfoService; +import com.yeshi.buwan.domain.system.DetailSystem; +import com.yeshi.buwan.service.inter.video.VideoInfoExtraService; +import com.yeshi.buwan.util.VersionUtil; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.cache.annotation.Cacheable; @@ -33,7 +36,7 @@ private DetailSystemDao detailSystemDao; @Resource - private VideoResourceMapExtraInfoService videoResourceMapExtraInfoService; + private VideoInfoExtraService videoInfoExtraService; public List<HomeType> getHomeTypeDetailList() { List<HomeType> list = homeTypeDao.list("from HomeType h order by h.orderby desc"); @@ -41,15 +44,15 @@ return getHomeType(list); } - public List<HomeType> getHomeTypeList(String systemId){ - List<HomeType> list = homeTypeDao.list("from HomeType h where h.system.id=? order by h.orderby desc",systemId); + public List<HomeType> getHomeTypeList(String systemId) { + List<HomeType> list = homeTypeDao.list("from HomeType h where h.system.id=? order by h.orderby desc", systemId); return list; } @SuppressWarnings("unchecked") - @Cacheable(value = "homeCache", key = "'getHomeType'+'-'+#detailSystem+'-'+#cacheMd5+'-'+#maxNumber+'-'+#vtid") - public List<HomeType> getHomeType(final String detailSystem, final List<Long> resourceIds, String cacheMd5, - final int maxNumber, final long vtid) { + @Cacheable(value = "homeCache", key = "'getHomeType'+'-'+#detailSystem+'-'+#version+'-'+#cacheMd5+'-'+#maxNumber+'-'+#dataKey") + public List<HomeType> getHomeType(final String detailSystem, final String platform, final int version, final List<Long> resourceIds, String cacheMd5, + final int maxNumber, final String dataKey) { List<HomeType> homeTypeList = (List<HomeType>) homeTypeDao.excute(new HibernateCallback<List<HomeType>>() { public List<HomeType> doInHibernate(Session session) throws HibernateException { @@ -63,13 +66,14 @@ resourceWhere = resourceWhere.substring(0, resourceWhere.length() - 2); List resultList = session .createSQLQuery( - "SELECT ht.`id` as htid,ht.`name` as htname,ht.`columns` as htcolumns ,ht.`hasmore`,ht.`activity` ,ht.`params` ,ht.`ioscontrol`,ht.number,hvideo.id as hvid,hvideo.`videoid` AS hvvideoid,hvideo.`picture`as hvpicture ,hvideo.`tag` as hvtag, v.`id` as vid ,v.`picture` as vpicture ,v.`name` as vname ,v.`tag` as vtag ,v.`hpicture` as vhpicture ,v.`latest_hpicture` as vlatest_hpicture ,v.`watchcount` as vwatchcount,v.commentcount,ht.icon as hicon,ht.orderby as htorder,hvideo.orderby as hvorder FROM (SELECT hv.* FROM `wk_resource_video` rv LEFT JOIN `wk_video_homevideo` hv ON rv.`videoid` =hv.`videoid` LEFT JOIN `wk_video_video` v ON v.`id` =hv.`videoid` LEFT JOIN `wk_video_banquan_video` bv ON bv.`videoid`=hv.`videoid` AND bv.`detailsystemid`=" + "SELECT ht.`id` as htid,ht.`name` as htname,ht.`columns` as htcolumns ,ht.`hasmore`,ht.`activity` ,ht.`params` ,ht.`ioscontrol`,ht.number,hvideo.id as hvid,hvideo.`videoid` AS hvvideoid,hvideo.`picture`as hvpicture ,hvideo.`tag` as hvtag, v.`id` as vid ,v.`picture` as vpicture ,v.`name` as vname ,v.`tag` as vtag ,v.`hpicture` as vhpicture ,v.`latest_hpicture` as vlatest_hpicture ,v.`watchcount` as vwatchcount,v.commentcount,ht.icon as hicon,ht.orderby as htorder,hvideo.orderby as hvorder,need_ad,hvideo.big_picture,refresh_position,more_tag FROM (SELECT hv.* FROM `wk_resource_video` rv LEFT JOIN `wk_video_homevideo` hv ON rv.`videoid` =hv.`videoid` LEFT JOIN `wk_video_video` v ON v.`id` =hv.`videoid` LEFT JOIN `wk_video_banquan_video` bv ON bv.`videoid`=hv.`videoid` AND bv.`detailsystemid`=" + detailSystem - + " AND bv.`show`=1 LEFT JOIN `wk_video_hometype` ht ON ht.id=hv.hometype WHERE (hv.`id`>0 AND v.`show` =1 AND ht.vtid='" - + vtid + "' AND (" + resourceWhere - + " ) AND bv.`videoid` IS NULL ) GROUP BY (hv.`id`) ORDER BY hv.`orderby` desc,v.createtime DESC ) hvideo LEFT JOIN `wk_video_super_hometype` sht ON sht.`hometypeid`=hvideo.hometype LEFT JOIN `wk_video_hometype` ht ON sht.`hometypeid` =ht.`id` LEFT JOIN wk_video_video v ON v.`id`=hvideo.videoid WHERE sht.`detailsystemid` =" + detailSystem + " ORDER BY hvideo.`orderby` DESC,v.orderby desc,v.updatetime desc") + + " AND bv.`show`=1 LEFT JOIN `wk_video_hometype` ht ON ht.id=hv.hometype WHERE (hv.`id`>0 AND v.`show` =1 AND ht.special_data_key='" + + dataKey + "' AND (" + resourceWhere + + " ) AND bv.`videoid` IS NULL ) GROUP BY (hv.`id`) ORDER BY hv.`orderby` desc,v.createtime DESC ) hvideo LEFT JOIN `wk_video_super_hometype` sht ON sht.`hometypeid`=hvideo.hometype LEFT JOIN `wk_video_hometype` ht ON sht.`hometypeid` =ht.`id` LEFT JOIN wk_video_video v ON v.`id`=hvideo.videoid WHERE sht.`detailsystemid` =" + detailSystem + " ORDER BY hvideo.big_picture desc, hvideo.`orderby` DESC,v.orderby desc,v.updatetime desc") .list(); List<HomeType> homeTypeList = new ArrayList<>(); + Map<String, Integer> homeTypeVideoCountMap = new HashMap<>(); for (int i = 0; i < resultList.size(); i++) { Object[] obj = (Object[]) resultList.get(i); HomeType ht = new HomeType(); @@ -81,13 +85,18 @@ ht.setParams(obj[5] + ""); ht.setIosControl(obj[6] + ""); ht.setNumber(Integer.parseInt(obj[7] + "")); + ht.setRefreshPosition(Integer.parseInt(obj[25] + "")); + ht.setMoreTag(obj[26] + ""); + ht.setOrderby(obj[21] + ""); + ht.setNeedAd(Boolean.parseBoolean(obj[23] + "")); HomeVideo hv = new HomeVideo(); hv.setId(obj[8] + ""); hv.setPicture(obj[10] + ""); hv.setTag(obj[11] + ""); +// hv.setBigPicture(Integer.parseInt(obj[24] + "") > 0); VideoInfo video = new VideoInfo(); video.setId(obj[12] + ""); @@ -97,7 +106,7 @@ video.setHpicture(obj[16] + ""); video.setLatestHpicture(obj[17] + ""); video.setWatchCount(obj[18] + ""); - video.setCommentCount(Integer.parseInt(obj[19] + "")); + video.setCommentCount(obj[19] != null ? Integer.parseInt(obj[19] + "") : 0); ht.setIcon(obj[20] + ""); hv.setVideo(video); @@ -106,10 +115,15 @@ // hv.getVideo().getName()); // 鏇存敼鍥剧墖鏄剧ず - if (!StringUtil.isNullOrEmpty(hv.getVideo().getLatestHpicture())) - hv.getVideo().setPicture(hv.getVideo().getLatestHpicture()); - else - hv.getVideo().setPicture(hv.getVideo().getHpicture()); + //濡傛灉涓虹珫鐗� + if (ht.getColumns() == 2) { + if (!StringUtil.isNullOrEmpty(hv.getVideo().getLatestHpicture())) + hv.getVideo().setPicture(hv.getVideo().getLatestHpicture()); + else + hv.getVideo().setPicture(hv.getVideo().getHpicture()); + } else { +// hv.getVideo().setPicture(hv.getVideo().getVpicture()); + } if (StringUtil.isNullOrEmpty(hv.getPicture())) hv.setPicture(hv.getVideo().getPicture()); @@ -124,10 +138,26 @@ if (maxNumber > -1)// 鏍规嵁maxNumber鐨勬暟閲忔潵,閫傜敤浜庣綉椤� mn = maxNumber; + if (VersionUtil.isGraterThan390(platform, version)) { + //璁$畻宸叉湁澶у浘鏁伴噺 + int bigCount = 0; + for (HomeVideo hv1 : eHomeType.getHomeVideoList()) { + if (hv1.getBigPicture()) { + bigCount++; + } + } + mn += bigCount; + } + + if (homeTypeVideoCountMap.get(eHomeType.getId()) == null) { + homeTypeVideoCountMap.put(eHomeType.getId(), 0); + } + homeTypeVideoCountMap.put(eHomeType.getId(), homeTypeVideoCountMap.get(eHomeType.getId()) + 1); if (eHomeType.getHomeVideoList().size() < mn)// 鍔犲叆鎸囧畾鐨勬暟閲忕殑鏁版嵁 { eHomeType.getHomeVideoList().add(hv); } + } else { List<HomeVideo> videolist = new ArrayList<>(); @@ -144,6 +174,11 @@ // } orderByType(homeTypeList); + for (HomeType ht : homeTypeList) { + //璁剧疆鏁伴噺 + if (homeTypeVideoCountMap.containsKey(ht.getId())) + ht.setCount(homeTypeVideoCountMap.get(ht.getId())); + } return homeTypeList; } catch (Exception e) { e.printStackTrace(); @@ -155,30 +190,29 @@ } }); - List<String> videoIdList = new ArrayList<>(); + List<VideoInfo> videoInfoList = new ArrayList<>(); for (HomeType ht : homeTypeList) { if (ht.getHomeVideoList() != null) for (HomeVideo hv : ht.getHomeVideoList()) { if (hv.getVideo() != null) - videoIdList.add(hv.getVideo().getId()); + videoInfoList.add(hv.getVideo()); } } - Map<String, VideoResourceMapExtraInfo> videoMap = videoResourceMapExtraInfoService.listMap(videoIdList, resourceIds); - for (HomeType ht : homeTypeList) { - if (ht.getHomeVideoList() != null) - for (HomeVideo hv : ht.getHomeVideoList()) { - if (hv.getVideo() != null) { - hv.getVideo().setVideoResourceMapExtraInfo(videoMap.get(hv.getVideo().getId())); - if (hv.getVideo().getVideoResourceMapExtraInfo() != null) - hv.getVideo().setFree(hv.getVideo().getVideoResourceMapExtraInfo().getFree()); - } - } - } - - + videoInfoExtraService.batchExtra(videoInfoList, resourceIds); return homeTypeList; } + + @Cacheable(value = "homeCache", key = "'getHomeTypeList'+'-'+#detailSystem+'-'+#version+'-'+#dataKey+'-'+#page+'-'+#pageSize") + public List<HomeType> getHomeTypeList(String detailSystem, int version, String dataKey, int page, int pageSize) { + return homeTypeDao.list("select sht.homeType from SuperHomeType sht where sht.detailSystem.id=? and sht.homeType.specialDataKey=? order by sht.homeType.orderby DESC,sht.homeType.createtime DESC", (page - 1) * pageSize, pageSize, new Serializable[]{detailSystem, dataKey}); + } + + @Cacheable(value = "homeCache", key = "'countHomeType'+'-'+#detailSystem+'-'+#version+'-'+#dataKey") + public long countHomeType(String detailSystem, int version, String dataKey) { + return homeTypeDao.getCount("select count(*) from SuperHomeType sht where sht.detailSystem.id=? and sht.homeType.specialDataKey=?", new Serializable[]{detailSystem, dataKey}); + } + private void orderByType(List<HomeType> homeTypeList) { Collections.sort(homeTypeList, new Comparator<HomeType>() { @@ -187,6 +221,7 @@ } }); } + private int index(List<HomeType> list, HomeType ht) { if (list == null) @@ -236,7 +271,7 @@ for (HomeVideo sp : homeVideoList) session.delete(sp); - session.delete(session.get(HomeType.class,id)); + session.delete(session.get(HomeType.class, id)); session.flush(); session.getTransaction().commit(); } catch (Exception e) { @@ -252,11 +287,6 @@ public void updateHomeType(HomeType type) { homeTypeDao.update(type); - } - - public void updateHomeVideo(HomeVideo type) { - - homeVideoDao.update(type); } public List<DetailSystemSelect> getDetailSystemSelectByType(String homeType) { @@ -280,59 +310,6 @@ return li; } - public void addHomeTypeVideo(HomeVideo video) { - - long count = homeVideoDao.getCount("select count(*) from HomeVideo h where h.type.id=? and h.video.id=?", - new String[]{video.getType().getId(), video.getVideo().getId()}); - if (count <= 0L) - homeVideoDao.create(video); - } - - public void addHomeTypeVideo(List<HomeVideo> list) { - HomeVideo info; - for (Iterator<HomeVideo> iterator = list.iterator(); iterator.hasNext(); addHomeTypeVideo(info)) - info = (HomeVideo) iterator.next(); - } - - public void deleteHomeVideo(HomeVideo video) { - - homeVideoDao.delete(video); - } - - public void deleteHomeTypeVideo(List<HomeVideo> list) { - HomeVideo video; - for (Iterator<HomeVideo> iterator = list.iterator(); iterator.hasNext(); deleteHomeVideo(video)) - video = (HomeVideo) iterator.next(); - } - - public long getHomeVideoCount(String homeId) { - - return homeVideoDao.getCount("from HomeVideo h where h.type.id=?", new String[]{homeId}); - } - - public long getHomeTypeVideoPage(String homeId) { - long count = getHomeVideoCount(homeId); - return count % (long) Constant.pageCount != 0L ? count / (long) Constant.pageCount + 1L - : count / (long) Constant.pageCount; - } - - public List<HomeVideo> getHomeVideoList(String homeId, int page) { - - return homeVideoDao.list( - "from HomeVideo h where h.type.id=? order by h.video.orderby desc,h.video.watchCount desc,h.createtime desc", - (page - 1) * Constant.pageCount, Constant.pageCount, new String[]{homeId}); - } - - public List<HomeVideo> getHomeVideoList(String homeId, String key, int page) { - return homeVideoDao.list( - "from HomeVideo h where h.type.id=? and h.video.name like ? order by h.video.orderby desc,h.video.watchCount desc,h.createtime desc", - (page - 1) * Constant.pageCount, Constant.pageCount, new String[]{homeId, "%" + key + "%"}); - } - - public long getHomeVideoListCount(String homeId, String key) { - return homeVideoDao.getCount("select count(*) from HomeVideo h where h.type.id=? and h.video.name like ? ", - new String[]{homeId, "%" + key + "%"}); - } public Serializable addHomeType(HomeType type) { return homeTypeDao.save(type); @@ -442,7 +419,7 @@ */ @SuppressWarnings("unchecked") - public List<HomeTypeAdmin> getHomeTypeAdmin(final String key, final String systemId, final int detailSystem, final int page) { + public List<HomeTypeAdmin> getHomeTypeAdmin(final String key, final String systemId, final String dataKey, final int detailSystem, final int page) { return (List<HomeTypeAdmin>) homeTypeDao.excute(new HibernateCallback<List<HomeTypeAdmin>>() { public List<HomeTypeAdmin> doInHibernate(Session session) throws HibernateException { @@ -450,12 +427,22 @@ try { List<DetailSystem> detailSystemList = session.createQuery("from DetailSystem ds where ds.system.id=" + systemId).list(); String sql = ""; - if (detailSystem > 0) - sql = "select sh.homeType from SuperHomeType sh where sh.homeType.name like ? and sh.detailSystem.id=" - + detailSystem + " order by sh.homeType.orderby desc"; - else - sql = "from HomeType zb where zb.name like ? and zb.system.id=" + systemId + " order by zb.orderby desc"; - + List<String> andList = new ArrayList<>(); + if (detailSystem > 0) { + andList.add("sh.homeType.name like ?"); + andList.add("sh.detailSystem.id=" + detailSystem); + if (dataKey != null) { + andList.add("sh.homeType.specialDataKey='" + dataKey + "'"); + } + sql = "select sh.homeType from SuperHomeType sh where " + org.yeshi.utils.StringUtil.concat(andList, " and ") + " order by sh.homeType.orderby desc"; + } else { + andList.add("zb.name like ?"); + andList.add("zb.system.id=" + systemId); + if (dataKey != null) { + andList.add("zb.specialDataKey='" + dataKey + "'"); + } + sql = "from HomeType zb where " + org.yeshi.utils.StringUtil.concat(andList, " and ") + " order by zb.orderby desc"; + } List<HomeType> list = session.createQuery(sql).setParameter(0, "%" + key + "%") .setFirstResult((page - 1) * Constant.pageCount).setMaxResults(Constant.pageCount).list(); for (HomeType vb : list) { @@ -496,15 +483,31 @@ } - public long getHomeTypeAdminCount(String key, String systemId,int detailSystem) { - String sql = ""; - if (detailSystem > 0) - sql = "select count(*) from (select count(*) from wk_video_super_hometype zb left join wk_video_hometype c on c.id=zb.hometypeid where zb.detailsystemid=" - + detailSystem + " and c.name like '%" + key + "%' group by zb.hometypeid) s"; - else - sql = "select count(*) from (select count(*) from wk_video_super_hometype zb left join wk_video_hometype c on c.id=zb.hometypeid where c.name like '%" - + key + "%' and c.system="+systemId+" group by zb.hometypeid) s"; + public long getHomeTypeAdminCount(String key, String systemId, int detailSystem, final String dataKey) { + List<String> andList = new ArrayList<>(); + + String sql = ""; + if (detailSystem > 0) { + andList.add("zb.detailsystemid=" + detailSystem); + andList.add("c.name like '%" + key + "%'"); + if (dataKey != null) { + andList.add("c.special_data_key='" + dataKey + "'"); + } + + sql = "select count(*) from (select count(*) from wk_video_super_hometype zb left join wk_video_hometype c on c.id=zb.hometypeid where " + org.yeshi.utils.StringUtil.concat(andList, " and ") + " group by zb.hometypeid) s"; + + + } else { + + andList.add("c.name like '%" + key + "%'"); + andList.add("c.system=" + systemId); + if (dataKey != null) { + andList.add("c.special_data_key='" + dataKey + "'"); + } + + sql = "select count(*) from (select count(*) from wk_video_hometype c left join wk_video_super_hometype zb on c.id=zb.hometypeid where " + org.yeshi.utils.StringUtil.concat(andList, " and ") + " group by c.id) s"; + } return homeTypeDao.getCountSQL(sql); } -- Gitblit v1.8.0