diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMessageService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMessageService.java index e6efca8..60b257c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMessageService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysMessageService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.platform.bean.RefUserMessage; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import java.util.List; @@ -40,7 +41,7 @@ public interface ISysMessageService { List listSysMessage(); /** - * 根据id查询消息 + * 根据id查询消息*标记已读 * @param id * @return */ @@ -54,12 +55,12 @@ public interface ISysMessageService { */ ListPager querySysMessageByPager(SysMessage sysMessage, Pager pager); - /** - * 根据id修改消息状态 - * @param id - * @param status - */ - void updateSysMessageStatusById(String id,Integer status); +// /** +// * 根据id修改消息状态 +// * @param id +// * @param status +// */ +// void updateSysMessageStatusById(String id,Integer status); /** * 批量删除系统消息 @@ -67,10 +68,16 @@ public interface ISysMessageService { */ void deleteSysMessageByIds(String[] ids); +// /** +// * 批量修改消息状态 +// * @param ids +// * @param status +// */ +// void updateSysMessageStatusByIds(String[] ids,Integer status); + /** - * 批量修改消息状态 - * @param ids - * @param status + * 添加用户消息关系表 + * @param refUserMessage */ - void updateSysMessageStatusByIds(String[] ids,Integer status); + RefUserMessage insertRefUserMessage(RefUserMessage refUserMessage); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java index a9caf41..c44218c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java @@ -1,14 +1,16 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueueConfig; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -17,11 +19,15 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; /** @@ -44,21 +50,18 @@ public class SysMessageController { @ApiOperation(value = "新增消息",notes = "新增消息") public ResultBean insertSysMessage(SysMessage sysMessage){ try { - // 登录用户 - SessionUser user = AuthUtil.getSessionUser(); - + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 条件校验 ValidatorBean.beginValid(sysMessage) .notNull("messageTitle",sysMessage.getMessageTitle()) .notNull("messageContent",sysMessage.getMessageContent()) - .checkNotZero("messageType",sysMessage.getMessageTypeId()) - .notNull("messageRecipientId",sysMessage.getMessageRecipientId()); + .checkNotZero("messageType",sysMessage.getMessageType()) + .notNull("messageReceiversId",sysMessage.getMessageReceiversId()); - // 添加初始化 - ConvertBean.modelInitialize(sysMessage,user); + // 设置发件人名称 // sysMessage.setMessageSendId(user.getUser().getId()); // sysMessage.setRedSendName(user.getUser().getName()); - sysMessage.setMessageStatusId(ImppEnumUtil.USER_MESSAGE_STATUS.UNREAD.getValue()); + sysMessage.setMessageSendTime(sdf.format(new Date())); sysMessageService.insertSysMessage(sysMessage); return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); @@ -100,11 +103,7 @@ public class SysMessageController { ValidatorBean.beginValid(sysMessage) .notNull("messageTitle",sysMessage.getMessageTitle()) .notNull("messageContent",sysMessage.getMessageContent()) - .checkNotZero("messageType",sysMessage.getMessageTypeId()) - .notNull("messageRecipientId",sysMessage.getMessageRecipientId()); - - // 修改初始化 - ConvertBean.modelUpdate(sysMessage,user); + .checkNotZero("messageType",sysMessage.getMessageType()); sysMessageService.updateSysMessage(sysMessage); return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); @@ -166,23 +165,23 @@ public class SysMessageController { } } - @PutMapping("/status") - public ResultBean updateSysMessageStatusById(String id,Integer status){ - try { - // 条件校验 - ValidatorBean.checkNotNull(id,"id不能为空"); - ValidatorBean.checkNotZero(status,"修改状态值不能为空"); - - sysMessageService.updateSysMessageStatusById(id,status); - return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); - return ResultBean.fail(busExcep.getErrorShow()); - }catch(Exception e){ - LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); - return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); - } - } +// @PutMapping("/status") +// public ResultBean updateSysMessageStatusById(String id,Integer status){ +// try { +// // 条件校验 +// ValidatorBean.checkNotNull(id,"id不能为空"); +// ValidatorBean.checkNotZero(status,"修改状态值不能为空"); +// +// sysMessageService.updateSysMessageStatusById(id,status); +// return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// }catch(ImppBusiException busExcep){ +// LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); +// return ResultBean.fail(busExcep.getErrorShow()); +// }catch(Exception e){ +// LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); +// return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); +// } +// } @DeleteMapping("/batch-delete") @ApiOperation(value = "批量删除消息",notes = "批量删除消息") @@ -208,28 +207,28 @@ public class SysMessageController { } } - @PutMapping("/batch-status") - @ApiOperation(value = "批量切换消息状态",notes = "批量切换消息状态") - public ResultBean updateSysMessageStatusByIds(String[] ids,Integer status){ - try{ - // 条件判断 - ValidatorBean.checkNotZero(status,"状态不能为空"); - ids = ConvertBean.modelSafeArrayNumber(ids,true); - if(ids.length == 0){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("请选择需要操作的资源。") - .build(); - } - sysMessageService.updateSysMessageStatusByIds(ids,status); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); - return ResultBean.fail(busExcep.getErrorShow()); - }catch(Exception e){ - LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); - return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); - } - } +// @PutMapping("/batch-status") +// @ApiOperation(value = "批量切换消息状态",notes = "批量切换消息状态") +// public ResultBean updateSysMessageStatusByIds(String[] ids,Integer status){ +// try{ +// // 条件判断 +// ValidatorBean.checkNotZero(status,"状态不能为空"); +// ids = ConvertBean.modelSafeArrayNumber(ids,true); +// if(ids.length == 0){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("请选择需要操作的资源。") +// .build(); +// } +// sysMessageService.updateSysMessageStatusByIds(ids,status); +// return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// }catch(ImppBusiException busExcep){ +// LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); +// return ResultBean.fail(busExcep.getErrorShow()); +// }catch(Exception e){ +// LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); +// return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); +// } +// } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java index 488c088..df83638 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.mq; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Queue; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -13,11 +14,16 @@ import org.springframework.context.annotation.Configuration; * @CreateDate : 2018-09-26 16:57 * @Modify: **/ +@ConditionalOnExpression("'${spring.core.rabbitmq:true}' == 'true'") @Configuration public class I3CoreQueueConfig { private static final Logger LOGGER = LoggerFactory.getLogger(I3CoreQueueConfig.class); public static final String IMPP_MESSAGE_QUEUE = "IMPP_MESSAGE_QUEUE"; + + public static final String IMPP_MESSAGE_MAIL_QUEUE = "IMPP_MESSAGE_MAIL_QUEUE"; + public static final String IMPP_MESSAGE_LETTER_QUEUE = "IMPP_MESSAGE_LETTER_QUEUE"; + @Bean public Queue getImppMessageQueue() { LOGGER.info("【开启平台消息队列】"); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/LetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/LetterQueueReceiver.java new file mode 100644 index 0000000..c547242 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/LetterQueueReceiver.java @@ -0,0 +1,61 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.pojo.platform.bean.RefUserMessage; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import com.rabbitmq.client.Channel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +/** + * @Description : 站内信队列处理 + * @Reference : + * @Author : yunhao + * @CreateDate : 2018-11-15 22:35 + * @Modify: + **/ +@Component +public class LetterQueueReceiver { + private static final Logger LOGGER = LoggerFactory.getLogger(LetterQueueReceiver.class); + + @Autowired + ISysMessageService sysMessageService; + @Autowired + ISysUserService sysUserService; + + /** + * 站内信处理队列 + * @param msg + * @param channel + * @param message + * 发送:rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_QUEUE, new SysMessage(....)); + */ +// @RabbitListener(queues = I3CoreQueueConfig.IMPP_MESSAGE_QUEUE) + @RabbitListener(queues = I3CoreQueueConfig.IMPP_MESSAGE_LETTER_QUEUE) + public void processImppMessage(RefUserMessage msg, Channel channel, Message message) { + try { + LOGGER.info("【MQ-IMPP_MESSAGE_QUEUE】数据接收成功:{}",msg); + + sysMessageService.insertRefUserMessage(msg); + + //信息已处理 + channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); + } catch (IOException e) { + LOGGER.error("【MQ-IMPP_MESSAGE_QUEUE】处理出错:{}",e.getMessage(),e); + //丢弃这条消息 + try { + // 未成功处理,重新发送 + channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MailQueueReceiver.java new file mode 100644 index 0000000..9fd3e04 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MailQueueReceiver.java @@ -0,0 +1,80 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysMessageService; +import cn.estsh.i3plus.core.apiservice.util.MailUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.RefUserMessage; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.repository.RefUserMessageRepository; +import com.rabbitmq.client.Channel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @Description : 邮件队列处理 + * @Reference : + * @Author : yunhao + * @CreateDate : 2018-11-15 22:15 + * @Modify: + **/ +@Component +public class MailQueueReceiver { + private static final Logger LOGGER = LoggerFactory.getLogger(MailQueueReceiver.class); + + @Autowired + ISysMessageService sysMessageService; + @Autowired + ISysUserService sysUserService; + + /** + * 系统邮件处理队列 + * @param msg + * @param channel + * @param message + */ + @RabbitListener(queues = I3CoreQueueConfig.IMPP_MESSAGE_MAIL_QUEUE) + public void processImppMail(RefUserMessage msg, Channel channel, Message message) { + try { + Thread.sleep(18000); + LOGGER.info("【MQ-IMPP_MESSAGE_QUEUE】数据接收成功:{}",msg); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + msg.setReceiverTime(sdf.format(new Date())); + sysMessageService.insertRefUserMessage(msg); + + SysMessage sysMessage = sysMessageService.getSysMessageById(msg.getMessageId().toString()); + SysUser sysUser = sysUserService.getSysUserById(msg.getReceiverId().toString()); + + MailUtil mailUtil = new MailUtil(); + mailUtil.setSubject(sysMessage.getMessageTitle()); + mailUtil.setContentType(ImppEnumUtil.MESSAGE_CONTENT_TYPE.valueOfDescription(sysMessage.getMessageContentType())); + mailUtil.setBody(sysMessage.getMessageContent()); + mailUtil.setTo(sysUser.getUserEmail()); + mailUtil.send(); + + //信息已处理 + channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); + } catch (IOException e) { + LOGGER.error("【MQ-IMPP_MESSAGE_QUEUE】处理出错:{}",e.getMessage(),e); + //丢弃这条消息 + try { + // 未成功处理,重新发送 + channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true); + } catch (IOException e1) { + e1.printStackTrace(); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java index d83b7ec..6306f81 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysMessageService.java @@ -1,23 +1,22 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueueConfig; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.base.tool.HqlPack; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.RefUserMessage; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.i3plus.pojo.platform.bean.SysUser; -import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; +import cn.estsh.i3plus.pojo.platform.repository.RefUserMessageRepository; import cn.estsh.i3plus.pojo.platform.repository.SysMessageRepository; -import cn.estsh.i3plus.pojo.platform.repository.SysUserInfoRepository; import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; -import cn.estsh.impp.framework.boot.util.ValidatorBean; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,45 +34,61 @@ public class SysMessageService implements ISysMessageService { public static final Logger LOGGER = LoggerFactory.getLogger(SysMessageService.class); @Autowired - public SysMessageRepository sysMessageRDao; - + private SysMessageRepository sysMessageRDao; + @Autowired + private RefUserMessageRepository refUserMessageRDao; @Autowired - public SysUserRepository sysUserRDao; + private SysUserRepository sysUserRDao; + /** + * rabbitMQ队列 + */ @Autowired - private SysUserInfoRepository userInfoRDao; + private RabbitTemplate rabbitTemplate; @Override public SysMessage insertSysMessage(SysMessage sysMessage) { - // 查询接收人名称 - if (sysMessage.getMessageRecipientId() != null && sysMessage.getMessageRecipientId() > 0) { - LOGGER.info("用户信息 SYSUSER id:{}", sysMessage.getMessageRecipientId()); - SysUserInfo userInfo = userInfoRDao.getById(sysMessage.getMessageRecipientId()); - - sysMessage.setRedMessageRecipientName(userInfo.getName()); + sysMessage = sysMessageRDao.insert(sysMessage); + + String[] messageReceiver = sysMessage.getMessageReceiversId().split(","); + // 收件人名称集合 + String[] receiverName = new String[messageReceiver.length]; + RefUserMessage refUserMessage; + SysUser sysUser; + + for (int i = 0; i < messageReceiver.length; i++) { + sysUser = sysUserRDao.getById(Long.parseLong(messageReceiver[i])); + receiverName[i] = sysUser.getUserName(); + + refUserMessage = new RefUserMessage(); + refUserMessage.setMessageId(sysMessage.getId()); + refUserMessage.setMessageTitleRdd(sysMessage.getMessageTitle()); + refUserMessage.setMessageTypeRdd(sysMessage.getMessageType()); + refUserMessage.setReceiverId(sysUser.getId()); + refUserMessage.setReceiverNameRdd(sysUser.getUserName()); + + // 判断消息类型推送到对应的队列 + if(ImppEnumUtil.USER_MESSAGE_TYPE.MAIL.getValue() == sysMessage.getMessageType().intValue()){ + rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_MAIL_QUEUE,refUserMessage); + }else{ + rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_LETTER_QUEUE,refUserMessage); + } } - LOGGER.info("消息 SYS_MESSAGE :{}",sysMessage); - return sysMessageRDao.insert(sysMessage); + sysMessage.setMessageSenderNameRdd(StringUtils.join(receiverName, ",")); + sysMessageRDao.update(sysMessage); + return sysMessage; } @Override public void deleteSysMessageById(String id) { LOGGER.info("消息 SYS_MESSAGE id:{}",id); + refUserMessageRDao.deleteByProperty("messageId",Long.parseLong(id)); sysMessageRDao.deleteById(Long.parseLong(id)); - } @Override public void updateSysMessage(SysMessage sysMessage){ - // 查询接收人名称 - if (sysMessage.getMessageRecipientId() != null && sysMessage.getMessageRecipientId() > 0) { - LOGGER.info("用户信息 SYSUSER id:{}", sysMessage.getMessageRecipientId()); - SysUserInfo userInfo = userInfoRDao.getById(sysMessage.getMessageRecipientId()); - - sysMessage.setRedMessageRecipientName(userInfo.getName()); - } - LOGGER.info("消息 SYS_MESSAGE :{}",sysMessage); sysMessageRDao.update(sysMessage); } @@ -103,11 +118,11 @@ public class SysMessageService implements ISysMessageService { } } - @Override - public void updateSysMessageStatusById(String id, Integer status) { - LOGGER.info("消息 SYS_MESSAGE id:{},status:{}",id,status); - sysMessageRDao.updateByProperties("id",Long.parseLong(id),"messageStatusId", status); - } +// @Override +// public void updateSysMessageStatusById(String id, Integer status) { +// LOGGER.info("消息 SYS_MESSAGE id:{},status:{}",id,status); +// sysMessageRDao.updateByProperties("id",Long.parseLong(id),"messageStatusId", status); +// } @Override public void deleteSysMessageByIds(String[] ids) { @@ -120,12 +135,17 @@ public class SysMessageService implements ISysMessageService { sysMessageRDao.deleteByIds(array); } - @Override - public void updateSysMessageStatusByIds(String[] ids,Integer status) { - LOGGER.info("消息 SYS_MESSAGE ids:{},status:{}",ids,status); - StringBuffer where = new StringBuffer(); - HqlPack.getInPack(String.join(",", ids), "id", where); +// @Override +// public void updateSysMessageStatusByIds(String[] ids,Integer status) { +// LOGGER.info("消息 SYS_MESSAGE ids:{},status:{}",ids,status); +// StringBuffer where = new StringBuffer(); +// HqlPack.getInPack(String.join(",", ids), "id", where); +// +// sysMessageRDao.updateByHqlWhere(where.toString(), "messageStatusId", status); +// } - sysMessageRDao.updateByHqlWhere(where.toString(), "messageStatusId", status); + @Override + public RefUserMessage insertRefUserMessage(RefUserMessage refUserMessage) { + return refUserMessageRDao.insert(refUserMessage); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java index 10e1446..d780b0b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java @@ -1,16 +1,17 @@ package cn.estsh.i3plus.core.apiservice.util; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.support.PropertiesLoaderUtils; -import sun.misc.BASE64Encoder; import javax.mail.*; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeUtility; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.Properties; /** @@ -145,9 +146,6 @@ public class MailUtil { */ public void send() { try { - // 乱码 - BASE64Encoder enc = new BASE64Encoder(); - Properties server = new Properties(); server.put("mail.smtp.port", String.valueOf(this.smtpPort)); server.put("mail.smtp.host", this.smtpHost); @@ -159,7 +157,8 @@ public class MailUtil { MimeMessage msg = new MimeMessage(conn); if (nick != null && !"".equals(nick)) { - msg.setSubject("=?GB2312?B?" + enc.encode(nick.getBytes())+ "?="); + + msg.setSubject( MimeUtility.encodeText(nick, MimeUtility.mimeCharset("gb2312"), null)); msg.setFrom(new InternetAddress(nick + " <" + from + ">")); } else { msg.setFrom(new InternetAddress(this.from)); @@ -173,10 +172,9 @@ public class MailUtil { msg.setRecipients(Message.RecipientType.CC, this.cc); } - msg.setSubject("=?GB2312?B?" + enc.encode(this.title.getBytes())+ "?="); + msg.setSubject( MimeUtility.encodeText(this.title, MimeUtility.mimeCharset("gb2312"), null)); msg.setSubject(this.title); - // 是HTML格式的邮件 msg.setContent(this.content, this.content_type); msg.saveChanges(); @@ -193,10 +191,17 @@ public class MailUtil { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); } } - public boolean isHtmlModeMail() { - return this.content_type.equals(CommonConstWords.MAIL_MODE_HTML); + public static void main(String[] args) { + MailUtil mail = new MailUtil(); + mail.setTo("yunhao.wang@estsh.com"); + mail.setSubject("中文"); + mail.setContentType(ImppEnumUtil.MESSAGE_CONTENT_TYPE.HTML.getDescription()); + mail.setBody("内容"); + mail.send(); } } diff --git a/modules/i3plus-core-apiservice/src/main/resources/application.properties b/modules/i3plus-core-apiservice/src/main/resources/application.properties index 58de670..8155487 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application.properties @@ -29,4 +29,7 @@ server.tomcat.uri-encoding=UTF-8 spring.mvc.view.prefix=/upload_demo spring.mvc.view.suffix=.jsp #静态文件访问配置 -spring.resources.static-locations=/static/**,/** \ No newline at end of file +spring.resources.static-locations=/static/**,/** + +########## CORE-MQ ######## +spring.core.rabbitmq=false \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/mq/MailUtil.java b/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/mq/MailUtil.java new file mode 100644 index 0000000..6a5d078 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/mq/MailUtil.java @@ -0,0 +1,45 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import org.junit.Test; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2018-11-15 13:22 + * @Modify: + **/ +public class MailUtil extends TestBase { + + /** + * rabbitMQ队列 + */ + @Autowired + private RabbitTemplate rabbitTemplate; + + @Test + public void sendMail() throws InterruptedException { + + SysMessage sysMessage = new SysMessage(); + sysMessage.setMessageTitle("test-系统通知"); + sysMessage.setMessageSenderNameRdd("system"); + sysMessage.setMessageSenderId(-1L); + sysMessage.setMessageType(ImppEnumUtil.USER_MESSAGE_TYPE.MAIL.getValue()); + sysMessage.setMessageSendTime("2018-11-01 16:58:00"); + + for (int i = 0; i < 50; i++) { + sysMessage = new SysMessage(); + sysMessage.setId(null); + sysMessage.setMessageTitle( i + "mail测试"); + sysMessage.setMessageSenderNameRdd(i+""); + rabbitTemplate.convertAndSend("WYH_MESSAGE_QUEUE", new SysMessage()); + System.out.println("第" + i + "次"); + } + + } +} diff --git a/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestMessageServiceImpl.java b/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestMessageServiceImpl.java index 36fade5..6f6b6cb 100644 --- a/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestMessageServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/test/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestMessageServiceImpl.java @@ -56,13 +56,10 @@ public class TestMessageServiceImpl extends TestBase { public void testInsertSysMessage() { SysMessage sysMessage = new SysMessage(); sysMessage.setMessageTitle("test-系统通知"); - sysMessage.setRedSendName("system"); - sysMessage.setMessageSendId(-1L); - sysMessage.setRedMessageRecipientName("admin"); - sysMessage.setMessageRecipientId(-1L); - sysMessage.setMessageTypeId(ImppEnumUtil.USER_MESSAGE_TYPE.NOTICE.getValue()); - sysMessage.setMessageStatusId(ImppEnumUtil.USER_MESSAGE_STATUS.UNREAD.getValue()); - sysMessage.setCreateDatetime("2018-11-01 16:58:00"); + sysMessage.setMessageSenderNameRdd("system"); + sysMessage.setMessageSenderId(-1L); + sysMessage.setMessageType(ImppEnumUtil.USER_MESSAGE_TYPE.MAIL.getValue()); + sysMessage.setMessageSendTime("2018-11-01 16:58:00"); for (int i = 0; i < 50; i++) { sysMessage.setId(null);