package com.newvideo.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.newvideo.dao.SuperUserBannerDao; import com.newvideo.dao.UserBannerDao; import com.newvideo.domain.DetailSystem; import com.newvideo.domain.SuperUserBanner; import com.newvideo.domain.SystemInfo; import com.newvideo.domain.UserBanner; import com.newvideo.domain.web.DetailSystemSelect; import com.newvideo.domain.web.UserBannerAdmin; import com.newvideo.util.Constant; @Service public class UserBannerService { @Resource private UserBannerDao userBannerDao; @Resource private SuperUserBannerDao superUserBannerDao; public SuperUserBannerDao getSuperUserBannerDao() { return superUserBannerDao; } public void setSuperUserBannerDao(SuperUserBannerDao superUserBannerDao) { this.superUserBannerDao = superUserBannerDao; } public UserBannerDao getUserBannerDao() { return userBannerDao; } public void setUserBannerDao(UserBannerDao userBannerDao) { this.userBannerDao = userBannerDao; } public List getUserBanner() { List list = userBannerDao.list("from UserBanner"); return list; } public List getUserBanner(SystemInfo system) { List list = userBannerDao.list("from UserBanner u where u.system.id=" + system.getId()); return list; } public UserBanner getUserBannerById(String id) { return userBannerDao.find(UserBanner.class, id); } public void updateUserBanner(UserBanner userBanner) { userBannerDao.update(userBanner); } public long getUserBannerCount() { return userBannerDao.getCount("select count(*) from UserBanner"); } @SuppressWarnings("unchecked") public void deleteUserBanner(final String id) { userBannerDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { List list = session.createQuery("from SuperUserBanner sv where sv.userBanner.id=?") .setParameter(0, id).list(); session.getTransaction().begin(); for (SuperUserBanner sv : list) session.delete(sv); session.delete(new UserBanner(id)); session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } public void addUserBanner(UserBanner banner) { userBannerDao.create(banner); } @SuppressWarnings("unchecked") public List getUserBannerAdmin(final int detailSystem, final int page) { return (List) userBannerDao.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.userBanner from SuperUserBanner sh where sh.detailSystem.id=" + detailSystem + " order by sh.createtime desc"; else sql = "from UserBanner sh order by sh.createtime desc"; List list = session.createQuery(sql).setFirstResult((page - 1) * Constant.pageCount) .setMaxResults(Constant.pageCount).list(); for (UserBanner vb : list) { List detailSystemS = session .createQuery("select vb.detailSystem from SuperUserBanner vb where vb.userBanner.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; } } } SuperUserBanner sz = new SuperUserBanner(); sz.setDetailSystem(null); sz.setUserBanner(vb); zhiBoClassList.add(new UserBannerAdmin(sz, dssList)); } } catch (Exception e) { e.printStackTrace(); } return zhiBoClassList; } }); } public long getUserBannerAdminCount(int detailSystem) { String sql = ""; if (detailSystem > 0) sql = "select count(*) from wk_video_super_userbanner zb where zb.detailsystem=" + detailSystem; else sql = "select count(*) from wk_video_user_banner"; return userBannerDao.getCountSQL(sql); } @SuppressWarnings({ "unchecked", "rawtypes" }) public void deleteUserBannerAdmin(final String userbannerid, final String detailSystemId) { userBannerDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { List list = session .createQuery("from SuperUserBanner vb where vb.userBanner.id=? and vb.detailSystem.id=?") .setParameter(0, userbannerid).setParameter(1, detailSystemId).list(); session.getTransaction().begin(); if (list != null && list.size() > 0) { for (SuperUserBanner vb : list) session.delete(vb); } session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } /** * 用户banner */ public List getUserBannerList(String detailSystem) { return userBannerDao .list("select hs.userBanner FROM SuperUserBanner hs where hs.detailSystem.id=" + detailSystem); } public void addSuperUserBanner(SuperUserBanner sv) { List list = superUserBannerDao.list("from SuperUserBanner sv where sv.userBanner.id=" + sv.getUserBanner().getId() + " and sv.detailSystem.id=" + sv.getDetailSystem().getId()); if (list != null && list.size() > 0) return; superUserBannerDao.create(sv); } public void updateSuperUserBanner(SuperUserBanner hotSearch) { superUserBannerDao.update(hotSearch); } public void deleteSuperUserBanner(SuperUserBanner hotSearch) { superUserBannerDao.delete(hotSearch); } @SuppressWarnings("unchecked") public void updateSuperUserBannerList(final String detailSystemId, final List typeList) { userBannerDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { List list = session .createQuery("from SuperUserBanner sh where sh.detailSystem.id=" + detailSystemId).list(); session.getTransaction().begin(); for (SuperUserBanner ad : list) { session.delete(ad); } for (SuperUserBanner videoType : typeList) { session.persist(videoType); } session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } }