package com.newvideo.service.imp; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.cache.annotation.Cacheable; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Service; import com.newvideo.dao.AdStatisticsDao; import com.newvideo.dao.CommonAdDao; import com.newvideo.dao.CommonAdPositionAdDao; import com.newvideo.dao.CommonAdPositionDao; import com.newvideo.dao.CommonAdStatisticsDao; import com.newvideo.dao.MineAdDao; import com.newvideo.dao.RecommendAdDao; import com.newvideo.dao.SuperRecommendAdDao; import com.newvideo.dao.WXAdDao; import com.newvideo.dao.WXStatisticsDao; import com.newvideo.domain.DetailSystem; import com.newvideo.domain.RecommendAd; import com.newvideo.domain.SuperRecommendAd; import com.newvideo.domain.SystemInfo; import com.newvideo.domain.WXAd; import com.newvideo.domain.WXStatistics; import com.newvideo.domain.ad.AdStatistics; import com.newvideo.domain.ad.CommonAd; import com.newvideo.domain.ad.CommonAdPosition; import com.newvideo.domain.ad.CommonAdPositionAd; import com.newvideo.domain.ad.CommonAdStatistics; import com.newvideo.domain.ad.MineAd; import com.newvideo.domain.web.DetailSystemSelect; import com.newvideo.domain.web.RecommendAdAdmin; import com.newvideo.util.Constant; @Service public class AdService { @Resource private RecommendAdDao recommendAdDao; @Resource private MineAdDao mineAdDao; @Resource private AdStatisticsDao adStatisticsDao; @Resource private WXAdDao wxAdDao; @Resource private WXStatisticsDao wxStatisticsDao; @Resource private SuperRecommendAdDao superRecommendAdDao; @Resource private CommonAdPositionAdDao commonAdPositionAdDao; @Resource private CommonAdStatisticsDao commonAdStatisticsDao; @Resource private CommonAdDao commonAdDao; @Resource private CommonAdPositionDao commonAdPositionDao; public CommonAdDao getCommonAdDao() { return commonAdDao; } public void setCommonAdDao(CommonAdDao commonAdDao) { this.commonAdDao = commonAdDao; } public CommonAdStatisticsDao getCommonAdStatisticsDao() { return commonAdStatisticsDao; } public void setCommonAdStatisticsDao(CommonAdStatisticsDao commonAdStatisticsDao) { this.commonAdStatisticsDao = commonAdStatisticsDao; } public CommonAdPositionAdDao getCommonAdPositionAdDao() { return commonAdPositionAdDao; } public void setCommonAdPositionAdDao(CommonAdPositionAdDao commonAdPositionAdDao) { this.commonAdPositionAdDao = commonAdPositionAdDao; } public SuperRecommendAdDao getSuperRecommendAdDao() { return superRecommendAdDao; } public void setSuperRecommendAdDao(SuperRecommendAdDao superRecommendAdDao) { this.superRecommendAdDao = superRecommendAdDao; } public WXStatisticsDao getWxStatisticsDao() { return wxStatisticsDao; } public void setWxStatisticsDao(WXStatisticsDao wxStatisticsDao) { this.wxStatisticsDao = wxStatisticsDao; } public WXAdDao getWxAdDao() { return wxAdDao; } public void setWxAdDao(WXAdDao wxAdDao) { this.wxAdDao = wxAdDao; } public AdStatisticsDao getAdStatisticsDao() { return adStatisticsDao; } public void setAdStatisticsDao(AdStatisticsDao adStatisticsDao) { this.adStatisticsDao = adStatisticsDao; } public MineAdDao getMineAdDao() { return mineAdDao; } public void setMineAdDao(MineAdDao mineAdDao) { this.mineAdDao = mineAdDao; } public RecommendAdDao getRecommendAdDao() { return recommendAdDao; } public void setRecommendAdDao(RecommendAdDao recommendAdDao) { this.recommendAdDao = recommendAdDao; } // 获取广告 public List getRecommendAdList() { return recommendAdDao.list("from RecommendAd"); } public List getRecommendAdList(int type) { return recommendAdDao.list("from RecommendAd a where a.platform=3 or a.platform=" + type); } public RecommendAd getAdById(String id) { return recommendAdDao.find(RecommendAd.class, id); } public void updateRecommendAd(RecommendAd ad) { recommendAdDao.update(ad); } public void addRecommendAd(RecommendAd ad) { recommendAdDao.create(ad); } @SuppressWarnings("unchecked") public void deleteRecommendAd(final String id) { recommendAdDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); List list = session .createQuery("from SuperRecommendAd sv where sv.recommendAd.id=?").setParameter(0, id) .list(); for (SuperRecommendAd sv : list) session.delete(sv); session.delete(new RecommendAd(id)); session.flush(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } return null; } }); } public List getMineAdList(String key) { return mineAdDao.list( "from MineAd ma where ma.open=1 and ma.adKey.key=? order by ma.first desc,ma.percent desc", new String[] { key }); } /** * 后台操作 */ @SuppressWarnings("unchecked") public List getRecommendAdAdmin(final String key, final int detailSystem, final int page) { return (List) recommendAdDao.excute(new HibernateCallback>() { public List doInHibernate(Session session) throws HibernateException { List zhiBoClassList = new ArrayList(); try { List detailSystemList = session.createQuery("from DetailSystem").list(); String sql = ""; if (detailSystem > 0) sql = "select sh.recommendAd from SuperRecommendAd sh where sh.detailSystem.id=" + detailSystem + " order by sh.recommendAd.createtime desc"; else sql = "from RecommendAd zb order by zb.createtime desc"; List list = session.createQuery(sql).setFirstResult((page - 1) * Constant.pageCount) .setMaxResults(Constant.pageCount).list(); for (RecommendAd vb : list) { List detailSystemS = session .createQuery( "select vb.detailSystem from SuperRecommendAd vb where vb.recommendAd.id=?") .setParameter(0, vb.getId()).list(); List dssList = new ArrayList(); 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; } } } SuperRecommendAd sz = new SuperRecommendAd(); sz.setDetailSystem(null); sz.setRecommendAd(vb); zhiBoClassList.add(new RecommendAdAdmin(sz, dssList)); } } catch (Exception e) { e.printStackTrace(); } return zhiBoClassList; } }); } public long getRecommendAdAdminCount(String key, int detailSystem) { String sql = ""; if (detailSystem > 0) sql = "select count(*) from (select count(*) from wk_video_super_recommendad zb left join wk_ad_recommend c on c.id=zb.recommendadid where zb.detailsystem=" + detailSystem + " group by zb.recommendadid) s"; else sql = "select count(*) from (select count(*) from wk_video_super_recommendad zb left join wk_ad_recommend c on c.id=zb.recommendadid group by zb.recommendadid) s"; return recommendAdDao.getCountSQL(sql); } @SuppressWarnings("rawtypes") public void addRecommendAdAdmin(final String classid, final String detailSystemId) { recommendAdDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); List list = session .createQuery("from SuperRecommendAd vb where vb.recommendAd.id=? and vb.detailSystem.id=?") .setParameter(0, classid).setParameter(1, detailSystemId).list(); if (list == null || list.size() == 0) { SuperRecommendAd vb = new SuperRecommendAd(); vb.setCreatetime(System.currentTimeMillis() + ""); vb.setDetailSystem(new DetailSystem(detailSystemId)); vb.setRecommendAd(new RecommendAd(classid)); session.persist(vb); } session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } return null; } }); } @SuppressWarnings({ "unchecked", "rawtypes" }) public void deleteRecommendAdAdmin(final String classId, final String detailSystemId) { recommendAdDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); List list = session .createQuery("from SuperRecommendAd vb where vb.recommendAd.id=? and vb.detailSystem.id=?") .setParameter(0, classId).setParameter(1, detailSystemId).list(); if (list != null && list.size() > 0) { for (SuperRecommendAd vb : list) session.delete(vb); } session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } public void AddStatistics(String key, String platform, int type) { AdStatistics ad = new AdStatistics(); ad.setKey(key); ad.setPlatformId(platform); ad.setTime(System.currentTimeMillis() + ""); ad.setType(type); adStatisticsDao.create(ad); } /** * 获取微信广告 * * @return */ public List getWinAd(SystemInfo system) { List list = wxAdDao.list("from WXAd w where w.system.id=" + system.getId()); return list; } public List getWinAd() { List list = wxAdDao.list("from WXAd"); return list; } /** * 添加微信广告 * * @param ad */ public void addWX(WXAd ad) { wxAdDao.create(ad); } public void deleteWX(WXAd ad) { wxAdDao.delete(ad); } public WXAd getWXAd(Serializable id) { return wxAdDao.find(WXAd.class, id); } public void updateWXAd(WXAd ad) { wxAdDao.update(ad); } /** * 插入微信统计代码 * * @param bean */ public void insertWXStatistics(WXStatistics bean) { wxStatisticsDao.create(bean); } /** * 推荐广告条 */ @Cacheable(value = "homeCache",key="'getRecommendAdList'+'-'+#detailSystem") public List getRecommendAdList(String detailSystem) { return recommendAdDao .list("select hs.recommendAd FROM SuperRecommendAd hs where hs.detailSystem.id=" + detailSystem); } public void addRecommendAd(SuperRecommendAd sv) { List list = superRecommendAdDao.list("from SuperRecommendAd sv where sv.recommendAd.id=" + sv.getRecommendAd().getId() + " and sv.detailSystem.id=" + sv.getDetailSystem().getId()); if (list != null && list.size() > 0) return; superRecommendAdDao.create(sv); } public void updateSuperRecommendAd(SuperRecommendAd hotSearch) { superRecommendAdDao.update(hotSearch); } public void deleteSuperRecommendAd(SuperRecommendAd hotSearch) { superRecommendAdDao.delete(hotSearch); } @SuppressWarnings({ "unchecked", "rawtypes" }) public void updateSuperRecommendAdList(final String detailSystemId, final List typeList) { recommendAdDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); List list = session .createQuery("from SuperRecommendAd sh where sh.detailSystem.id=" + detailSystemId).list(); for (SuperRecommendAd ad : list) { session.delete(ad); } for (SuperRecommendAd videoType : typeList) { session.persist(videoType); } session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } @Cacheable(value = "classCache",key="'getCommonAdByPid'+'-'+#pid") public List getCommonAdByPid(String pid) { return commonAdPositionAdDao.list("from CommonAdPositionAd pa where pa.adPosition.id=?", new Serializable[] { pid + "" }); } // 添加广告统计 public void addCommonAdStatistics(int type, String pid, String commonAdid, String device) { CommonAdStatistics cas = new CommonAdStatistics(); cas.setCommonAd(new CommonAd(commonAdid)); cas.setCreatetime(System.currentTimeMillis() + ""); cas.setType(type); cas.setPositionid(pid); cas.setDevice(device); commonAdStatisticsDao.create(cas); } public List getCommonAdPositionList() { return (List) commonAdPositionDao.list("from CommonAdPosition"); } public List getCommonAdPositionAd(String key, int pid, int pageIndex) { List adList = new ArrayList(); adList = commonAdPositionAdDao.list("from CommonAdPositionAd ca where ca.adPosition.id=" + pid + "", (pageIndex - 1) * Constant.pageCount, Constant.pageCount, null); for (CommonAdPositionAd ad : adList) { ad.setCommonAdPositionList(commonAdPositionDao .list("select pa.adPosition from CommonAdPositionAd pa where pa.ad.id=" + ad.getAd().getId())); } return adList; } public long getCommonAdPositionAdCount(String key, int pid) { return commonAdPositionAdDao .getCount("select count(*) from CommonAdPositionAd ca where ca.adPosition.id=" + pid + ""); } public Serializable addCommonAd(CommonAd commonAd) { return commonAdDao.save(commonAd); } public void addCommonAdPositionAd(CommonAdPositionAd commonAdPositionAd) { commonAdPositionAdDao.create(commonAdPositionAd); } public CommonAd getCommonAdById(String id) { return commonAdDao.find(CommonAd.class, id); } // 更新 public void updateCommonAd(CommonAd commonAd) { commonAdDao.update(commonAd); } @SuppressWarnings({ "unchecked", "rawtypes" }) public void deleteCommonAd(final CommonAd ca) { recommendAdDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); List list = session .createQuery("from CommonAdPositionAd cp where cp.ad.id=" + ca.getId()).list(); for (CommonAdPositionAd cp : list) { session.delete(cp); } session.delete(ca); session.flush(); session.getTransaction().commit(); } catch (Exception e) { if (session.getTransaction().isActive()) session.getTransaction().rollback(); } return null; } }); } public void deleteCommonAdPositionAd(CommonAdPositionAd ad) { commonAdPositionAdDao.delete(ad); } public void deleteCommonAdPositionAd(String adid, String pid) { List list = commonAdPositionAdDao .list("from CommonAdPositionAd ca where ca.ad.id=" + adid + " and ca.adPosition.id=" + pid); for (CommonAdPositionAd ca : list) deleteCommonAdPositionAd(ca); } }