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<RecommendAd> getRecommendAdList() {
|
|
return recommendAdDao.list("from RecommendAd");
|
}
|
|
public List<RecommendAd> 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<SuperRecommendAd> 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<MineAd> 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<RecommendAdAdmin> getRecommendAdAdmin(final String key, final int detailSystem, final int page) {
|
return (List<RecommendAdAdmin>) recommendAdDao.excute(new HibernateCallback<List<RecommendAdAdmin>>() {
|
public List<RecommendAdAdmin> doInHibernate(Session session) throws HibernateException {
|
List<RecommendAdAdmin> zhiBoClassList = new ArrayList<RecommendAdAdmin>();
|
try {
|
List<DetailSystem> 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<RecommendAd> list = session.createQuery(sql).setFirstResult((page - 1) * Constant.pageCount)
|
.setMaxResults(Constant.pageCount).list();
|
for (RecommendAd vb : list) {
|
List<DetailSystem> detailSystemS = session
|
.createQuery(
|
"select vb.detailSystem from SuperRecommendAd vb where vb.recommendAd.id=?")
|
.setParameter(0, vb.getId()).list();
|
|
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 : 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<SuperRecommendAd> 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<WXAd> getWinAd(SystemInfo system) {
|
List<WXAd> list = wxAdDao.list("from WXAd w where w.system.id=" + system.getId());
|
return list;
|
}
|
|
public List<WXAd> getWinAd() {
|
List<WXAd> 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<RecommendAd> getRecommendAdList(String detailSystem) {
|
return recommendAdDao
|
.list("select hs.recommendAd FROM SuperRecommendAd hs where hs.detailSystem.id=" + detailSystem);
|
}
|
|
public void addRecommendAd(SuperRecommendAd sv) {
|
List<SuperRecommendAd> 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<SuperRecommendAd> typeList) {
|
recommendAdDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
try {
|
session.getTransaction().begin();
|
List<SuperRecommendAd> 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<CommonAdPositionAd> 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<CommonAdPosition> getCommonAdPositionList() {
|
return (List<CommonAdPosition>) commonAdPositionDao.list("from CommonAdPosition");
|
}
|
|
public List<CommonAdPositionAd> getCommonAdPositionAd(String key, int pid, int pageIndex) {
|
List<CommonAdPositionAd> adList = new ArrayList<CommonAdPositionAd>();
|
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<CommonAdPositionAd> 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<CommonAdPositionAd> list = commonAdPositionAdDao
|
.list("from CommonAdPositionAd ca where ca.ad.id=" + adid + " and ca.adPosition.id=" + pid);
|
for (CommonAdPositionAd ca : list)
|
deleteCommonAdPositionAd(ca);
|
}
|
|
}
|