package com.newvideo.service.imp; import java.util.List; import java.util.Map; 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.ImageInfoDao; import com.newvideo.dao.WeiXinImageDao; import com.newvideo.dao.WeiXinInfoDao; import com.newvideo.domain.ImageInfo; import com.newvideo.domain.WeiXinImage; import com.newvideo.domain.WeiXinInfo; import com.newvideo.util.Constant; import com.newvideo.util.LogUtil; import com.newvideo.util.StringUtil; @Service public class WeiXinService { @Resource private WeiXinInfoDao weiXinInfoDao; @Resource private WeiXinImageDao weiXinImageDao; @Resource private ImageService imageService; @Resource private ImageInfoDao imageInfoDao; public ImageInfoDao getImageInfoDao() { return imageInfoDao; } public void setImageInfoDao(ImageInfoDao imageInfoDao) { this.imageInfoDao = imageInfoDao; } public ImageService getImageService() { return imageService; } public void setImageService(ImageService imageService) { this.imageService = imageService; } public WeiXinImageDao getWeiXinImageDao() { return weiXinImageDao; } public void setWeiXinImageDao(WeiXinImageDao weiXinImageDao) { this.weiXinImageDao = weiXinImageDao; } public WeiXinInfoDao getWeiXinInfoDao() { return weiXinInfoDao; } public void setWeiXinInfoDao(WeiXinInfoDao weiXinInfoDao) { this.weiXinInfoDao = weiXinInfoDao; } public void addWeiXinImage(WeiXinInfo info, String lastPic) { if (info.getType().equalsIgnoreCase("1")) {// 个人号 WeiXinImage img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(1 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(2 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(3 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(4 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); } else {// 公众号 ImageInfo lastInfo = null; List infoList = imageInfoDao.list("from ImageInfo info where info.url=?", new String[] { lastPic }); if (infoList.size() > 0) lastInfo = infoList.get(0); else { lastInfo = new ImageInfo(); lastInfo.setCreatetime(System.currentTimeMillis() + ""); lastInfo.setUrl(lastPic); lastInfo.setId(imageInfoDao.save(lastInfo).toString()); } WeiXinImage img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(5 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(new ImageInfo(6 + "")); img.setWeiXinInfo(info); weiXinImageDao.create(img); img = new WeiXinImage(); img.setCreatetime(System.currentTimeMillis() + ""); img.setImageInfo(lastInfo); img.setWeiXinInfo(info); weiXinImageDao.create(img); } } public WeiXinInfo addWeiXinInfo(WeiXinInfo info) { weiXinInfoDao.create(info); return weiXinInfoDao.list("from WeiXinInfo w where w.createtime=" + info.getCreatetime()).get(0); } public List getWeiXinList() { return weiXinInfoDao.list("from WeiXinInfo"); } public List getWeiXinList(String key, int pageIndex) { return weiXinInfoDao.list("from WeiXinInfo w where w.nickName like ?", (pageIndex - 1) * Constant.pageCount, Constant.pageCount, new String[] { "%" + key + "%" }); } public long getWeiXinListCount(String key) { return weiXinInfoDao.getCount("select count(*) from WeiXinInfo w where w.nickName like ?", new String[] { "%" + key + "%" }); } public WeiXinInfo getWeiXinInfo(String id) { return weiXinInfoDao.find(WeiXinInfo.class, id); } // 更新微信 public void updateWeiXinInfo(WeiXinInfo info) { weiXinInfoDao.update(info); } public void updateWeiXinInfo(WeiXinInfo info, String lastPic) { if (!StringUtil.isNullOrEmpty(lastPic) && info.getType().equalsIgnoreCase("2")) {// 公众号 ImageInfo imgInfo = null; imgInfo = imageService.getImageByUrl(lastPic); if (imgInfo == null) { imgInfo = new ImageInfo(); imgInfo.setCreatetime(System.currentTimeMillis() + ""); imgInfo.setUrl(lastPic); imgInfo.setId(imageService.saveImage(imgInfo).toString()); } List wxiList = weiXinImageDao .list("from WeiXinImage wi where wi.weiXinInfo.id=" + info.getId()); if (wxiList != null && wxiList.size() > 0) weiXinImageDao.delete(wxiList.get(2)); WeiXinImage wxi = new WeiXinImage(); wxi.setCreatetime(System.currentTimeMillis() + ""); wxi.setImageInfo(imgInfo); wxi.setWeiXinInfo(info); weiXinImageDao.create(wxi); } weiXinInfoDao.update(info); } public void deleteWeiXinInfo(final WeiXinInfo info) { weiXinInfoDao.delete(info); weiXinInfoDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { try { session.getTransaction().begin(); session.delete(info); session.createQuery("delete from WeiXinImage w where w.weiXinInfo.id=" + info.getId()) .executeUpdate(); session.flush(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } return null; } }); } ConfigService configService; public ConfigService getConfigService() { return configService; } public void setConfigService(ConfigService configService) { this.configService = configService; } private WeiXinInfo getWeiXin(List list) { OtherService service = new OtherService(); Map map = configService.getConfigAsMap(); String time = map.get("weixin_change_time"); int miniute = (int) ((System.currentTimeMillis() / (1000 * 60L)) % (24 * 60)); int size = list.size(); int position = miniute % (size * Integer.parseInt(time)) / Integer.parseInt(time); LogUtil.i(position + ""); if (position >= size) position = size - 1; if (position < 0) position = 0; list.get(position).setImageList(imageInfoDao .list("select w.imageInfo from WeiXinImage w where w.weiXinInfo.id=" + list.get(position).getId())); return list.get(position); } public List getWeiXinImageList(String id) { return imageInfoDao.list("select wx.imageInfo from WeiXinImage wx where wx.weiXinInfo.id=" + id); } public WeiXinInfo getWeiXinInfoById(String id) { List list = null; if (StringUtil.isNullOrEmpty(id)) { list = weiXinInfoDao.list("from WeiXinInfo w where w.weight>0 order by w.id"); return getWeiXin(list); } else { WeiXinInfo info = weiXinInfoDao.find(WeiXinInfo.class, id); info.setImageList(getWeiXinImageList(id)); return info; } } // 获取需要推广的微信号列表 public List getRandomWeiXinList() { return weiXinInfoDao.list("from WeiXinInfo w where w.weight=-1 order by w.id"); } }