From 82b8371747814d020e30ff977d21beae09c82ae4 Mon Sep 17 00:00:00 2001 From: "yunhao.wang" Date: Tue, 30 Apr 2019 19:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=8E=A5=E5=8F=A3=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/ISysMessageService.java | 4 +- .../controller/busi/SysMessageController.java | 466 ++++++++++++++------- .../apiservice/mq/MessageLetterQueueReceiver.java | 6 +- .../apiservice/mq/MessageMailQueueReceiver.java | 5 +- .../mq/MessageSWebNoticeQueueReceiver.java | 42 +- .../serviceimpl/busi/SysMessageService.java | 4 +- 6 files changed, 362 insertions(+), 165 deletions(-) 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 f6b30d3..2270dff 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 @@ -131,12 +131,12 @@ public interface ISysMessageService { * @param id */ @ApiOperation(value = "删除用户消息") - void deleteSysRefUserMessageStatusById(Long id); + void deleteSysRefUserMessageById(Long id); /** * 批量删除用户消息 * @param ids */ @ApiOperation(value = "批量删除用户消息") - void deleteSysRefUserMessageStatusByIds(Long[] ids); + void deleteSysRefUserMessageByIds(Long[] ids); } 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 d178f02..0f442d7 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 @@ -5,7 +5,6 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; -import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -13,11 +12,9 @@ import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.MessagePagerModel; import cn.estsh.i3plus.pojo.model.platform.RefUserMessagePagerModel; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage; import cn.estsh.impp.framework.base.controller.CoreBaseController; -import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; @@ -43,7 +40,7 @@ import java.util.stream.Collectors; * @Modify : **/ @RestController -@RequestMapping(PlatformConstWords.BASE_URL) +@RequestMapping("/impp") @Api(description = "消息管理服务") public class SysMessageController extends CoreBaseController { public static final Logger LOGGER = LoggerFactory.getLogger(SysMessageController.class); @@ -54,9 +51,273 @@ public class SysMessageController extends CoreBaseController { @Autowired private ISysUserService sysUserService; - @PostMapping(value = "/sys-message/insert") + /*************************************************** 平台系统消息 **************************************************/ + + /** + * CORE - 新增消息 + * @param sysMessage + * @return + */ + @PostMapping(value = "/operate/sys-message/insert") @ApiOperation(value = "新增消息",notes = "新增消息") - public ResultBean insertSysMessage(SysMessage sysMessage){ + public ResultBean insertSysMessage(@RequestBody SysMessage sysMessage){ + sysMessage = sysMessage == null ? new SysMessage() : sysMessage; + sysMessage.setMessageSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + + return basaeInsertSysMessage(sysMessage); + } + + /** + * CORE - 删除消息 + * @param id + * @return + */ + @DeleteMapping("/operate/sys-message/delete/{id}") + @ApiOperation(value = "根据id删除消息",notes = "根据id删除消息") + public ResultBean deleteSysMessageById(@PathVariable("id") String id){ + return baseDeleteSysMessageById(id); + } + + /** + * CORE - 修改消息 + * @param sysMessage + * @return + */ + @PutMapping("/operate/sys-message/update") + @ApiOperation(value = "修改信息",notes = "修改信息") + public ResultBean updateSysMessage(SysMessage sysMessage){ + sysMessage = sysMessage == null ? new SysMessage() : sysMessage; + sysMessage.setMessageSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + return baseUpdateSysMessage(sysMessage); + } + + /** + * 查询所有消息 + * @return + */ + @GetMapping(value = "/operate/sys-message/list") + @ApiOperation(value = "查询全部消息",notes = "查询全部消息") + public ResultBean findSysMessageAll(){ + try { + List sysMessageList = sysMessageService.listSysMessage(); + return ResultBean.success("操作成功").setResultList(sysMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * CORE - 根据id查询消息 + * @param idStr 消息id + * @return 处理结果 + */ + @GetMapping(value = "/operate/sys-message/get/{id}") + @ApiOperation(value = "根据id查询消息",notes = "根据id查询消息") + public ResultBean getSysMessageById(@PathVariable("id") String idStr){ + return baseGetSysMessageById(idStr); + } + + /** + * CORE - 分页带条件查询 + * @param messagePagerModel 分页以及条件信息 + * @return 处理结果 + */ + @PostMapping(value = "/operate/sys-message/query") + @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") + public ResultBean querySysMessageByPager(@RequestBody MessagePagerModel messagePagerModel){ + return baseQuerySysMessageByPager(messagePagerModel); + } + + /** + * CORE - 批量删除 + * @param ids ids数组 + * @return 处理结果 + */ + @DeleteMapping("/operate/sys-message/batch-delete") + @ApiOperation(value = "批量删除消息",notes = "批量删除消息") + public ResultBean deleteSysMessageByIds(String[] ids){ + return baseDeleteSysMessageByIds(ids); + } + + /*********************************************** 平台用户系统消息 *********************************************/ + + /** + * CORE - 收件箱查询 + * @param sysRefUserMessage 查询条件 + * @param pager 分页信息 + * @return 处理结果 + */ + @GetMapping(value = "/operate/user-message/query-inbox") + @ApiOperation(value = "查询用户收件箱,分页,排序") + public ResultBean queryInboxByPager(SysRefUserMessage sysRefUserMessage,Pager pager){ + try { + // 设置消息类型为站内信 + sysRefUserMessage.setMessageTypeRdd(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); + sysRefUserMessage.setReceiverId(getSessionUser().getUser().getId()); + + ListPager userMessageList = sysMessageService.querySysRefUserMessageByPager(sysRefUserMessage,pager); + return ResultBean.success("操作成功").setListPager(userMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * CORE - 发件箱查询 + * @param sysMessage 查询条件 + * @param pager 分页信息 + * @return 处理结果 + */ + @GetMapping(value = "/operate/user-message/query-outbox") + @ApiOperation(value = "查询用户发件箱,分页,排序") + public ResultBean queryOutboxByPager(SysMessage sysMessage,Pager pager){ + try { + // 发件人为当前用户 + sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); + sysMessage.setMessageSenderId(getSessionUser().getUser().getId()); + + ListPager sysMessageListPager = sysMessageService.querySysMessageByPager(sysMessage,pager); + return ResultBean.success("操作成功").setListPager(sysMessageListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * CORE - 查询未读消息 + * @return + */ + @GetMapping(value = "/operate/user-message/find-unread") + @ApiOperation(value = "查看用户未读站内信") + public ResultBean findUnreadUserMessage(){ + try { + List userMessageList = sysMessageService.findSysRefUserMessageByUserIdAndStatus( + getSessionUser().getUser().getId(), ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); + return ResultBean.success("操作成功").setResultList(userMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * CORE - 根据用户消息id查询消息 + * @param idStr + * @return 处理结果 + */ + @GetMapping(value = "/operate/user-message/get/{id}") + @ApiOperation(value = "根据用户消息id查询消息",notes = "根据用户消息id查询消息") + public ResultBean getUserMessageById(@PathVariable("id") String idStr){ + return baseGetUserMessageById(idStr); + } + + /** + * CORE - 批量切换消息状态 + * @param ids ids数组 + * @param status 状态 + * @return 处理结果 + */ + @PutMapping("/operate/user-message/batch-status") + @ApiOperation(value = "批量切换消息状态",notes = "批量切换消息状态") + public ResultBean updateSysMessageStatusByIds(String[] ids,Integer status){ + return baseUpdateSysMessageStatusByIds(ids, status); + } + + /** + * 根据id删除用户消息 + * @param idStr 用户表消息id + * @return 处理结果 + */ + @DeleteMapping(value = "/operate/user-message/delete-inbox/{id}") + @ApiOperation(value = "根据id删除用户消息") + public ResultBean deleteUserMessageById(@PathVariable("id") String idStr){ + try { + sysMessageService.deleteSysRefUserMessageById(Long.parseLong(idStr)); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @DeleteMapping(value = "/operate/user-message/batch-delete-inbox") + @ApiOperation(value = "根据id批量删除用户消息") + public ResultBean deleteUserMessageByIds(String[] idsStr){ + try { + sysMessageService.deleteSysRefUserMessageByIds(StringTool.getArrayLong(idsStr)); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping(value = "/operate/user-message/insert") + @ApiOperation(value = "用户新增消息",notes = "用户新增消息") + public ResultBean insertUserMessage(SysMessage sysMessage) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 条件校验 + ValidatorBean.beginValid(sysMessage) + .notNull("messageTitle",sysMessage.getMessageTitle()) + .notNull("messageContent",sysMessage.getMessageContent()) + .notNull("messageReceiversId",sysMessage.getMessageReceiversId()); + + // 设置发件人名称 + sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); + sysMessage.setMessageSenderId(getSessionUser().getUser().getId()); + sysMessage.setMessageSenderNameRdd(getSessionUser().getUserName()); + sysMessage.setMessageSendTime(sdf.format(new Date())); + sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue()); + sysMessage.setMessageReceiverType(ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue()); + + sysMessageService.doSendSysMessage(sysMessage); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 用户消息复杂查询,分页,排序 + * @param refUserMessagePagerModel 查询条件及分页信息 + * @return 处理结果 + */ + @PostMapping(value = "/operate/user-message/query") + @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") + public ResultBean querySysRefUserMessageByPager(@RequestBody RefUserMessagePagerModel refUserMessagePagerModel){ + return baseQuerySysRefUserMessageByPager(refUserMessagePagerModel); + } + + /** + * 用户消息删除 + * @param idStr 用户消息id + * @return 处理结果 + */ + @DeleteMapping(value = "/operate/user-message/delete/{id}") + @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") + public ResultBean deleteSysRefUserMessageById(@PathVariable("id") String idStr){ + return baseDeleteSysRefUserMessageById(idStr); + } + /*********************************************** 系统消息通用方法 ***********************************************/ + + /** + * 通用 - 系统消息- 新增 + * @param sysMessage 系统消息 + * @return 处理结果 + */ + private ResultBean basaeInsertSysMessage(SysMessage sysMessage){ try { // 条件校验 ValidatorBean.beginValid(sysMessage) @@ -98,9 +359,12 @@ public class SysMessageController extends CoreBaseController { } } - @DeleteMapping("/sys-message/delete/{id}") - @ApiOperation(value = "根据id删除消息",notes = "根据id删除消息") - public ResultBean deleteSysMessageById(@PathVariable("id") String id){ + /** + * 通用 - 系统消息- 根据id删除 + * @param id 系统消息 + * @return 处理结果 + */ + private ResultBean baseDeleteSysMessageById(String id){ try { // 条件校验 ValidatorBean.checkNotNull(id,"id不能为空"); @@ -114,9 +378,12 @@ public class SysMessageController extends CoreBaseController { } } - @PutMapping("/sys-message/update") - @ApiOperation(value = "修改信息",notes = "修改信息") - public ResultBean updateSysMessage(SysMessage sysMessage){ + /** + * 通用 - 系统消息- 修改 + * @param sysMessage 系统消息 + * @return 处理结果 + */ + private ResultBean baseUpdateSysMessage(SysMessage sysMessage){ try { // 条件校验 ValidatorBean.beginValid(sysMessage) @@ -133,22 +400,12 @@ public class SysMessageController extends CoreBaseController { } } - @GetMapping(value = "/sys-message/list") - @ApiOperation(value = "查询全部消息",notes = "查询全部消息") - public ResultBean findSysMessageAll(){ - try { - List sysMessageList = sysMessageService.listSysMessage(); - return ResultBean.success("操作成功").setResultList(sysMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping(value = "/sys-message/get/{id}") - @ApiOperation(value = "根据id查询消息",notes = "根据id查询消息") - public ResultBean getSysMessageById(@PathVariable("id") String idStr){ + /** + * 通用 - 系统消息- 根据id查询 + * @param idStr + * @return + */ + private ResultBean baseGetSysMessageById(String idStr){ try { SysMessage sysMessage = sysMessageService.getSysMessageById(Long.parseLong(idStr)); if (sysMessage != null) { @@ -163,9 +420,12 @@ public class SysMessageController extends CoreBaseController { } } - @PostMapping(value = "/sys-message/query") - @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") - public ResultBean querySysMessageByPager(@RequestBody MessagePagerModel messagePagerModel){ + /** + * 通用 - 系统消息 - 分页带条件查询 + * @param messagePagerModel 分页及查询条件信息 + * @return 处理结果 + */ + private ResultBean baseQuerySysMessageByPager(@RequestBody MessagePagerModel messagePagerModel){ try { ListPager sysMessageListPager = sysMessageService.querySysMessageByPager(messagePagerModel.getSysMessage(), messagePagerModel.getPager()); @@ -177,9 +437,12 @@ public class SysMessageController extends CoreBaseController { } } - @DeleteMapping("/sys-message/batch-delete") - @ApiOperation(value = "批量删除消息",notes = "批量删除消息") - public ResultBean deleteSysMessageByIds(String[] ids){ + /** + * 通用 - 系统消息 - 批量删除消息 + * @param ids id数组 + * @return 处理结果 + */ + public ResultBean baseDeleteSysMessageByIds(String[] ids){ try{ // 条件判断 ids = ConvertBean.modelSafeArrayNumber(ids,true); @@ -199,57 +462,14 @@ public class SysMessageController extends CoreBaseController { } } - @GetMapping(value = "/user-message/query-inbox") - @ApiOperation(value = "查询用户收件箱,分页,排序") - public ResultBean queryInboxByPager(SysRefUserMessage sysRefUserMessage,Pager pager){ - try { - // 设置消息类型为站内信 - sysRefUserMessage.setMessageTypeRdd(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); - sysRefUserMessage.setReceiverId(getSessionUser().getUser().getId()); - - ListPager userMessageList = sysMessageService.querySysRefUserMessageByPager(sysRefUserMessage,pager); - return ResultBean.success("操作成功").setListPager(userMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping(value = "/user-message/query-outbox") - @ApiOperation(value = "查询用户发件箱,分页,排序") - public ResultBean queryOutboxByPager(SysMessage sysMessage,Pager pager){ - try { - // 发件人为当前用户 - sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); - sysMessage.setMessageSenderId(getSessionUser().getUser().getId()); - - ListPager sysMessageListPager = sysMessageService.querySysMessageByPager(sysMessage,pager); - return ResultBean.success("操作成功").setListPager(sysMessageListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @GetMapping(value = "/user-message/find-unread") - @ApiOperation(value = "查看用户未读站内信") - public ResultBean findUnreadUserMessage(){ - try { - List userMessageList = sysMessageService.findSysRefUserMessageByUserIdAndStatus( - getSessionUser().getUser().getId(), ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); - return ResultBean.success("操作成功").setResultList(userMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } + /*********************************************** 系统消息通用方法 ***********************************************/ - @GetMapping(value = "/user-message/get/{id}") - @ApiOperation(value = "根据id查询消息",notes = "根据id查询消息") - public ResultBean getUserMessageById(@PathVariable("id") String idStr){ + /** + * 通用 - 根据用户消息id查询消息 + * @param idStr + * @return + */ + private ResultBean baseGetUserMessageById(String idStr){ try { ValidatorBean.checkNotNull(idStr,"id"); @@ -266,9 +486,13 @@ public class SysMessageController extends CoreBaseController { } } - @PutMapping("/user-message/batch-status") - @ApiOperation(value = "批量切换消息状态",notes = "批量切换消息状态") - public ResultBean updateSysMessageStatusByIds(String[] ids,Integer status){ + /** + * 通用 - 批量切换用户消息状态 + * @param ids ids数组 + * @param status 状态 + * @return 处理结果 + */ + private ResultBean baseUpdateSysMessageStatusByIds(String[] ids,Integer status){ try{ // 条件判断 ValidatorBean.checkNotZero(status,"状态不能为空"); @@ -289,68 +513,12 @@ public class SysMessageController extends CoreBaseController { } } - @DeleteMapping(value = "/user-message/delete-inbox/{id}") - @ApiOperation(value = "根据id删除用户消息") - public ResultBean deleteUserMessageById(@PathVariable("id") String idStr){ - try { - sysMessageService.deleteSysRefUserMessageStatusById(Long.parseLong(idStr)); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @DeleteMapping(value = "/user-message/batch-delete-inbox") - @ApiOperation(value = "根据id批量删除用户消息") - public ResultBean deleteUserMessageByIds(String[] idsStr){ - try { - sysMessageService.deleteSysRefUserMessageStatusByIds(StringTool.getArrayLong(idsStr)); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - - @PostMapping(value = "/user-message/insert") - @ApiOperation(value = "用户新增消息",notes = "用户新增消息") - public ResultBean insertUserMessage(SysMessage sysMessage) { - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - // 条件校验 - ValidatorBean.beginValid(sysMessage) - .notNull("messageTitle",sysMessage.getMessageTitle()) - .notNull("messageContent",sysMessage.getMessageContent()) - .notNull("messageReceiversId",sysMessage.getMessageReceiversId()); - - // 设置发件人名称 - sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue()); - sysMessage.setMessageSenderId(getSessionUser().getUser().getId()); - sysMessage.setMessageSenderNameRdd(getSessionUser().getUserName()); - sysMessage.setMessageSendTime(sdf.format(new Date())); - sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue()); - sysMessage.setMessageReceiverType(ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue()); - - sysMessageService.doSendSysMessage(sysMessage); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - /** - * 用户消息复杂查询,分页,排序 + * 通用 - 分页带条件查询用户消息 * @param refUserMessagePagerModel 查询条件及分页信息 * @return 处理结果 */ - @PostMapping(value = "/user-message/query") - @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") - public ResultBean querySysRefUserMessageByPager(@RequestBody RefUserMessagePagerModel refUserMessagePagerModel){ + public ResultBean baseQuerySysRefUserMessageByPager(RefUserMessagePagerModel refUserMessagePagerModel){ try { ListPager sysMessageListPager = sysMessageService.querySysRefUserMessageByPager( refUserMessagePagerModel.getSysRefUserMessage(),refUserMessagePagerModel.getPager()); @@ -363,15 +531,13 @@ public class SysMessageController extends CoreBaseController { } /** - * 用户消息删除 + * 通用 - 按id删除用户消息 * @param idStr 用户消息id * @return 处理结果 */ - @DeleteMapping(value = "/user-message/delete/{id}") - @ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序") - public ResultBean deleteSysRefUserMessageById(@PathVariable("id") String idStr){ + public ResultBean baseDeleteSysRefUserMessageById(String idStr){ try { - sysMessageService.deleteSysRefUserMessageStatusById(Long.parseLong(idStr)); + sysMessageService.deleteSysRefUserMessageById(Long.parseLong(idStr)); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index a19ee68..0c9e3bf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java @@ -66,8 +66,8 @@ public class MessageLetterQueueReceiver { @RabbitListener(queues = PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE) public void processImppMessage(String data, Channel channel, Message message) { LOGGER.info("【MQ-{}】 数据接收成功:{}", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE, data); + SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); try { - SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); msg = sysMessageService.insertSysMessage(msg); if (!StringUtils.isBlank(msg.getMessageReceiversId())) { @@ -114,9 +114,11 @@ public class MessageLetterQueueReceiver { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (IOException e) { printErrorMessage(e, Exception.class, data); - try { // 未成功处理,重新发送 + if(msg.getId() != null) { + sysMessageService.deleteSysMessageById(msg.getId()); + } 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/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index b611fc1..51d21bf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -56,8 +56,8 @@ public class MessageMailQueueReceiver { */ @RabbitListener(queues = PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE) public void processImppMail(String data, Channel channel, Message message) { + SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); try { - SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); LOGGER.info("【MQ-IMPP_MESSAGE_MAIL_QUEUE】数据接收成功:{}", msg); if (msg.getMessageSendTime() == null) { msg.setMessageSendTime(TimeTool.getNowTime(true)); @@ -119,6 +119,9 @@ public class MessageMailQueueReceiver { LOGGER.error("【MQ-IMPP_MESSAGE_MAIL_QUEUE】处理出错:{}", e.getMessage(), e); //丢弃这条消息 try { + if(msg.getId() != null) { + sysMessageService.deleteSysMessageById(msg.getId()); + } // 未成功处理,重新发送 //channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true); //todo 此处对邮件持久化,通过参数设置,是否还需要重复重新发送 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java index d31f3eb..1accadb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java @@ -14,6 +14,8 @@ import cn.estsh.i3plus.pojo.platform.bean.SysFileAttach; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.rabbitmq.client.Channel; import org.apache.commons.lang3.StringUtils; @@ -60,9 +62,9 @@ public class MessageSWebNoticeQueueReceiver { @RabbitListener(queues = PlatformConstWords.SWEB_NOTICE_QUEUE) public void processImppMail(String data, Channel channel, Message message) { LOGGER.info("【MQ-{}】 数据接收成功:{}", PlatformConstWords.SWEB_NOTICE_QUEUE, data); + // 添加消息 + SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); try { - // 添加消息 - SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); msg = sysMessageService.insertSysMessage(msg); // 添加附件信息 @@ -85,36 +87,60 @@ public class MessageSWebNoticeQueueReceiver { // 添加消息明细信息 if (StringUtils.isNotBlank(msg.getMessageReceiversId())) { // 获取供应商信息 由string转换为json对象 - JSONObject userJsonObject = JSON.parseObject(msg.getMessageReceiversId()); + JSONArray userJsonArray = new JSONArray(); + try { + userJsonArray = JSON.parseArray(msg.getMessageReceiversId()); + }catch (JSONException e){ + LOGGER.error(" JSON转换错误【{0}】:{1}", msg.getMessageReceiversId(), e.getMessage()); + } + JSONObject userJsonObject; - List insertList = new ArrayList<>(userJsonObject.size()); + List insertList = new ArrayList<>(userJsonArray.size()); + List receiversId = new ArrayList(); + List receiversName = new ArrayList(); SysRefUserMessage refUserMessage; - for (String user : userJsonObject.keySet()) { + for (Object user : userJsonArray) { + // 约定格式:[{'id':'111','name':'张三'},{'id':'121','name':'张三2'}] + userJsonObject = ( JSONObject )user; + receiversId.add(userJsonObject.get("id").toString()); + receiversName.add(userJsonObject.get("name").toString()); + refUserMessage = new SysRefUserMessage(); refUserMessage.setMessageId(msg.getId()); refUserMessage.setMessageSoftType(msg.getMessageSoftType()); refUserMessage.setMessageTitleRdd(msg.getMessageTitle()); refUserMessage.setMessageTypeRdd(msg.getMessageType()); refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd()); - refUserMessage.setReceiverId(Long.parseLong(user)); - refUserMessage.setReceiverNameRdd(userJsonObject.get(user).toString()); + refUserMessage.setReceiverId(Long.parseLong(userJsonObject.get("id").toString())); + refUserMessage.setReceiverNameRdd(userJsonObject.get("name").toString()); refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); refUserMessage.setReceiverTime(TimeTool.getNowTime(true)); refUserMessage.setIsUrgent(msg.getIsUrgent()); + // 初始数据 + ConvertBean.serviceModelInitialize(refUserMessage, msg.getCreateUser()); insertList.add(refUserMessage); } sysMessageService.insertSysRefUserMessage(insertList); + + // 设置收件人名称及id + msg.setMessageReceiversId(StringUtils.join(receiversId,",")); + msg.setMessageReceiversNameRdd(StringUtils.join(receiversName,",")); + sysMessageService.updateSysMessage(msg); } // 消息处理完成 LOGGER.info("【MQ-{}】站内信{} DeliveryTag:{} 处理成功", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE, msg, message.getMessageProperties().getDeliveryTag()); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); - } catch (IOException e) { + } catch (Exception e) { + e.printStackTrace(); try { + if(msg.getId() != null) { + sysMessageService.deleteSysMessageById(msg.getId()); + } // 未成功处理,重新发送 channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); } catch (IOException e1) { 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 9b58ce1..98801cb 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 @@ -245,13 +245,13 @@ public class SysMessageService implements ISysMessageService { @Override @ApiOperation(value = "删除用户消息") - public void deleteSysRefUserMessageStatusById(Long id) { + public void deleteSysRefUserMessageById(Long id) { sysRefUserMessageRDao.deleteById(id); } @Override @ApiOperation(value = "批量删除用户消息") - public void deleteSysRefUserMessageStatusByIds(Long[] ids) { + public void deleteSysRefUserMessageByIds(Long[] ids) { sysRefUserMessageRDao.deleteByIds(ids); }