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/service/imp/HomeTypeService.java |   93 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 86 insertions(+), 7 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 c2d4f95..c217896 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java
@@ -10,6 +10,7 @@
 import com.yeshi.buwan.domain.*;
 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;
@@ -49,8 +50,8 @@
     }
 
     @SuppressWarnings("unchecked")
-    @Cacheable(value = "homeCache", key = "'getHomeType'+'-'+#detailSystem+'-'+#cacheMd5+'-'+#maxNumber+'-'+#dataKey")
-    public List<HomeType> getHomeType(final String detailSystem, final List<Long> resourceIds, String cacheMd5,
+    @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 {
@@ -65,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,need_ad 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,big_picture 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.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.`orderby` DESC,v.orderby desc,v.updatetime desc")
+                                                    + " ) AND bv.`videoid` IS NULL ) GROUP BY (hv.`id`) ORDER BY  hv.big_picture desc, 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")
                                     .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();
@@ -84,6 +86,7 @@
                                 ht.setIosControl(obj[6] + "");
                                 ht.setNumber(Integer.parseInt(obj[7] + ""));
 
+
                                 ht.setOrderby(obj[21] + "");
                                 ht.setNeedAd(Boolean.parseBoolean(obj[23] + ""));
 
@@ -91,6 +94,7 @@
                                 hv.setId(obj[8] + "");
                                 hv.setPicture(obj[10] + "");
                                 hv.setTag(obj[11] + "");
+                                hv.setBigPicture(Boolean.parseBoolean(obj[24] + ""));
 
                                 VideoInfo video = new VideoInfo();
                                 video.setId(obj[12] + "");
@@ -132,10 +136,26 @@
                                     if (maxNumber > -1)// 鏍规嵁maxNumber鐨勬暟閲忔潵,閫傜敤浜庣綉椤�
                                         mn = maxNumber;
 
+                                    if (VersionUtil.isGraterThan390(platform, version)) {
+                                        //璁$畻宸叉湁澶у浘鏁伴噺
+                                        int bigCount = 0;
+                                        for (HomeVideo hv1 : eHomeType.getHomeVideoList()) {
+                                            if (hv.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<>();
@@ -152,6 +172,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();
@@ -315,7 +340,7 @@
     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",
+                "from HomeVideo h where h.type.id=? order by h.video.orderby desc,h.createtime desc",
                 (page - 1) * Constant.pageCount, Constant.pageCount, new String[]{homeId});
     }
 
@@ -323,6 +348,60 @@
         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 List<HomeVideo> getHomeVideoList(String homeId, List<Long> resourceIds, Boolean bigPicture, int page, int pageSize) {
+        List<HomeVideo> homeVideos = (List<HomeVideo>) homeVideoDao.excute(new HibernateCallback<List<HomeVideo>>() {
+            @Override
+            public List<HomeVideo> doInHibernate(Session session) throws HibernateException {
+
+                List<String> rids = new ArrayList<>();
+                for (Long rid : resourceIds) {
+                    rids.add("rv.`resourceid`=" + rid);
+                }
+
+                String sql = String.format("SELECT hv.* FROM wk_video_homevideo hv LEFT JOIN wk_resource_video rv ON rv.`videoid`=hv.`videoid` LEFT JOIN wk_video_video v ON v.`id`=hv.`videoid` WHERE v.show=1 and hv.`hometype`=%s AND (%s) ", homeId, org.yeshi.utils.StringUtil.concat(rids, " or "));
+
+                if (bigPicture != null) {
+                    sql += " and hv.big_picture=" + (bigPicture ? 1 : 0);
+                }
+                sql += "GROUP BY hv.id ORDER BY hv.big_picture desc,hv.`orderby` DESC,hv.`createtime` DESC";
+
+                return session.createSQLQuery(sql).addEntity(HomeVideo.class).setFirstResult((page - 1) * pageSize).setMaxResults(pageSize).list();
+            }
+        });
+
+        List<VideoInfo> videoInfoList = new ArrayList<>();
+        for (HomeVideo hv : homeVideos) {
+            if (hv.getVideo() != null)
+                videoInfoList.add(hv.getVideo());
+        }
+        videoInfoExtraService.batchExtra(videoInfoList, resourceIds);
+        return homeVideos;
+    }
+
+
+    public long getHomeVideoListCount(String homeId, List<Long> resourceIds, Boolean bigPicture) {
+        return (Long) homeVideoDao.excute(new HibernateCallback<Long>() {
+            @Override
+            public Long doInHibernate(Session session) throws HibernateException {
+
+                List<String> rids = new ArrayList<>();
+                for (Long rid : resourceIds) {
+                    rids.add("rv.`resourceid`=" + rid);
+                }
+
+                String sql = String.format("SELECT  count(distinct(hv.id)) FROM wk_video_homevideo hv LEFT JOIN wk_resource_video rv ON rv.`videoid`=hv.`videoid`  LEFT JOIN wk_video_video v ON v.`id`=hv.`videoid`  WHERE v.show=1 and hv.`hometype`=%s AND (%s)", homeId, org.yeshi.utils.StringUtil.concat(rids, " or "));
+
+                if (bigPicture != null) {
+                    sql += " and hv.big_picture=" + (bigPicture ? 1 : 0);
+
+                }
+
+                return Long.parseLong(session.createSQLQuery(sql).uniqueResult() + "");
+            }
+        });
     }
 
     public long getHomeVideoListCount(String homeId, String key) {
@@ -451,14 +530,14 @@
                         andList.add("sh.homeType.name like ?");
                         andList.add("sh.detailSystem.id=" + detailSystem);
                         if (dataKey != null) {
-                            andList.add("sh.homeType.specialDataKey='" + dataKey+"'");
+                            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+"'");
+                            andList.add("zb.specialDataKey='" + dataKey + "'");
                         }
                         sql = "from HomeType zb where " + org.yeshi.utils.StringUtil.concat(andList, " and ") + " order by zb.orderby desc";
                     }

--
Gitblit v1.8.0