src/main/java/com/yeshi/buwan/service/imp/SystemService.java
@@ -1,9 +1,13 @@
package com.yeshi.buwan.service.imp;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.buwan.dao.system.DetailSystemDao;
import com.yeshi.buwan.dao.system.SystemInfoDao;
import com.yeshi.buwan.domain.*;
import com.yeshi.buwan.domain.special.Special;
import com.yeshi.buwan.domain.special.SuperSpecial;
import com.yeshi.buwan.domain.system.DetailSystem;
import com.yeshi.buwan.domain.system.SystemInfo;
import com.yeshi.buwan.util.Constant;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
@@ -11,318 +15,264 @@
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.stereotype.Service;
import com.yeshi.buwan.dao.DetailSystemDao;
import com.yeshi.buwan.dao.SystemInfoDao;
import com.yeshi.buwan.domain.DetailSystem;
import com.yeshi.buwan.domain.HomeAd;
import com.yeshi.buwan.domain.HomeType;
import com.yeshi.buwan.domain.HotSearch;
import com.yeshi.buwan.domain.HotStar;
import com.yeshi.buwan.domain.HotVideoType;
import com.yeshi.buwan.domain.ShareContent;
import com.yeshi.buwan.domain.SuperHomeAd;
import com.yeshi.buwan.domain.SuperHomeNotice;
import com.yeshi.buwan.domain.SuperHomeType;
import com.yeshi.buwan.domain.SuperHotSearch;
import com.yeshi.buwan.domain.SuperHotStar;
import com.yeshi.buwan.domain.SuperHotType;
import com.yeshi.buwan.domain.SuperRecommendAd;
import com.yeshi.buwan.domain.SuperUserBanner;
import com.yeshi.buwan.domain.SuperVideoType;
import com.yeshi.buwan.domain.SystemInfo;
import com.yeshi.buwan.domain.UserBanner;
import com.yeshi.buwan.domain.VideoBanQuan;
import com.yeshi.buwan.domain.VideoBanQuanVideo;
import com.yeshi.buwan.domain.VideoType;
import com.yeshi.buwan.domain.special.Special;
import com.yeshi.buwan.domain.special.SuperSpecial;
import com.yeshi.buwan.util.Constant;
import javax.annotation.Resource;
import java.util.List;
/**
 * 系统分类服务
 *
 *
 * @author Administrator
 *
 */
