package com.newvideo.service.imp;
|
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.hibernate.HibernateException;
|
import org.hibernate.Query;
|
import org.hibernate.Session;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.stereotype.Service;
|
|
import com.newvideo.dao.HotTypeDao;
|
import com.newvideo.dao.SuperHotTypeDao;
|
import com.newvideo.domain.DetailSystem;
|
import com.newvideo.domain.HotVideoType;
|
import com.newvideo.domain.SuperHotType;
|
import com.newvideo.domain.web.DetailSystemSelect;
|
import com.newvideo.domain.web.HotTypeAdmin;
|
import com.newvideo.util.Constant;
|
|
@Service
|
public class HotVideoTypeService {
|
@Resource
|
private HotTypeDao hotTypeDao;
|
@Resource
|
private SuperHotTypeDao superHotTypeDao;
|
|
public SuperHotTypeDao getSuperHotTypeDao() {
|
return superHotTypeDao;
|
}
|
|
public void setSuperHotTypeDao(SuperHotTypeDao superHotTypeDao) {
|
this.superHotTypeDao = superHotTypeDao;
|
}
|
|
public HotTypeDao getHotTypeDao() {
|
return hotTypeDao;
|
}
|
|
public void setHotTypeDao(HotTypeDao hotTypeDao) {
|
this.hotTypeDao = hotTypeDao;
|
}
|
|
// 获取热门频道
|
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) {
|
if(type!=null){
|
type.setCreatetime(System.currentTimeMillis()+"");
|
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);
|
HotVideoType hvt = (HotVideoType) session.get(HotVideoType.class, hotType.getId());
|
session.delete(hvt);
|
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<HotTypeAdmin>();
|
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<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;
|
}
|
}
|
}
|
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 sht) {
|
List<SuperHotType> list = superHotTypeDao.list("from SuperHotType sht where sht.hotType.id = ? and sht.detailSystem.id = ? ",new Serializable[]{sht.getHotType().getId(),sht.getDetailSystem().getId()});
|
if(list.size()==1)
|
superHotTypeDao.delete(list.get(0));
|
}
|
|
@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;
|
}
|
});
|
|
}
|
|
@SuppressWarnings("unchecked")
|
public List<HotTypeAdmin> getHotTypeAdmin(final int detailSystem, final String key,
|
final int page) {
|
return (List<HotTypeAdmin>) hotTypeDao.excute(new HibernateCallback<List<HotTypeAdmin>>() {
|
@Override
|
public List<HotTypeAdmin> doInHibernate(Session session)
|
throws HibernateException {
|
int start=(page-1)*Constant.pageCount;
|
|
List<HotTypeAdmin> hotTypeList = new ArrayList<HotTypeAdmin>();
|
HotTypeAdmin hotTypeAdmin = null;
|
DetailSystemSelect detailSystemSelect =null;
|
List<DetailSystem> detailSystemList = session.createQuery("from DetailSystem").list();
|
List<DetailSystemSelect> sysList = new ArrayList<DetailSystemSelect>();
|
for (DetailSystem detailSystem : detailSystemList) {
|
detailSystemSelect=new DetailSystemSelect();
|
detailSystemSelect.setDetailSystem(detailSystem);
|
sysList.add(detailSystemSelect);
|
}
|
if(detailSystem==0){
|
Query query2 = session.createQuery("from HotVideoType hvt where hvt.type.name like ? ");
|
query2.setParameter(0, "%"+key+"%");
|
query2.setFirstResult(start);
|
query2.setMaxResults(Constant.pageCount);
|
List<HotVideoType> list2 = query2.list();
|
Query query3 = session.createQuery("from SuperHotType ");
|
List<SuperHotType> list3 = query3.list();
|
for (HotVideoType hotVideoType : list2) {
|
hotTypeAdmin = new HotTypeAdmin();
|
hotTypeAdmin.setHotType(hotVideoType);
|
List<DetailSystemSelect> dss = new ArrayList<DetailSystemSelect>();
|
dss.addAll(sysList);
|
hotTypeAdmin.setDetailSystemList(dss);
|
for (SuperHotType superHotType : list3) {
|
HotVideoType hotType = superHotType.getHotType();
|
if(hotType==hotVideoType){
|
DetailSystem system = superHotType.getDetailSystem();
|
detailSystemSelect = new DetailSystemSelect();
|
detailSystemSelect.setDetailSystem(system);
|
List<DetailSystemSelect> systemList = hotTypeAdmin.getDetailSystemList();
|
systemList.remove(detailSystemSelect);
|
detailSystemSelect.setSelected(true);
|
systemList.add(detailSystemSelect);
|
}
|
}
|
hotTypeList.add(hotTypeAdmin);
|
}
|
|
}else{
|
Query query = null;
|
query= session.createQuery("from SuperHotType sht where sht.detailSystem.id=? and sht.hotType.type.name like ? ");
|
query.setParameter(0, detailSystem+"");
|
query.setParameter(1, "%"+key+"%");
|
query.setFirstResult(start);
|
query.setMaxResults(Constant.pageCount);
|
List<SuperHotType> list = query.list();
|
for (SuperHotType superHotType : list) {
|
hotTypeAdmin = new HotTypeAdmin();
|
HotVideoType hotType = superHotType.getHotType();
|
hotTypeAdmin.setHotType(hotType);
|
List<DetailSystemSelect> dss = new ArrayList<DetailSystemSelect>();
|
dss.addAll(sysList);
|
hotTypeAdmin.setDetailSystemList(dss);
|
if(hotTypeList.contains(hotTypeAdmin)){
|
// int i = hotTypeList.indexOf(hotTypeAdmin);
|
// HotTypeAdmin typeAdmin = hotTypeList.get(i);
|
List<DetailSystemSelect> systemList = hotTypeAdmin.getDetailSystemList();
|
detailSystemSelect = new DetailSystemSelect();
|
detailSystemSelect.setDetailSystem(superHotType.getDetailSystem());
|
systemList.remove(detailSystemSelect);
|
detailSystemSelect.setSelected(true);
|
systemList.add(detailSystemSelect);
|
}else{
|
detailSystemSelect = new DetailSystemSelect();
|
detailSystemSelect.setDetailSystem(superHotType.getDetailSystem());
|
List<DetailSystemSelect> systemList = hotTypeAdmin.getDetailSystemList();
|
systemList.remove(detailSystemSelect);
|
detailSystemSelect.setSelected(true);
|
systemList.add(detailSystemSelect);
|
hotTypeList.add(hotTypeAdmin);
|
}
|
|
}
|
}
|
return hotTypeList;
|
}
|
});
|
|
}
|
|
public int getCount(final int detailSystem, final String key) {
|
|
return (int) hotTypeDao.excute(new HibernateCallback<Integer>() {
|
|
@Override
|
public Integer doInHibernate(Session session)
|
throws HibernateException {
|
Query query = null;
|
if(detailSystem==0){
|
query = session.createQuery("select count(*) from HotVideoType sht where sht.type.name like ? ");
|
query.setParameter(0, "%"+key+"%");
|
}else{
|
query= session.createQuery("select count(*) from SuperHotType sht where sht.detailSystem.id=? and sht.hotType.type.name like ? ");
|
query.setParameter(0, detailSystem+"");
|
query.setParameter(1, "%"+key+"%");
|
}
|
return Integer.parseInt(query.uniqueResult()+"");
|
}
|
});
|
|
}
|
|
}
|