package com.norteksoft.portal.service; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import com.norteksoft.acs.entity.organization.User; import com.norteksoft.acs.service.organization.UserManager; import com.norteksoft.portal.base.enumeration.MessageType; import com.norteksoft.portal.dao.MessageInfoDao; import com.norteksoft.portal.entity.Message; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; @Service @Transactional public class MessageInfoManager { private Log log = LogFactory.getLog(MessageInfoManager.class); @Autowired private MessageInfoDao messageDao; @Autowired private UserManager userManager; /** * 保存 * @param message */ public void saveMessage(Message message){ this.messageDao.save(message); } /** * 得到 * @param id */ public Message getMessage(Long id){ Message message = this.messageDao.get(id); return message; } /** * 删除 * @param id */ public void deleteMessage(Long id){ this.messageDao.delete(id); } /** *删除多个 * @param ids */ public int deleteMessage(String ids){ int number=0; if(StringUtils.isNotEmpty(ids)){ String[] strId =ids.split(","); for (String str : strId) { deleteMessage(Long.valueOf(str)); number++; } } return number; } /** * 设置读取状态 * @param ids * @param bl * @return */ public int setMessageState(String ids,boolean bl){ int number=0; if(StringUtils.isNotEmpty(ids)){ String[] strId =ids.split(","); for (String str : strId) { Message message = getMessage(Long.valueOf(str)); message.setVisible(bl); saveMessage(message); number++; } } return number; } /** * 设置读取状态 * @param ids * @param bl * @return */ public void setMessageState(Long id,boolean bl){ Message message = getMessage(id); message.setVisible(bl); saveMessage(message); } /** * 设置读取状态 * @param ids * @param bl * @return */ public void setMessageState(Message message,boolean bl){ message.setVisible(bl); saveMessage(message); } public int deleteMessage(String loginName,Long companyId,MessageType messageType){ int number=0; List<Message> messages=getMessages(loginName, companyId, messageType); if(messages!=null&&!messages.isEmpty()){ for (Message message : messages) { deleteMessage(message); number++; } } return number; } public void deleteMessage(Message message){ this.messageDao.delete(message); } /** * 增加系统信息 * @param systemCode //系统code * @param name //发起人真实名字 * @param loginName//发起人登陆名 * @param receiverLoginName//收件人登陆名 * @param type//类型 * @param message//信息 * @param url//打开任务的地址"/public/index.htm" */ public void saveMessage(String systemCode,String name,String loginName,String receiverLoginName,String type,String info,String url,MessageType messageType){ Message message = new Message(); Assert.notNull(ContextUtils.getCompanyId(), "companyId不能为null"); message.setCompanyId(ContextUtils.getCompanyId()); message.setSender(name); message.setSenderLoginName(loginName); User user=userManager.getUserByLoginName(receiverLoginName); if(user==null){ log.debug("与receiverLoginName对应的用户不能为null"); throw new RuntimeException("与receiverLoginName对应的用户不能为null"); } message.setReceiver(user.getName()); message.setReceiverLoginName(user.getLoginName()); message.setCreatedTime(new Date()); message.setCategory(type); message.setMessageType(messageType); if(StringUtils.isNotEmpty(url)) message.setUrl(url.trim()); message.setContent(info); message.setSystemCode(systemCode); this.messageDao.save(message); } /** * 只能是在线消息用(需要打开页面的时候用(swing中用)) * @param systemCode * @param name * @param loginName * @param receiverLoginName * @param type * @param info * @param url * @param flag */ public void saveMessageToPortal(String systemCode,String name,String loginName,String receiverLoginName,String type,String info,String url,MessageType messageType){ User user=userManager.getUserByLoginName(receiverLoginName); if(user!=null){ Message message = new Message(); message.setCompanyId(ContextUtils.getCompanyId()); message.setSenderLoginName(loginName); message.setReceiver(user.getName()); message.setReceiverLoginName(user.getLoginName()); message.setCreatedTime(new Date()); message.setMessageType(messageType); if(messageType==MessageType.ONLINE_MESSAGE){ message.setSender(name); message.setCategory(type); }else{ message.setSender("系统"); message.setCategory("系统消息"); } message.setContent(info); message.setSystemCode(systemCode); this.messageDao.save(message); if(StringUtils.isNotEmpty(url)){ if(url.trim().contains("isOpen=")){ message.setUrl(url.trim()+message.getId()); }else{ message.setUrl(url.trim()+message.getId()+"&isOpen=true"); } } } } /** * 根据登陆名得到信息 * @param loginName * @param companyId * @param bl true为没有看过的,false为查看过的 * @return */ public List<Message> getMessages(String receiverLoginName,Long companyId,boolean read){ return this.messageDao.find("from Message m where m.receiverLoginName=? and m.companyId=? and m.visible=? order by m.createdTime desc", receiverLoginName,companyId,read); } public Page<Message> getMessages(Page<Message> page,String receiverLoginName,Long companyId,boolean read){ return this.messageDao.findPage(page,"from Message m where m.receiverLoginName=? and m.companyId=? and m.visible=? order by m.createdTime desc", receiverLoginName,companyId,read); } public List<Message> getMessageList(String receiverLoginName,Long companyId,boolean read){ return this.messageDao.find("from Message m where m.receiverLoginName=? and m.companyId=? and m.visible=? order by m.createdTime desc", receiverLoginName,companyId,read); } public List<Message> getMessages(String receiverLoginName,Long companyId,MessageType MessageType){ return this.messageDao.find("from Message m where m.receiverLoginName=? and m.companyId=? and m.messageType=? order by m.createdTime desc", receiverLoginName,companyId,MessageType); } public Page<Message> getMessages(Page<Message> page,String receiverLoginName,Long companyId,MessageType messageType){ return this.messageDao.findPage(page,"from Message m where m.receiverLoginName=? and m.companyId=? and m.messageType=? order by m.createdTime desc", receiverLoginName,companyId,messageType); } }