@Service
public class SystemService {
   Logger log = Logger.getLogger(SystemService.class);
    Logger log = Logger.getLogger(SystemService.class);
   @Resource
   private DetailSystemDao detailSystemDao;
   @Resource
   private SystemInfoDao systemInfoDao;
   @Resource
   private ClassService classService;
   @Resource
   private StarService starService;
   @Resource
   private SpecialService specialService;
    @Resource
    private DetailSystemDao detailSystemDao;
    @Resource
    private SystemInfoDao systemInfoDao;
    @Resource
    private ClassService classService;
    @Resource
    private StarService starService;
    @Resource
    private SpecialService specialService;
   public ClassService getClassService() {
      return classService;
   }
    public List<DetailSystem> getDetailSystemList(String systemId) {
        List<DetailSystem> list = detailSystemDao.list("from DetailSystem ds where ds.system.id=?", systemId);
        return list;
    }
   public void setClassService(ClassService classService) {
      this.classService = classService;
   }
    public List<DetailSystem> getDetailSystemList(String key, String systemId, int pageIndex) {
        List<DetailSystem> list = detailSystemDao.list(
                "from DetailSystem ds where ds.appName like ? and ds.system.id=? order by ds.createtime desc",
                (pageIndex - 1) * Constant.pageCount, Constant.pageCount, new String[]{"%" + key + "%", systemId});
        return list;
    }
   public StarService getStarService() {
      return starService;
   }
    public long getDetailSystemListCount(String key, String systemId) {
        return detailSystemDao.getCount("select count(*)  from DetailSystem d where d.appName like ? and d.system.id=?",
                new String[]{"%" + key + "%", systemId});
    }
   public void setStarService(StarService starService) {
      this.starService = starService;
   }
    @Cacheable(value = "homeCache", key = "'getDetailSystemByPackage'+'-'+#packageName")
    public DetailSystem getDetailSystemByPackage(String packageName) {
        long startTime = System.currentTimeMillis();
        log.info("getDetailSystemByPackage开始请求");
        List<DetailSystem> list = detailSystemDao.list("from DetailSystem d where d.packageName=?",
                new String[]{packageName});
        log.info("getDetailSystemByPackage请求完成:" + (System.currentTimeMillis() - startTime));
        if (list != null && list.size() > 0)
            return list.get(0);
        else
            return null;
    }
   public SpecialService getSpecialService() {
      return specialService;
   }
    public DetailSystem getDetailSystemById(String id) {
        return detailSystemDao.find(DetailSystem.class, id);
    }
   public void setSpecialService(SpecialService specialService) {
      this.specialService = specialService;
   }
    public void updateDetailSystem(DetailSystem system) {
        detailSystemDao.update(system);
    }
   public SystemInfoDao getSystemInfoDao() {
      return systemInfoDao;
   }
    public boolean addDetailSystem(DetailSystem system) {
   public void setSystemInfoDao(SystemInfoDao systemInfoDao) {
      this.systemInfoDao = systemInfoDao;
   }
        List<DetailSystem> list = detailSystemDao.list(
                "from DetailSystem ds where ds.system.id=" + system.getSystem().getId()
                        + " and ds.packageName=? and ds.platform=" + system.getPlatform(),
                new String[]{system.getPackageName()});
        if (list == null || list.size() == 0) {
            detailSystemDao.create(system);
            return true;
        } else
            return false;
    }
   public DetailSystemDao getDetailSystemDao() {
      return detailSystemDao;
   }
    public List<SystemInfo> getSystemList() {
        return systemInfoDao.list("from SystemInfo");
    }
   public void setDetailSystemDao(DetailSystemDao detailSystemDao) {
      this.detailSystemDao = detailSystemDao;
   }
   public List<DetailSystem> getDetailSystemList() {
      List<DetailSystem> list = detailSystemDao.list("from DetailSystem");
      return list;
   }
    /**
     * 获取系统
     *
     * @param id
     * @return
     */
    public SystemInfo getSystem(String id) {
        return systemInfoDao.find(SystemInfo.class, id);
    }
   public List<DetailSystem> getDetailSystemList(String key, int pageIndex) {
      List<DetailSystem> list = detailSystemDao.list(
            "from DetailSystem ds where ds.appName like ? order by ds.createtime desc",
            (pageIndex - 1) * Constant.pageCount, Constant.pageCount, new String[] { "%" + key + "%" });
      return list;
   }
    @SuppressWarnings("unchecked")
    public void deleteDetailSystem(final String dsId) {
        detailSystemDao.excute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                try {
                    session.getTransaction().begin();
   public long getDetailSystemListCount(String key) {
      return detailSystemDao.getCount("select count(*)  from DetailSystem d where d.appName like ?",
            new String[] { "%" + key + "%" });
   }
                    List<SuperHomeAd> shlist = session.createQuery("from SuperHomeAd sz where sz.detailSystem.id=?")
                            .setParameter(0, dsId).list();
                    for (SuperHomeAd sz : shlist)
                        session.delete(sz);
   @Cacheable(value = "homeCache", key = "'getDetailSystemByPackage'+'-'+#packageName")
   public DetailSystem getDetailSystemByPackage(String packageName) {
      long startTime = System.currentTimeMillis();
      log.info("getDetailSystemByPackage开始请求");
      List<DetailSystem> list = detailSystemDao.list("from DetailSystem d where d.packageName=?",
            new String[] { packageName });
      log.info("getDetailSystemByPackage请求完成:" + (System.currentTimeMillis() - startTime));
      if (list != null && list.size() > 0)
         return list.get(0);
      else
         return null;
   }
                    List<SuperHomeNotice> shnlist = session
                            .createQuery("from SuperHomeNotice sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperHomeNotice sz : shnlist)
                        session.delete(sz);
   public DetailSystem getDetailSystemById(String id) {
      return detailSystemDao.find(DetailSystem.class, id);
   }
                    List<SuperHomeType> shtlist = session
                            .createQuery("from SuperHomeType sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperHomeType sz : shtlist)
                        session.delete(sz);
   public void updateDetailSystem(DetailSystem system) {
      detailSystemDao.update(system);
   }
                    List<SuperHotSearch> shslist = session
                            .createQuery("from SuperHotSearch sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperHotSearch sz : shslist)
                        session.delete(sz);
   public boolean addDetailSystem(DetailSystem system) {
                    List<SuperHotType> shotlist = session.createQuery("from SuperHotType sz where sz.detailSystem.id=?")
                            .setParameter(0, dsId).list();
                    for (SuperHotType sz : shotlist)
                        session.delete(sz);
      List<DetailSystem> list = detailSystemDao.list(
            "from DetailSystem ds where ds.system.id=" + system.getSystem().getId()
                  + " and ds.packageName=? and ds.platform=" + system.getPlatform(),
            new String[] { system.getPackageName() });
      if (list == null || list.size() == 0) {
         detailSystemDao.create(system);
         return true;
      } else
         return false;
   }
                    List<SuperRecommendAd> sralist = session
                            .createQuery("from SuperRecommendAd sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperRecommendAd sz : sralist)
                        session.delete(sz);
   public List<SystemInfo> getSystemList() {
      return systemInfoDao.list("from SystemInfo");
   }
                    List<SuperUserBanner> sublist = session
                            .createQuery("from SuperUserBanner sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperUserBanner sz : sublist)
                        session.delete(sz);
   @SuppressWarnings("unchecked")
   public void deleteDetailSystem(final String dsId) {
      detailSystemDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            try {
               session.getTransaction().begin();
                    List<SuperVideoType> svtlist = session
                            .createQuery("from SuperVideoType sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (SuperVideoType sz : svtlist)
                        session.delete(sz);
               List<SuperHomeAd> shlist = session.createQuery("from SuperHomeAd sz where sz.detailSystem.id=?")
                     .setParameter(0, dsId).list();
               for (SuperHomeAd sz : shlist)
                  session.delete(sz);
                    List<VideoBanQuan> vbqlist = session.createQuery("from VideoBanQuan sz where sz.detailSystem.id=?")
                            .setParameter(0, dsId).list();
                    for (VideoBanQuan sz : vbqlist)
                        session.delete(sz);
               List<SuperHomeNotice> shnlist = session
                     .createQuery("from SuperHomeNotice sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperHomeNotice sz : shnlist)
                  session.delete(sz);
                    List<VideoBanQuanVideo> vbvlist = session
                            .createQuery("from VideoBanQuanVideo sz where sz.detailSystem.id=?").setParameter(0, dsId)
                            .list();
                    for (VideoBanQuanVideo sz : vbvlist)
                        session.delete(sz);
               List<SuperHomeType> shtlist = session
                     .createQuery("from SuperHomeType sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperHomeType sz : shtlist)
                  session.delete(sz);
                    List<ShareContent> sclist = session.createQuery("from ShareContent sz where sz.detailSystem.id=?")
                            .setParameter(0, dsId).list();
                    for (ShareContent sz : sclist)
                        session.delete(sz);
               List<SuperHotSearch> shslist = session
                     .createQuery("from SuperHotSearch sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperHotSearch sz : shslist)
                  session.delete(sz);
                    session.delete(new DetailSystem(dsId));
                    session.flush();
                    session.getTransaction().commit();
                } catch (Exception e) {
                    e.printStackTrace();
                    session.getTransaction().rollback();
                }
                return null;
            }
        });
               List<SuperHotType> shotlist = session.createQuery("from SuperHotType sz where sz.detailSystem.id=?")
                     .setParameter(0, dsId).list();
               for (SuperHotType sz : shotlist)
                  session.delete(sz);
    }
               List<SuperRecommendAd> sralist = session
                     .createQuery("from SuperRecommendAd sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperRecommendAd sz : sralist)
                  session.delete(sz);
    HomeAdService homeAdService;
    HomeTypeService homeTypeService;
    HotVideoTypeService hotVideoTypeService;
    SearchService searchService;
    UserBannerService userBannerService;
               List<SuperUserBanner> sublist = session
                     .createQuery("from SuperUserBanner sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperUserBanner sz : sublist)
                  session.delete(sz);
    public void detailSystemClone(String fromid, String toId) {
        // 首页Banner
        List<HomeAd> homeAdlist = homeAdService.getHomeAdList(new DetailSystem(fromid));
        for (HomeAd ad : homeAdlist) {
            SuperHomeAd sa = new SuperHomeAd();
            sa.setCreatetime(System.currentTimeMillis() + "");
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setHomeAd(ad);
            homeAdService.addSuperHomeAd(sa);
        }
        // 首页栏目
               List<SuperVideoType> svtlist = session
                     .createQuery("from SuperVideoType sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (SuperVideoType sz : svtlist)
                  session.delete(sz);
        List<HomeType> homeTypelist = homeTypeService.getHomeType(fromid);
        for (HomeType ht : homeTypelist) {
            SuperHomeType sa = new SuperHomeType();
            sa.setCreatetime(System.currentTimeMillis() + "");
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setHomeType(ht);
            homeTypeService.addSuperHomeType(sa);
        }
               List<VideoBanQuan> vbqlist = session.createQuery("from VideoBanQuan sz where sz.detailSystem.id=?")
                     .setParameter(0, dsId).list();
               for (VideoBanQuan sz : vbqlist)
                  session.delete(sz);
        // 视频大分类
        List<SuperVideoType> videoTypeList = classService.getSuperVideoTypeList(fromid);
        for (SuperVideoType ht : videoTypeList) {
            SuperVideoType sa = new SuperVideoType();
            sa.setCreatetime(System.currentTimeMillis() + "");
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setType(new VideoType(ht.getType().getId()));
            classService.addSuperVideoType(sa);
        }
               List<VideoBanQuanVideo> vbvlist = session
                     .createQuery("from VideoBanQuanVideo sz where sz.detailSystem.id=?").setParameter(0, dsId)
                     .list();
               for (VideoBanQuanVideo sz : vbvlist)
                  session.delete(sz);
        // 热门分类
        List<HotVideoType> hotVideoTypeList = hotVideoTypeService.getSuperHotTypeList(fromid);
        for (HotVideoType ht : hotVideoTypeList) {
            SuperHotType sa = new SuperHotType();
            sa.setCreatetime(System.currentTimeMillis() + "");
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setHotType(ht);
            hotVideoTypeService.addSuperHotType(sa);
        }
               List<ShareContent> sclist = session.createQuery("from ShareContent sz where sz.detailSystem.id=?")
                     .setParameter(0, dsId).list();
               for (ShareContent sz : sclist)
                  session.delete(sz);
        // 专题
               session.delete(new DetailSystem(dsId));
               session.flush();
               session.getTransaction().commit();
            } catch (Exception e) {
               e.printStackTrace();
               session.getTransaction().rollback();
            }
            return null;
         }
      });
        List<Special> specialList = specialService.getSpecialList(fromid);
        for (Special special : specialList) {
            SuperSpecial sa = new SuperSpecial();
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setSpecial(new Special(special.getId()));
            specialService.addSuperSpecial(sa);
        }
   }
        // 明星
        List<HotStar> hotStarList = starService.getHotStarList(fromid);
        for (HotStar hs : hotStarList) {
            SuperHotStar sa = new SuperHotStar();
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setHotStar(new HotStar(hs.getId()));
            sa.setCreatetime(System.currentTimeMillis() + "");
            starService.addSuperHotStar(sa);
        }
        // 热门搜索
   HomeAdService homeAdService;
   HomeTypeService homeTypeService;
   HotVideoTypeService hotVideoTypeService;
   SearchService searchService;
   UserBannerService userBannerService;
        List<HotSearch> hotSearchList = searchService.getHotSearchListByDS(fromid);
        for (HotSearch hs : hotSearchList) {
            SuperHotSearch sa = new SuperHotSearch();
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setHotSearch(new HotSearch(hs.getId()));
            sa.setCreatetime(System.currentTimeMillis() + "");
            searchService.addSuperHotSearch(sa);
        }
   public void detailSystemClone(String fromid, String toId) {
      // 首页Banner
      List<HomeAd> homeAdlist = homeAdService.getHomeAdList(new DetailSystem(fromid));
      for (HomeAd ad : homeAdlist) {
         SuperHomeAd sa = new SuperHomeAd();
         sa.setCreatetime(System.currentTimeMillis() + "");
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setHomeAd(ad);
         homeAdService.addSuperHomeAd(sa);
      }
      // 首页栏目
        // 用户Banner
        List<UserBanner> userBannerList = userBannerService.getUserBannerList(fromid);
        for (UserBanner ub : userBannerList) {
            SuperUserBanner sa = new SuperUserBanner();
            sa.setDetailSystem(new DetailSystem(toId));
            sa.setUserBanner(new UserBanner(ub.getId()));
            sa.setCreatetime(System.currentTimeMillis() + "");
            userBannerService.addSuperUserBanner(sa);
        }
      List<HomeType> homeTypelist = homeTypeService.getHomeType(fromid);
      for (HomeType ht : homeTypelist) {
         SuperHomeType sa = new SuperHomeType();
         sa.setCreatetime(System.currentTimeMillis() + "");
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setHomeType(ht);
         homeTypeService.addSuperHomeType(sa);
      }
      // 视频大分类
      List<SuperVideoType> videoTypeList = classService.getSuperVideoTypeList(fromid);
      for (SuperVideoType ht : videoTypeList) {
         SuperVideoType sa = new SuperVideoType();
         sa.setCreatetime(System.currentTimeMillis() + "");
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setType(new VideoType(ht.getType().getId()));
         classService.addSuperVideoType(sa);
      }
      // 热门分类
      List<HotVideoType> hotVideoTypeList = hotVideoTypeService.getSuperHotTypeList(fromid);
      for (HotVideoType ht : hotVideoTypeList) {
         SuperHotType sa = new SuperHotType();
         sa.setCreatetime(System.currentTimeMillis() + "");
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setHotType(ht);
         hotVideoTypeService.addSuperHotType(sa);
      }
      // 专题
      List<Special> specialList = specialService.getSpecialList(fromid);
      for (Special special : specialList) {
         SuperSpecial sa = new SuperSpecial();
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setSpecial(new Special(special.getId()));
         specialService.addSuperSpecial(sa);
      }
      // 明星
      List<HotStar> hotStarList = starService.getHotStarList(fromid);
      for (HotStar hs : hotStarList) {
         SuperHotStar sa = new SuperHotStar();
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setHotStar(new HotStar(hs.getId()));
         sa.setCreatetime(System.currentTimeMillis() + "");
         starService.addSuperHotStar(sa);
      }
      // 热门搜索
      List<HotSearch> hotSearchList = searchService.getHotSearchListByDS(fromid);
      for (HotSearch hs : hotSearchList) {
         SuperHotSearch sa = new SuperHotSearch();
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setHotSearch(new HotSearch(hs.getId()));
         sa.setCreatetime(System.currentTimeMillis() + "");
         searchService.addSuperHotSearch(sa);
      }
      // 用户Banner
      List<UserBanner> userBannerList = userBannerService.getUserBannerList(fromid);
      for (UserBanner ub : userBannerList) {
         SuperUserBanner sa = new SuperUserBanner();
         sa.setDetailSystem(new DetailSystem(toId));
         sa.setUserBanner(new UserBanner(ub.getId()));
         sa.setCreatetime(System.currentTimeMillis() + "");
         userBannerService.addSuperUserBanner(sa);
      }
      // 直播
   }
        // 直播
    }
}