From 2778cf2a16823f9b1153a0549b47f7b503176a17 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 12 九月 2020 18:04:43 +0800 Subject: [PATCH] 爱奇艺正片,搜索引擎 --- src/main/java/com/yeshi/buwan/service/imp/SearchService.java | 971 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 502 insertions(+), 469 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/service/imp/SearchService.java b/src/main/java/com/yeshi/buwan/service/imp/SearchService.java index c146fa9..876d12e 100644 --- a/src/main/java/com/yeshi/buwan/service/imp/SearchService.java +++ b/src/main/java/com/yeshi/buwan/service/imp/SearchService.java @@ -2,15 +2,17 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; +import java.util.*; import javax.annotation.Resource; +import com.yeshi.buwan.dao.video.AlbumVideoMapDao; +import com.yeshi.buwan.domain.*; +import com.yeshi.buwan.domain.video.AlbumVideoMap; +import com.yeshi.buwan.service.manager.SolrAlbumDataManager; +import com.yeshi.buwan.util.*; +import com.yeshi.buwan.util.factory.VideoInfoFactory; +import com.yeshi.buwan.util.video.VideoConstant; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.cache.annotation.Cacheable; @@ -23,550 +25,581 @@ import com.yeshi.buwan.dao.SuperHotSearchDao; import com.yeshi.buwan.dao.VideoBanQuanVideoDao; import com.yeshi.buwan.dao.VideoInfoDao; -import com.yeshi.buwan.domain.DetailSystem; -import com.yeshi.buwan.domain.HotSearch; -import com.yeshi.buwan.domain.SearchHistory; -import com.yeshi.buwan.domain.SuperHotSearch; -import com.yeshi.buwan.domain.UserInfo; -import com.yeshi.buwan.domain.VideoInfo; import com.yeshi.buwan.domain.web.DetailSystemSelect; import com.yeshi.buwan.domain.web.HotSearchAdmin; -import com.yeshi.buwan.util.BaiduVideoUtil; -import com.yeshi.buwan.util.BanQuanUtil; -import com.yeshi.buwan.util.Constant; -import com.yeshi.buwan.util.SolrUtil; -import com.yeshi.buwan.util.StringUtil; @Service public class SearchService { - @Resource - private SearchDao searchDao; - @Resource - private ClassService classService; - @Resource - private VideoInfoDao videoInfoDao; - @Resource - private HotSearchDao hotSearchDao; - @Resource - private SuperHotSearchDao superHotSearchDao; - @Resource - private ConfigService configService; - @Resource - private VideoBanQuanVideoDao videoBanQuanVideoDao; - @Resource - private DetailSystemDao detailSystemDao; + @Resource + private SearchDao searchDao; + @Resource + private ClassService classService; + @Resource + private VideoInfoDao videoInfoDao; + @Resource + private HotSearchDao hotSearchDao; + @Resource + private SuperHotSearchDao superHotSearchDao; + @Resource + private ConfigService configService; + @Resource + private VideoBanQuanVideoDao videoBanQuanVideoDao; + @Resource + private DetailSystemDao detailSystemDao; + @Resource + private AlbumVideoMapDao albumVideoMapDao; - public VideoBanQuanVideoDao getVideoBanQuanVideoDao() { - return videoBanQuanVideoDao; - } + @Resource + private SolrAlbumDataManager solrAlbumDataManager; - public void setVideoBanQuanVideoDao(VideoBanQuanVideoDao videoBanQuanVideoDao) { - this.videoBanQuanVideoDao = videoBanQuanVideoDao; - } + @SuppressWarnings("rawtypes") + @Cacheable(value = "userCache", key = "'suggestSearch'+'-'+#key+'-'+#system") + public List<String> suggestSearch(String key, String system) { + if (StringUtil.isNullOrEmpty(key) || key.startsWith("%")) + return new ArrayList<String>(); - public ConfigService getConfigService() { - return configService; - } + List<String> list; + Session session = null; + if (key != null && key.length() > 10) + key = key.substring(0, 10); + String sql = ""; + if (system.equalsIgnoreCase("1")) { + sql = "select name as result from wk_video_video where name like ?"; + } - public void setConfigService(ConfigService configService) { - this.configService = configService; - } + list = new ArrayList<String>(); - public SuperHotSearchDao getSuperHotSearchDao() { - return superHotSearchDao; - } + List li = null; + try { + li = videoInfoDao.sqlList(sql, + new String[]{(new StringBuilder(String.valueOf(key))).append("%").toString()}); + } catch (Exception e) { - public void setSuperHotSearchDao(SuperHotSearchDao superHotSearchDao) { - this.superHotSearchDao = superHotSearchDao; - } + } + if (li != null) { + for (int i = 0; i < li.size(); i++) { + Object objs = (Object) li.get(i); + list.add(objs.toString()); + } - public HotSearchDao getHotSearchDao() { - return hotSearchDao; - } + } - public void setHotSearchDao(HotSearchDao hotSearchDao) { - this.hotSearchDao = hotSearchDao; - } + Set<String> set = new TreeSet<String>(); + if (list != null) { + String st; + for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); set.add(st)) + st = (String) iterator.next(); - public VideoInfoDao getVideoInfoDao() { - return videoInfoDao; - } + } - public void setVideoInfoDao(VideoInfoDao videoInfoDao) { - this.videoInfoDao = videoInfoDao; - } + Iterator<String> it = set.iterator(); + list = new ArrayList<String>(); + while (it.hasNext()) { + list.add(it.next()); + if (list.size() > 10) + break; + } - public ClassService getClassService() { - return classService; - } + return list; + } - public void setClassService(ClassService classService) { - this.classService = classService; - } + @SuppressWarnings("unchecked") + public List<Serializable> search(String ip, String uid, String key, int page, int type, int videoType, + String system) { - public SearchDao getSearchDao() { - return searchDao; - } + SearchHistory sh = new SearchHistory(); + sh.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); + sh.setIp(ip); + sh.setKey(key); + UserInfo user = new UserInfo(); + user.setId(uid); + sh.setUser(user); + searchDao.create(sh); + // 鏌ヨ鏁版嵁搴� + String videoTypeList[] = classService.getChildrenType(videoType); + String typewhere = ""; + if (system.equalsIgnoreCase("2")) { + typewhere = " v.videoType.id=105 or v.videoType.id=106 or v.videoType.id=107 or v.videoType.id=108 "; + } else if (videoType > 0) { + for (int i = 0; i < videoTypeList.length; i++) + typewhere = (new StringBuilder(String.valueOf(typewhere))).append(" or v.videoType.id=") + .append(videoTypeList[i]).toString(); - public void setSearchDao(SearchDao searchDao) { - this.searchDao = searchDao; - } + if (typewhere.startsWith(" or")) + typewhere = typewhere.substring(3, typewhere.length()); + } - @SuppressWarnings("rawtypes") - @Cacheable(value = "userCache", key = "'suggestSearch'+'-'+#key+'-'+#system") - public List<String> suggestSearch(String key, String system) { - if (StringUtil.isNullOrEmpty(key) || key.startsWith("%")) - return new ArrayList<String>(); + String sql; + if (!StringUtil.isNullOrEmpty(typewhere))// 鏀逛负sql + sql = (new StringBuilder("from VideoInfo v where v.show='1' and (v.name like ?) and (")).append(typewhere) + .append(") order by REPLACE(v.name,?,'') ,v.watchCount desc").toString(); + else + sql = "from VideoInfo v where v.show='1' and (v.name like ?) order by REPLACE(v.name,?,''),v.watchCount desc";// 鏀逛负sql + List<Serializable> list = new ArrayList<Serializable>(); + BaiduVideoUtil util = new BaiduVideoUtil(); + List<VideoInfo> localList = videoInfoDao.list(sql, (page - 1) * Constant.pageCount, Constant.pageCount, + new String[]{(new StringBuilder("")).append(key).append("%").toString(), key}); + if (localList != null && localList.size() > 0) { + for (VideoInfo info : localList) { + list.add(info); + } + } - List<String> list; - Session session = null; - if (key != null && key.length() > 10) - key = key.substring(0, 10); - String sql = ""; - if (system.equalsIgnoreCase("1")) { - sql = "select name as result from wk_video_video where name like ?"; - } + // 鏌ヨ鏁版嵁搴撶粨鏉� - list = new ArrayList<String>(); + if (system.equalsIgnoreCase("1")) + if (page == 1) + try { + List<VideoInfo> fromNet = util.searchVideo(key); + if (fromNet != null && fromNet.size() > 0) { + for (int i = 0; i < fromNet.size(); i++) + if (videoType == 0) + list.add((VideoInfo) fromNet.get(i)); + else if (((VideoInfo) fromNet.get(i)).getVideoType().getId() == (long) videoType) + list.add((VideoInfo) fromNet.get(i)); - List li = null; - try { - li = videoInfoDao.sqlList(sql, - new String[] { (new StringBuilder(String.valueOf(key))).append("%").toString() }); - } catch (Exception e) { + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } - } - if (li != null) { - for (int i = 0; i < li.size(); i++) { - Object objs = (Object) li.get(i); - list.add(objs.toString()); - } + final List<Serializable> newList = list; + list = (List<Serializable>) searchDao.excute(new HibernateCallback<List<Serializable>>() { + public List<Serializable> doInHibernate(Session session) throws HibernateException { + return BanQuanUtil.filterShowVideo(newList, session); + } + }); + return list; + } - } + @Cacheable(value = "userCache", key = "'search'+'-'+#detailSystem+'-'+#key+'-'+#page+'-'+#contentType+'-'+#system+'-'+#cacheMD5") + public List<VideoInfo> search(String detailSystem, String ip, String uid, String key, int page, int contentType, + String system, List<Long> resourceList, String cacheMD5) { + String resourceWhere = ""; + for (Long re : resourceList) { + resourceWhere += " rv.resourceid=" + re + " or"; + } - Set<String> set = new TreeSet<String>(); - if (list != null) { - String st; - for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); set.add(st)) - st = (String) iterator.next(); + if (resourceWhere.endsWith("or")) + resourceWhere = resourceWhere.substring(0, resourceWhere.length() - 2); - } + SearchHistory sh = new SearchHistory(); + sh.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); + sh.setIp(ip); + if (!StringUtil.isNullOrEmpty(key) && key.length() > 30) + key = key.substring(0, 30); + sh.setKey(key); + UserInfo user = new UserInfo(); + user.setId(uid); + sh.setUser(user); - Iterator<String> it = set.iterator(); - list = new ArrayList<String>(); - while (it.hasNext()) { - list.add(it.next()); - if (list.size() > 10) - break; - } + searchDao.create(sh); + // 鏌ヨ鏁版嵁搴� - return list; - } + List<VideoInfo> list = new ArrayList<VideoInfo>(); + List<VideoInfo> localList = null; + try { + long startt = System.currentTimeMillis(); + localList = null; + if (contentType == 0) + localList = SolrUtil.search(key, page); + else if (contentType == 1) + localList = SolrUtil.searchZhengPian(key, page); + else + localList = SolrUtil.searchZhuanJi(key, page); + System.out.println("鎼滅储鑰楁椂:" + (System.currentTimeMillis() - startt)); - @SuppressWarnings("unchecked") - public List<Serializable> search(String ip, String uid, String key, int page, int type, int videoType, - String system) { + String sql = ""; + startt = System.currentTimeMillis(); + for (int i = 0; i < localList.size(); i++) { + sql += " select count(*) from wk_resource_video rv left join wk_video_video v on rv.videoid=v.id where v.id is not null and v.show=1 and rv.videoid=" + + localList.get(i).getId() + " and (" + resourceWhere + ") union all"; + } - SearchHistory sh = new SearchHistory(); - sh.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); - sh.setIp(ip); - sh.setKey(key); - UserInfo user = new UserInfo(); - user.setId(uid); - sh.setUser(user); - searchDao.create(sh); - // 鏌ヨ鏁版嵁搴� - String videoTypeList[] = classService.getChildrenType(videoType); - String typewhere = ""; - if (system.equalsIgnoreCase("2")) { - typewhere = " v.videoType.id=105 or v.videoType.id=106 or v.videoType.id=107 or v.videoType.id=108 "; - } else if (videoType > 0) { - for (int i = 0; i < videoTypeList.length; i++) - typewhere = (new StringBuilder(String.valueOf(typewhere))).append(" or v.videoType.id=") - .append(videoTypeList[i]).toString(); + if (sql.endsWith("union all")) + sql = sql.substring(0, sql.length() - 9); - if (typewhere.startsWith(" or")) - typewhere = typewhere.substring(3, typewhere.length()); - } + List rlist = videoInfoDao.sqlList(sql); + List<Integer> pList = new ArrayList<Integer>(); + for (int i = 0; i < localList.size(); i++) { + if (Integer.parseInt(rlist.get(i) + "") < 1) { + pList.add(i); + // localList.remove(i); + // i--; + } + } - String sql; - if (!StringUtil.isNullOrEmpty(typewhere))// 鏀逛负sql - sql = (new StringBuilder("from VideoInfo v where v.show='1' and (v.name like ?) and (")).append(typewhere) - .append(") order by REPLACE(v.name,?,'') ,v.watchCount desc").toString(); - else - sql = "from VideoInfo v where v.show='1' and (v.name like ?) order by REPLACE(v.name,?,''),v.watchCount desc";// 鏀逛负sql - List<Serializable> list = new ArrayList<Serializable>(); - BaiduVideoUtil util = new BaiduVideoUtil(); - List<VideoInfo> localList = videoInfoDao.list(sql, (page - 1) * Constant.pageCount, Constant.pageCount, - new String[] { (new StringBuilder("")).append(key).append("%").toString(), key }); - if (localList != null && localList.size() > 0) { - for (VideoInfo info : localList) { - list.add(info); - } - } + Collections.sort(pList); + for (int i = pList.size() - 1; i >= 0; i--) { + localList.remove((int) pList.get(i)); + } - // 鏌ヨ鏁版嵁搴撶粨鏉� + System.out.println("鎺掗櫎鑰楁椂:" + (System.currentTimeMillis() - startt)); - if (system.equalsIgnoreCase("1")) - if (page == 1) - try { - List<VideoInfo> fromNet = util.searchVideo(key); - if (fromNet != null && fromNet.size() > 0) { - for (int i = 0; i < fromNet.size(); i++) - if (videoType == 0) - list.add((VideoInfo) fromNet.get(i)); - else if (((VideoInfo) fromNet.get(i)).getVideoType().getId() == (long) videoType) - list.add((VideoInfo) fromNet.get(i)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + } + if (localList != null && localList.size() > 0) { + for (VideoInfo info : localList) { + list.add(info); + } + } + return list; + } - } - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - final List<Serializable> newList = list; - list = (List<Serializable>) searchDao.excute(new HibernateCallback<List<Serializable>>() { - public List<Serializable> doInHibernate(Session session) throws HibernateException { - return BanQuanUtil.filterShowVideo(newList, session); - } - }); - return list; - } + @Cacheable(value = "userCache", key = "'searchNew'+'-'+#detailSystem+'-'+#key+'-'+#page+'-'+#videoType+'-'+#system+'-'+#cacheMD5") + public List<VideoInfo> searchNew(String detailSystem, String ip, String uid, String key, int page, int videoType, + String system, List<Long> resourceList, String cacheMD5) { + String resourceWhere = ""; + for (Long re : resourceList) { + resourceWhere += " rv.resourceid=" + re + " or"; + } - @Cacheable(value = "userCache", key = "'search'+'-'+#detailSystem+'-'+#key+'-'+#page+'-'+#contentType+'-'+#system+'-'+#cacheMD5") - public List<VideoInfo> search(String detailSystem, String ip, String uid, String key, int page, int contentType, - String system, List<Long> resourceList, String cacheMD5) { - String resourceWhere = ""; - for (Long re : resourceList) { - resourceWhere += " rv.resourceid=" + re + " or"; - } + if (resourceWhere.endsWith("or")) + resourceWhere = resourceWhere.substring(0, resourceWhere.length() - 2); - if (resourceWhere.endsWith("or")) - resourceWhere = resourceWhere.substring(0, resourceWhere.length() - 2); + SearchHistory sh = new SearchHistory(); + sh.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); + sh.setIp(ip); + if (!StringUtil.isNullOrEmpty(key) && key.length() > 30) + key = key.substring(0, 30); + sh.setKey(key); + UserInfo user = new UserInfo(); + user.setId(uid); + sh.setUser(user); - SearchHistory sh = new SearchHistory(); - sh.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); - sh.setIp(ip); - if (!StringUtil.isNullOrEmpty(key) && key.length() > 30) - key = key.substring(0, 30); - sh.setKey(key); - UserInfo user = new UserInfo(); - user.setId(uid); - sh.setUser(user); + searchDao.create(sh); + // 鏌ヨ鏁版嵁搴� - searchDao.create(sh); - // 鏌ヨ鏁版嵁搴� + List<VideoInfo> list = new ArrayList<VideoInfo>(); + List<VideoInfo> localList = null; + try { + long startt = System.currentTimeMillis(); + localList = null; - List<VideoInfo> list = new ArrayList<VideoInfo>(); - List<VideoInfo> localList = null; - try { - // localList = session0 - // .createQuery(sql) - // .setParameter( - // 0, - // (new StringBuilder("")).append(key).append("%") - // .toString()).setParameter(1, key) - // .setFirstResult((page - 1) * Constant.pageCount) - // .setMaxResults(Constant.pageCount).list(); - long startt = System.currentTimeMillis(); - localList = null; + localList = new ArrayList<>(); + //鍏堟悳绱笓杈� + List<SolrVideo> solrVideoList = solrAlbumDataManager.findByKey(key, 1, videoType == 0 ? null : videoType, page); + Set<String> solrAlbumVids = new HashSet<>(); + for (SolrVideo sv : solrVideoList) { + VideoInfo video = VideoInfoFactory.create(sv); + video.setShowType(1); + if (!StringUtil.isNullOrEmpty(video.getMainActor())) { + video.setMainActor("涓绘紨锛�" + video.getMainActor()); + } - if (contentType == 0) - localList = SolrUtil.search(key, page); - else if (contentType == 1) - localList = SolrUtil.searchZhengPian(key, page); - else - localList = SolrUtil.searchZhuanJi(key, page); - System.out.println("鎼滅储鑰楁椂:" + (System.currentTimeMillis() - startt)); + //璁剧疆tag + String tag = ""; + if (!StringUtil.isNullOrEmpty(sv.getYear())) { + tag += sv.getYear() + "/"; + } - String sql = ""; - startt = System.currentTimeMillis(); - for (int i = 0; i < localList.size(); i++) { - sql += " select count(*) from wk_resource_video rv left join wk_video_video v on rv.videoid=v.id where v.id is not null and v.show=1 and rv.videoid=" - + localList.get(i).getId() + " and (" + resourceWhere + ") union all"; - } + if (video.getVideoType() != null) { + String vt = VideoConstant.getMainCategoryName(sv.getRootVideoType()); + if (!StringUtil.isNullOrEmpty(vt)) { + tag += vt + "/"; + } + } - if (sql.endsWith("union all")) - sql = sql.substring(0, sql.length() - 9); + if (!StringUtil.isNullOrEmpty(video.getArea())) { + tag += video.getArea() + "/"; + } - List rlist = videoInfoDao.sqlList(sql); - List<Integer> pList = new ArrayList<Integer>(); - for (int i = 0; i < localList.size(); i++) { - if (Integer.parseInt(rlist.get(i) + "") < 1) { - pList.add(i); - // localList.remove(i); - // i--; - } - } + if (tag.endsWith("/")) + tag = tag.substring(0, tag.length() - 1); + video.setTag(tag); + + localList.add(video); + solrAlbumVids.add(video.getId()); + } + + if (videoType == 0) { + //鎼滅储鍘熷鐨� + List<VideoInfo> solrList = SolrUtil.search(key, page); + for (VideoInfo vi : solrList) { + if (!solrAlbumVids.contains(vi.getId())) { + localList.add(vi); + } + } + } + System.out.println("鎼滅储鑰楁椂:" + (System.currentTimeMillis() - startt)); + + String sql = ""; + startt = System.currentTimeMillis(); + for (int i = 0; i < localList.size(); i++) { + sql += " select count(*) from wk_resource_video rv left join wk_video_video v on rv.videoid=v.id where v.id is not null and v.show=1 and rv.videoid=" + + localList.get(i).getId() + " and (" + resourceWhere + ") union all"; + } + + if (sql.endsWith("union all")) + sql = sql.substring(0, sql.length() - 9); + + List rlist = videoInfoDao.sqlList(sql); + List<Integer> pList = new ArrayList<Integer>(); + for (int i = 0; i < localList.size(); i++) { + if (Integer.parseInt(rlist.get(i) + "") < 1) { + pList.add(i); + // localList.remove(i); + // i--; + } + } - Collections.sort(pList); - for (int i = pList.size() - 1; i >= 0; i--) { - localList.remove((int) pList.get(i)); - } + Collections.sort(pList); + for (int i = pList.size() - 1; i >= 0; i--) { + localList.remove((int) pList.get(i)); + } - System.out.println("鎺掗櫎鑰楁椂:" + (System.currentTimeMillis() - startt)); + System.out.println("鎺掗櫎鑰楁椂:" + (System.currentTimeMillis() - startt)); - } catch (Exception e) { - e.printStackTrace(); - } finally { - } - if (localList != null && localList.size() > 0) { - for (VideoInfo info : localList) { - list.add(info); - } - } + } catch (Exception e) { + e.printStackTrace(); + } finally { + } + if (localList != null && localList.size() > 0) { + for (VideoInfo info : localList) { + list.add(info); + } + } - // 鏌ヨ鏁版嵁搴撶粨鏉� - // //Session session = HibernateSessionFactory.getSession(); - // try { - // - // // 鏆傛椂涓嶇敤鐗堟潈鏁版嵁搴� - // // list = BanQuanUtil.filterShowVideo(detailSystem, list, session); - // - // - // - // - // } catch (Exception e) { - // e.printStackTrace(); - // } finally { - // // session.close(); - // } - return list; - } + return list; + } - public long searchCount(String key, String system) { - String sql = ""; - if (system.equalsIgnoreCase("2")) { - sql = "select count(*) from VideoInfo v where v.show='1' and (v.name like ?) and (v.videoType.id=105 or v.videoType.id=106 or v.videoType.id=107 or v.videoType.id=108))"; - } else { - sql = "select count(*) from VideoInfo v where v.show='1' and (v.name like ?)"; - } + public long searchCount(String key, String system) { + String sql = ""; + if (system.equalsIgnoreCase("2")) { + sql = "select count(*) from VideoInfo v where v.show='1' and (v.name like ?) and (v.videoType.id=105 or v.videoType.id=106 or v.videoType.id=107 or v.videoType.id=108))"; + } else { + sql = "select count(*) from VideoInfo v where v.show='1' and (v.name like ?)"; + } - long count = videoInfoDao.getCount(sql, - new String[] { (new StringBuilder("")).append(key).append("%").toString() }); - return count; - } + long count = videoInfoDao.getCount(sql, + new String[]{(new StringBuilder("")).append(key).append("%").toString()}); + return count; + } - @SuppressWarnings({ "rawtypes" }) - @Cacheable(value = "userCache", key = "'getHotSearchList'+'-'+#system") - public List<String> getHotSearchList(String system) { - List<String> list = new ArrayList<String>(); - try { - List li = searchDao.sqlList( - "SELECT h.`name` FROM wk_video_super_hotsearch sh LEFT JOIN wk_video_hotsearch h ON sh.`hotsearchid`=h.`id` WHERE sh.`detailsystem`=? ORDER BY h.`orderby` DESC", - 0, Constant.HOT_SEARCH_COUNT, new Serializable[] { system }); - for (int i = 0; i < li.size(); i++) { - list.add(li.get(i) + ""); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { + @SuppressWarnings({"rawtypes"}) + @Cacheable(value = "userCache", key = "'getHotSearchList'+'-'+#system") + public List<String> getHotSearchList(String system) { + List<String> list = new ArrayList<String>(); + try { + List li = searchDao.sqlList( + "SELECT h.`name` FROM wk_video_super_hotsearch sh LEFT JOIN wk_video_hotsearch h ON sh.`hotsearchid`=h.`id` WHERE sh.`detailsystem`=? ORDER BY h.`orderby` DESC", + 0, Constant.HOT_SEARCH_COUNT, new Serializable[]{system}); + for (int i = 0; i < li.size(); i++) { + list.add(li.get(i) + ""); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { - } - return list; - } + } + return list; + } - public List<HotSearch> getHotSearchListByDS(String dsid) { - return hotSearchDao.list("from HotSearch hs where hs.system.id=" + dsid + " order by hs.orderby desc"); - } + public List<HotSearch> getHotSearchListByDS(String dsid) { + return hotSearchDao.list("from HotSearch hs where hs.system.id=" + dsid + " order by hs.orderby desc"); + } - public List<HotSearch> getHotSearchList() { - return hotSearchDao.list("from HotSearch"); - } + public List<HotSearch> getHotSearchList() { + return hotSearchDao.list("from HotSearch"); + } - /** - * 鐑棬鎼滅储 - */ + /** + * 鐑棬鎼滅储 + */ - public void addSuperHotSearch(SuperHotSearch sv) { - List<SuperHotSearch> list = superHotSearchDao.list("from SuperHotSearch sv where sv.hotSearch.id=" - + sv.getHotSearch().getId() + " and sv.detailSystem.id=" + sv.getDetailSystem().getId()); - if (list != null && list.size() > 0) - return; - superHotSearchDao.create(sv); - } + public void addSuperHotSearch(SuperHotSearch sv) { + List<SuperHotSearch> list = superHotSearchDao.list("from SuperHotSearch sv where sv.hotSearch.id=" + + sv.getHotSearch().getId() + " and sv.detailSystem.id=" + sv.getDetailSystem().getId()); + if (list != null && list.size() > 0) + return; + superHotSearchDao.create(sv); + } - public void updateSuperHotSearch(SuperHotSearch hotSearch) { - superHotSearchDao.update(hotSearch); - } + public void updateSuperHotSearch(SuperHotSearch hotSearch) { + superHotSearchDao.update(hotSearch); + } - public void deleteSuperHotSearch(SuperHotSearch hotSearch) { - superHotSearchDao.delete(hotSearch); - } + public void deleteSuperHotSearch(SuperHotSearch hotSearch) { + superHotSearchDao.delete(hotSearch); + } - @SuppressWarnings("unchecked") - public void updateSuperHotSearchList(final String detailSystemId, final List<SuperHotSearch> typeList) { - searchDao.excute(new HibernateCallback() { - public Object doInHibernate(Session session) throws HibernateException { - try { - List<SuperHotSearch> list = session - .createQuery("from SuperHotSearch sh where sh.detailSystem.id=" + detailSystemId).list(); - session.getTransaction().begin(); - for (SuperHotSearch ad : list) { - session.delete(ad); - } + @SuppressWarnings("unchecked") + public void updateSuperHotSearchList(final String detailSystemId, final List<SuperHotSearch> typeList) { + searchDao.excute(new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + try { + List<SuperHotSearch> list = session + .createQuery("from SuperHotSearch sh where sh.detailSystem.id=" + detailSystemId).list(); + session.getTransaction().begin(); + for (SuperHotSearch ad : list) { + session.delete(ad); + } - for (SuperHotSearch videoType : typeList) { - session.persist(videoType); - } - session.flush(); - session.getTransaction().commit(); - } catch (Exception e) { - e.printStackTrace(); - session.getTransaction().rollback(); - } + for (SuperHotSearch videoType : typeList) { + session.persist(videoType); + } + session.flush(); + session.getTransaction().commit(); + } catch (Exception e) { + e.printStackTrace(); + session.getTransaction().rollback(); + } - return null; - } - }); + return null; + } + }); - } + } - @SuppressWarnings("unchecked") - public List<HotSearchAdmin> getHotSearchAdmin(String key, int detailSystem, int page) { - List<HotSearchAdmin> zhiBoClassList = new ArrayList<HotSearchAdmin>(); - try { - List<DetailSystem> detailSystemList = detailSystemDao.list("from DetailSystem"); - String sql = ""; - if (detailSystem > 0) - sql = "select sh.hotSearch from SuperHotSearch sh where sh.hotSearch.name like ? and sh.detailSystem.id=" - + detailSystem + " order by sh.createtime desc"; - else - sql = "from HotSearch zb where zb.name like ? order by zb.createtime desc"; + @SuppressWarnings("unchecked") + public List<HotSearchAdmin> getHotSearchAdmin(String key, int detailSystem, int page) { + List<HotSearchAdmin> zhiBoClassList = new ArrayList<HotSearchAdmin>(); + try { + List<DetailSystem> detailSystemList = detailSystemDao.list("from DetailSystem"); + String sql = ""; + if (detailSystem > 0) + sql = "select sh.hotSearch from SuperHotSearch sh where sh.hotSearch.name like ? and sh.detailSystem.id=" + + detailSystem + " order by sh.createtime desc"; + else + sql = "from HotSearch zb where zb.name like ? order by zb.createtime desc"; - List<HotSearch> list = hotSearchDao.list(sql, (page - 1) * Constant.pageCount, Constant.pageCount, - new Serializable[] { "%" + key + "%" }); - for (HotSearch vb : list) { - List<DetailSystem> detailSystemS = detailSystemDao - .list("select vb.detailSystem from SuperHotSearch vb where vb.hotSearch.id=" + vb.getId()); + List<HotSearch> list = hotSearchDao.list(sql, (page - 1) * Constant.pageCount, Constant.pageCount, + new Serializable[]{"%" + key + "%"}); + for (HotSearch vb : list) { + List<DetailSystem> detailSystemS = detailSystemDao + .list("select vb.detailSystem from SuperHotSearch vb where vb.hotSearch.id=" + vb.getId()); - List<DetailSystemSelect> dssList = new ArrayList<DetailSystemSelect>(); + List<DetailSystemSelect> dssList = new ArrayList<DetailSystemSelect>(); - for (DetailSystem ds : detailSystemList) { - DetailSystemSelect dss = new DetailSystemSelect(); - dss.setDetailSystem(ds); - dss.setSelected(false); - dssList.add(dss); - } + for (DetailSystem ds : detailSystemList) { + DetailSystemSelect dss = new DetailSystemSelect(); + dss.setDetailSystem(ds); + dss.setSelected(false); + dssList.add(dss); + } - // 璁剧疆宸茬粡瀛樺湪鐨� - for (DetailSystem ds : detailSystemS) { - for (DetailSystemSelect dss : dssList) { - if (dss.getDetailSystem().getId().equalsIgnoreCase(ds.getId())) { - dss.setSelected(true); - break; - } - } - } - SuperHotSearch sz = new SuperHotSearch(); - sz.setDetailSystem(null); - sz.setHotSearch(vb); - zhiBoClassList.add(new HotSearchAdmin(sz, dssList)); - } + // 璁剧疆宸茬粡瀛樺湪鐨� + for (DetailSystem ds : detailSystemS) { + for (DetailSystemSelect dss : dssList) { + if (dss.getDetailSystem().getId().equalsIgnoreCase(ds.getId())) { + dss.setSelected(true); + break; + } + } + } + SuperHotSearch sz = new SuperHotSearch(); + sz.setDetailSystem(null); + sz.setHotSearch(vb); + zhiBoClassList.add(new HotSearchAdmin(sz, dssList)); + } - } catch (Exception e) { - e.printStackTrace(); - } - return zhiBoClassList; - } + } catch (Exception e) { + e.printStackTrace(); + } + return zhiBoClassList; + } - public long getHotSearchAdminCount(String key, int detailSystem) { - String sql = ""; - if (detailSystem > 0) - sql = "select count(*) from (select count(*) from wk_video_super_hotsearch zb left join wk_video_hotsearch c on c.id=zb.hotsearchid where zb.detailsystem=" - + detailSystem + " and c.name like '%" + key + "%' group by zb.hotsearchid) s"; - else - sql = "select count(*) from wk_video_hotsearch h where h.name like '%"+key+"%'"; + public long getHotSearchAdminCount(String key, int detailSystem) { + String sql = ""; + if (detailSystem > 0) + sql = "select count(*) from (select count(*) from wk_video_super_hotsearch zb left join wk_video_hotsearch c on c.id=zb.hotsearchid where zb.detailsystem=" + + detailSystem + " and c.name like '%" + key + "%' group by zb.hotsearchid) s"; + else + sql = "select count(*) from wk_video_hotsearch h where h.name like '%" + key + "%'"; - return videoBanQuanVideoDao.getCountSQL(sql); - } + return videoBanQuanVideoDao.getCountSQL(sql); + } - /** - * 娣诲姞鐑棬鎼滅储 - * - * @param search - */ - public void addHotSearch(HotSearch search) { - hotSearchDao.create(search); - } + /** + * 娣诲姞鐑棬鎼滅储 + * + * @param search + */ + public void addHotSearch(HotSearch search) { + hotSearchDao.create(search); + } - /** - * 淇敼鐑棬鎼滅储 - * - * @param search - */ - public void updateHotSearch(HotSearch search) { + /** + * 淇敼鐑棬鎼滅储 + * + * @param search + */ + public void updateHotSearch(HotSearch search) { - hotSearchDao.update(search); - } + hotSearchDao.update(search); + } - /** - * 鍒犻櫎鐑棬鎼滅储 - * - * @param search - */ - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void deleteHotSearch(final HotSearch search) { - searchDao.excute(new HibernateCallback() { - public Object doInHibernate(Session session) throws HibernateException { - try { - session.getTransaction().begin(); - List<SuperHotSearch> list = session.createQuery("from SuperHotSearch sv where sv.hotSearch.id=?") - .setParameter(0, search.getId()).list(); - for (SuperHotSearch sv : list) - session.delete(sv); - session.createSQLQuery("delete from wk_video_hotsearch where id=" + search.getId()) - .executeUpdate(); - session.flush(); - session.getTransaction().commit(); - } catch (Exception e) { - e.printStackTrace(); - session.getTransaction().rollback(); - } - return null; - } - }); + /** + * 鍒犻櫎鐑棬鎼滅储 + * + * @param search + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + public void deleteHotSearch(final HotSearch search) { + searchDao.excute(new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + try { + session.getTransaction().begin(); + List<SuperHotSearch> list = session.createQuery("from SuperHotSearch sv where sv.hotSearch.id=?") + .setParameter(0, search.getId()).list(); + for (SuperHotSearch sv : list) + session.delete(sv); + session.createSQLQuery("delete from wk_video_hotsearch where id=" + search.getId()) + .executeUpdate(); + session.flush(); + session.getTransaction().commit(); + } catch (Exception e) { + e.printStackTrace(); + session.getTransaction().rollback(); + } + return null; + } + }); - } + } - /** - * 鑾峰彇鐑棬鎼滅储 - * - * @param id - * @return - */ - public HotSearch getHotSearch(String id) { - List<HotSearch> list = hotSearchDao.getSession().createQuery("from HotSearch where id=?").setParameter(0, id) - .list(); - if (list != null && list.size() > 0) { - return list.get(0); - } - return null; - } + /** + * 鑾峰彇鐑棬鎼滅储 + * + * @param id + * @return + */ + public HotSearch getHotSearch(String id) { + List<HotSearch> list = hotSearchDao.getSession().createQuery("from HotSearch where id=?").setParameter(0, id) + .list(); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } - @SuppressWarnings("unchecked") - public void deleteHotSearchAdmin(final String classId, final String detailSystemId) { - searchDao.excute(new HibernateCallback() { - public Object doInHibernate(Session session) throws HibernateException { - try { + @SuppressWarnings("unchecked") + public void deleteHotSearchAdmin(final String classId, final String detailSystemId) { + searchDao.excute(new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + try { - List<SuperHotSearch> list = session - .createQuery("from SuperHotSearch vb where vb.hotSearch.id=? and vb.detailSystem.id=?") - .setParameter(0, classId).setParameter(1, detailSystemId).list(); - if (list != null && list.size() > 0) { - session.getTransaction().begin(); - for (SuperHotSearch vb : list) - session.delete(vb); - session.flush(); - session.getTransaction().commit(); - } + List<SuperHotSearch> list = session + .createQuery("from SuperHotSearch vb where vb.hotSearch.id=? and vb.detailSystem.id=?") + .setParameter(0, classId).setParameter(1, detailSystemId).list(); + if (list != null && list.size() > 0) { + session.getTransaction().begin(); + for (SuperHotSearch vb : list) + session.delete(vb); + session.flush(); + session.getTransaction().commit(); + } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - }); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + }); - } + } } -- Gitblit v1.8.0