admin
2021-07-30 19533a17aa55fafc70d0a385928e785cb50e1ebc
src/main/java/com/yeshi/buwan/service/imp/HomeTypeService.java
@@ -66,11 +66,11 @@
                                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,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`="
                                            "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.special_data_key='"
                                                    + dataKey + "'  AND (" + resourceWhere
                                                    + " ) 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")
                                                    + " ) 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<>();
@@ -85,6 +85,8 @@
                                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] + "");
@@ -94,7 +96,7 @@
                                hv.setId(obj[8] + "");
                                hv.setPicture(obj[10] + "");
                                hv.setTag(obj[11] + "");
                                hv.setBigPicture(Boolean.parseBoolean(obj[24] + ""));
//                                hv.setBigPicture(Integer.parseInt(obj[24] + "") > 0);
                                VideoInfo video = new VideoInfo();
                                video.setId(obj[12] + "");
@@ -140,7 +142,7 @@
                                        //计算已有大图数量
                                        int bigCount = 0;
                                        for (HomeVideo hv1 : eHomeType.getHomeVideoList()) {
                                            if (hv.getBigPicture()) {
                                            if (hv1.getBigPicture()) {
                                                bigCount++;
                                            }
                                        }
@@ -201,6 +203,17 @@
        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>() {
            public int compare(HomeType o1, HomeType o2) {
@@ -208,6 +221,7 @@
            }
        });
    }
    private int index(List<HomeType> list, HomeType ht) {
        if (list == null)
@@ -275,11 +289,6 @@
        homeTypeDao.update(type);
    }
    public void updateHomeVideo(HomeVideo type) {
        homeVideoDao.update(type);
    }
    public List<DetailSystemSelect> getDetailSystemSelectByType(String homeType) {
        List<DetailSystemSelect> li = new ArrayList<>();
        List<DetailSystem> list = detailSystemDao
@@ -301,113 +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.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 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) {
        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);
@@ -604,7 +506,7 @@
                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";
            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);
    }