admin
2019-03-15 a8e45a802600ca1cde28fe8522a26635328bbd99
fanli/src/main/java/com/yeshi/fanli/service/impl/config/HotSearchServiceImpl.java
@@ -8,6 +8,7 @@
import javax.annotation.Resource;
import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
@@ -18,11 +19,12 @@
import com.yeshi.fanli.entity.admin.HotSearchAdmin;
import com.yeshi.fanli.entity.bus.search.HotSearch;
import com.yeshi.fanli.entity.bus.su.search.SuperHotSearch;
import com.yeshi.fanli.entity.system.System;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.HotSearchService;
import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.Utils;
@Service
@@ -32,7 +34,7 @@
   private HotSearchDao hotSearchDao;
   
   @Resource
   private SystemService systemService;
   private BusinessSystemService businessSystemService;
   
   @Resource
   private SuperHotSearchService superHotSearchService;
@@ -42,7 +44,7 @@
         String packages, String key) {
      final int strat = index * Constant.PAGE_SIZE;
      platform = Utils.getMap().get(platform);
      com.yeshi.fanli.entity.system.System system = systemService.getSystem(platform, packages);
      BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
      List<HotSearch> hotSearchList=null;
      List<SuperHotSearch> superHotSearchList=null;
      Map<Long,HotSearchAdmin> hotSearchAdminMap=new HashMap<Long, HotSearchAdmin>();
@@ -76,14 +78,14 @@
            hsIdList.add(rs.getId());
         }
         superHotSearchList = superHotSearchService.getSuperHotSearchsByHotSearchs(hsIdList);
         Map<Long,List<System>> superMap = new HashMap<Long, List<System>>();
         Map<Long,List<BusinessSystem>> superMap = new HashMap<Long, List<BusinessSystem>>();
         Long rsId=null;
         List<System> systemList=null;
         List<BusinessSystem> systemList=null;
         for (SuperHotSearch srs : superHotSearchList) {
            rsId = srs.getHotSearch().getId();
            systemList = superMap.get(rsId);
            if(systemList==null){
               systemList=new ArrayList<System>();
               systemList=new ArrayList<BusinessSystem>();
            }
            systemList.add(srs.getSystem());
            superMap.put(rsId,systemList);
@@ -95,7 +97,7 @@
            if(rsa==null){
               rsa=new HotSearchAdmin();
            }
            List<System> list = superMap.get(id);
            List<BusinessSystem> list = superMap.get(id);
            if(list != null){
               rsa.getSystemList().addAll(superMap.get(id));
            }
@@ -178,7 +180,7 @@
   public int getCount(String platform, String packages, final String key) {
      platform = Utils.getMap().get(platform);
      final System system = systemService.getSystem(platform, packages);
      final BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
      return (Integer) hotSearchDao.excute(new HibernateCallback<Integer>() {
         
         public Integer doInHibernate(Session session)
@@ -202,4 +204,130 @@
      });
   }
   @Override
   @SuppressWarnings("unchecked")
   public List<HotSearch> listQuery(int start, int count, String key, Long systemId) throws Exception {
      List<HotSearch> listObj = null;
      if (systemId == null) {
         String hql = "from HotSearch hs where 1=1 ";
         if (!StringUtil.isNullOrEmpty(key)) {
            hql += " hs.name like ?";
         }
         final String queryHQL = hql;
         listObj = (List<HotSearch>) hotSearchDao.excute(new HibernateCallback<List<HotSearch>>() {
            public List<HotSearch> doInHibernate(Session session) throws HibernateException {
               Query query = session.createQuery(queryHQL);
               query.setFirstResult(start);
               query.setMaxResults(count);
               if (!StringUtil.isNullOrEmpty(key)) {
                  query.setParameter(0, "%" + key + "%");
               }
               return query.list();
            }
         });
      } else {
         List<SuperHotSearch> superHotSearchList = null;
         if(StringUtil.isNullOrEmpty(key)){
            superHotSearchList = superHotSearchService.getSuperHotSearchBySystemId(systemId,start, count);
         }else{
            String likekey = "%"+key+"%";
            superHotSearchList = superHotSearchService.getSuperHotSearchBySystemId(systemId, start, count, likekey);
         }
         if (superHotSearchList != null && superHotSearchList.size() > 0) {
            listObj = new ArrayList<HotSearch>();
            for (SuperHotSearch superHotSearch: superHotSearchList) {
               HotSearch hotSearch = superHotSearch.getHotSearch();
               listObj.add(hotSearch);
            }
         }
      }
      if (listObj == null || listObj.size() == 0) {
         return null;
      }
      List<Long> listId = new ArrayList<>();
      for (HotSearch hotSearch : listObj) {
         listId.add(hotSearch.getId());
      }
      List<BusinessSystem> systemList = businessSystemService.getBusinessSystems();
      List<SuperHotSearch> listSuper = superHotSearchService.listSuperHotSearch(listId);
      if (listSuper == null || listSuper.size() == 0) {
         for (HotSearch hotSearch : listObj) {
            hotSearch.setSystemList(systemList);
         }
      } else {
         for (HotSearch hotSearch : listObj) {
            Long id = hotSearch.getId();
            List<BusinessSystem> newList = new ArrayList<BusinessSystem>();
            // 是否有关联系统选项
            for (BusinessSystem dsystem : systemList) {
               BusinessSystem newsystem = new BusinessSystem();
               try {
                  PropertyUtils.copyProperties(newsystem, dsystem);
               } catch (Exception e) {
                  e.printStackTrace();
               }
               if (listSuper != null && listSuper.size() > 0) {
                  Long superSystemId = newsystem.getId();
                  for (SuperHotSearch superHotSearch : listSuper) {
                     HotSearch search = superHotSearch.getHotSearch();
                     BusinessSystem system = superHotSearch.getSystem();
                     // 当前专题 、当前系统
                     if (search != null && system != null && id == search.getId() && superSystemId == system.getId()) {
                        newsystem.setCheck(1);
                        break;
                     }
                  }
               }
               if (newsystem.getCheck() != 1) {
                  newsystem.setCheck(0);
               }
               newList.add(newsystem);
            }
            hotSearch.setSystemList(newList);
         }
      }
      return listObj;
   }
   @Override
   public int countList(String key, Long systemId) {
      return (Integer) hotSearchDao.excute(new HibernateCallback<Integer>() {
         public Integer doInHibernate(Session session)
               throws HibernateException {
            Query query = null;
            if (StringUtil.isNullOrEmpty(key)) {
               query = session.createQuery("select count(hs.id) from HotSearch hs");
            } else {
               query = session.createQuery("select count(hs.id) from HotSearch hs where hs.name like ?");
               query.setParameter(0, "%"+key+"%");
            }
            Long result = (Long) query.uniqueResult();
            return result.intValue();
         }
      });
   }
}