package com.yeshi.buwan.service.imp;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.hibernate.HibernateException;
|
import org.hibernate.Session;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.buwan.dao.HotTypeDao;
|
import com.yeshi.buwan.dao.SuperHotTypeDao;
|
import com.yeshi.buwan.domain.system.DetailSystem;
|
import com.yeshi.buwan.domain.HotVideoType;
|
import com.yeshi.buwan.domain.SuperHotType;
|
import com.yeshi.buwan.domain.web.DetailSystemSelect;
|
import com.yeshi.buwan.domain.web.HotTypeAdmin;
|
import com.yeshi.buwan.util.Constant;
|
|
@Service
|
public class HotVideoTypeService {
|
@Resource
|
private HotTypeDao hotTypeDao;
|
@Resource
|
private SuperHotTypeDao superHotTypeDao;
|
|
// 获取热门频道
|
public List<HotVideoType> getHotTypeList() {
|
|
return hotTypeDao.list("from HotVideoType");
|
}
|
|
public HotVideoType getHotTypeById(String id) {
|
|
return hotTypeDao.find(HotVideoType.class, id);
|
}
|
|
// 添加热门频道
|
public void addHotType(HotVideoType type) {
|
|
hotTypeDao.create(type);
|
}
|
|
// 删除热门分类
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
public void deleteHotType(final HotVideoType hotType) {
|
hotTypeDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
try {
|
List<SuperHotType> list = session.createQuery("from SuperHotType sv where sv.hotType.id=?")
|
.setParameter(0, hotType.getId()).list();
|
session.getTransaction().begin();
|
for (SuperHotType sv : list)
|
session.delete(sv);
|
session.delete(hotType);
|
session.flush();
|
session.getTransaction().commit();
|
} catch (Exception e) {
|
e.printStackTrace();
|
session.getTransaction().rollback();
|
}
|
return null;
|
}
|
});
|
|
}
|
|
/**
|
* 热门分类-- 后台编辑使用
|
*
|
* @param key
|
* @param detailSystem
|
* 无系统筛选就获取所有的热门分类 有系统筛选就获取部分热门分类
|
* @param page
|
* @return
|
*/
|
|
@SuppressWarnings("unchecked")
|
public List<HotTypeAdmin> getHotTypeAdmin(final int detailSystem, final int page) {
|
|
return (List<HotTypeAdmin>) hotTypeDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
List<HotTypeAdmin> hotTypeList = new ArrayList<>();
|
try {
|
List<DetailSystem> detailSystemList = session.createQuery("from DetailSystem").list();
|
String where = "";
|
if (detailSystem > 0)
|
where += " where vb.detailSystem.id= " + detailSystem;
|
|
List<HotVideoType> list = null;
|
if (detailSystem > 0)
|
list = session
|
.createQuery(
|
"select vb.hotType from SuperHotType vb where vb.detailSystem.id=? group by vb.hotType.id order by vb.createtime desc")
|
.setParameter(0, detailSystem).setFirstResult((page - 1) * Constant.pageCount)
|
.setMaxResults(Constant.pageCount).list();
|
else
|
list = session.createQuery("from HotVideoType vb order by vb.createtime desc")
|
.setFirstResult((page - 1) * Constant.pageCount).setMaxResults(Constant.pageCount)
|
.list();
|
for (HotVideoType vb : list) {
|
List<DetailSystem> detailSystemS = session
|
.createQuery("select vb.detailSystem from SuperHotType vb where vb.hotType.id=?")
|
.setParameter(0, vb.getId()).list();
|
|
List<DetailSystemSelect> 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;
|
}
|
}
|
}
|
hotTypeList.add(new HotTypeAdmin(vb, dssList));
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return hotTypeList;
|
}
|
});
|
|
}
|
|
/**
|
* 获取热门分类数量
|
*
|
* @param detailSystem
|
* @return
|
*/
|
public long getHotTypeAdminCount(int detailSystem) {
|
String where = "";
|
if (detailSystem > 0) {
|
where += " where bv.detailsystem= " + detailSystem;
|
return hotTypeDao.getCountSQL(
|
"select count(*) from (select count(*) from wk_video_super_hottype bv left join wk_video_hottype v on v.id=bv.hottypeid "
|
+ where + " group by bv.hottypeid) s");
|
} else {
|
return hotTypeDao.getCount("select count(*) from HotVideoType");
|
}
|
}
|
|
/**
|
* 显示热门分类区
|
*/
|
|
public List<HotVideoType> getSuperHotTypeList(String detailSystem) {
|
return hotTypeDao.list("select s.hotType from SuperHotType s where s.detailSystem.id=" + detailSystem);
|
}
|
|
public void addSuperHotType(SuperHotType sv) {
|
List<SuperHotType> list = superHotTypeDao.list("from SuperHotType sv where sv.hotType.id="
|
+ sv.getHotType().getId() + " and sv.detailSystem.id=" + sv.getDetailSystem().getId());
|
if (list != null && list.size() > 0)
|
return;
|
superHotTypeDao.create(sv);
|
}
|
|
public void updateSuperHotType(SuperHotType HotType) {
|
superHotTypeDao.update(HotType);
|
}
|
|
public void deleteSuperHotType(SuperHotType HotType) {
|
superHotTypeDao.delete(HotType);
|
}
|
|
@SuppressWarnings("unchecked")
|
public void updateSuperHotTypeList(final String detailSystemId, final List<SuperHotType> typeList) {
|
hotTypeDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
try {
|
List<SuperHotType> list = session
|
.createQuery("from SuperHotType sh where sh.detailSystem.id=" + detailSystemId).list();
|
session.getTransaction().begin();
|
for (SuperHotType ad : list) {
|
session.delete(ad);
|
}
|
|
for (SuperHotType videoType : typeList) {
|
session.persist(videoType);
|
}
|
session.flush();
|
session.getTransaction().commit();
|
} catch (Exception e) {
|
e.printStackTrace();
|
session.getTransaction().rollback();
|
}
|
return null;
|
}
|
});
|
|
}
|
|
}
|