package com.yeshi.fanli.service.impl.user; import java.io.Serializable; 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.fanli.dao.config.SystemZnxDao; import com.yeshi.fanli.dao.user.AccountMessageDao; import com.yeshi.fanli.dao.user.UserInfoDao; import com.yeshi.fanli.entity.bus.user.AccountMessage; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.system.SystemZnx; import com.yeshi.fanli.service.inter.user.AccountMessageService; import com.yeshi.fanli.util.Constant; @Service public class AccountMessageServiceImpl implements AccountMessageService { @Resource private AccountMessageDao dao; @Resource private UserInfoDao userInfoDao; @Resource private SystemZnxDao systemZnxDao; @Resource private AccountMessageService accountMessageService; @Override public List findAccountMessageList(long uid, int page) { return dao.list("from AccountMessage am where am.userInfo.id=? order by id desc", (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, new Serializable[] { uid }); } @Override public int getCount(long uid) { return (int) dao.getCount("select count(*) from AccountMessage am where am.userInfo.id=?", new Serializable[] { uid }); } @Override public void open(long id) { AccountMessage find = dao.find(AccountMessage.class, id); if (find != null) { find.setIsOpen(true); dao.update(find); } } @Override public int getCanOpenCount(long uid) { return (int) dao.getCount("select count(*) from AccountMessage am where am.userInfo.id=? and am.isOpen=0", new Serializable[] { uid }); } @Override public void save(AccountMessage accountMessage) { if (accountMessage != null) dao.save(accountMessage); } @SuppressWarnings("unchecked") @Override public void syncSystemZnx(long uid) { UserInfo userInfo = userInfoDao.find(UserInfo.class, uid); if (userInfo == null) return; List list = (List) systemZnxDao.excute(new HibernateCallback>() { @SuppressWarnings("unchecked") @Override public List doInHibernate(Session session) throws HibernateException { List result = session .createSQLQuery( "SELECT sm.* FROM `yeshi_ec_system_msg` sm LEFT JOIN (SELECT * FROM `yeshi_ec_account_message` a WHERE a.`uid`=? AND a.`system_msg_id` IS NOT NULL) s ON s.`system_msg_id`=sm.`id` WHERE s.`system_msg_id` IS NULL and sm.createTime>=" + userInfo.getCreatetime()) .addEntity(SystemZnx.class).setParameter(0, uid).list(); if (result != null) { List list = (List) result; return list; } return null; } }); if (list != null) for (SystemZnx systemZnx : list) { AccountMessage accountMessage = new AccountMessage(); accountMessage.setTitle(systemZnx.getTitle()); accountMessage.setContent(systemZnx.getContent()); accountMessage.setCreateTime(systemZnx.getCreateTime()); accountMessage.setIsOpen(false); accountMessage.setUserInfo(new UserInfo(uid)); accountMessage.setSystemMsgId(systemZnx.getId()); accountMessageService.save(accountMessage); } } }