From 54750639910b5af62f31d0ce9601d97778f11827 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Thu, 10 Aug 2023 17:45:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/message/MessageFeign.java | 40 ++++++++- .../api/message/MessageFeignFallback.java | 9 +- .../api/message/PushMessageQuery.java | 43 ++++++++++ .../biz/message/MessageRest.java | 9 +- .../biz/message/MessageService.java | 85 +++++++++++++++++-- 5 files changed, 170 insertions(+), 16 deletions(-) create mode 100644 message-center-api/src/main/java/com/yxt/messagecenter/api/message/PushMessageQuery.java diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java index a8c0fe9..a288925 100644 --- a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java @@ -62,14 +62,26 @@ public interface MessageFeign { /**********************************************************************************************/ - @ApiOperation("移动端流程审批推送消息") + /* @ApiOperation("移动端流程审批推送消息") @PostMapping("/getMessage") - ResultBean getMessage(@RequestBody MessageFlowableDto dto); - + ResultBean getMessage(@RequestBody MessageFlowableDto dto);*/ + + /** + * 流程审批推送消息 + * + * @param query + * @return + */ @ApiOperation("流程审批推送消息") @PostMapping("/pushMessage") ResultBean pushMessage(@RequestBody MessageFlowableQuery query); + /** + * 流程抄送推送消息 + * + * @param query + * @return + */ @ApiOperation("流程审批推送消息 抄送") @PostMapping("/pushMessageCC") ResultBean pushMessageCC(@RequestBody MessageFlowableQueryForCC query); @@ -82,14 +94,36 @@ public interface MessageFeign { @PostMapping("/sendAutoserviceMessage") ResultBean sendAutoserviceMessage(@RequestBody AppScmMessageFlowableQuery query); + /** + * 移动端发布框架推送消息 + * + * @param dto + * @return + */ @ApiOperation("移动端框架发布推送消息") @PostMapping("/sendAppVersionMessage") ResultBean sendAppVersionMessage(@RequestBody AppVersionMessageDto dto); + /** + * 简易订单订车解锁提醒推送消息 + * + * @param dto + * @return + */ @ApiOperation("简易订单解锁提醒") @PostMapping("/sendOrderMessage") ResultBean sendOrderMessage(@RequestBody OrderMesageDto dto); + @ApiOperation("推送无详情页的消息") + @PostMapping("/pushNoUriMessage") + ResultBean pushNoUriMessage(@RequestBody PushMessageQuery query); + + /** + * 分享功能推送消息 + * + * @param query + * @return + */ @ApiOperation("流程审批推送消息 分享") @PostMapping("/pushMessageShare") ResultBean pushMessageShare(@RequestBody MessageFlowableQueryForCC query); diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java index b40a4c6..a88f52d 100644 --- a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java @@ -56,10 +56,10 @@ public class MessageFeignFallback implements MessageFeign { return rb.setMsg("接口message-center/message/saveOrUpdateAppMessage无法访问"); } - @Override + /* @Override public ResultBean getMessage(MessageFlowableDto dto) { return null; - } + }*/ @Override public ResultBean pushMessage(MessageFlowableQuery query) { @@ -91,6 +91,11 @@ public class MessageFeignFallback implements MessageFeign { return null; } + @Override + public ResultBean pushNoUriMessage(PushMessageQuery query) { + return null; + } + @Override public ResultBean pushMessageShare(MessageFlowableQueryForCC query) { return null; diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/PushMessageQuery.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/PushMessageQuery.java new file mode 100644 index 0000000..3994d7c --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/PushMessageQuery.java @@ -0,0 +1,43 @@ +package com.yxt.messagecenter.api.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/8/10 + **/ +@Data +public class PushMessageQuery implements Query { + private static final long serialVersionUID = -5710109873182775336L; + + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("发送人sid") + private String senderSid; + @ApiModelProperty("发送人名称") + private String senderName; + @ApiModelProperty("发送人部门sid") + private String senderDeptSid; + @ApiModelProperty("发送部门sid") + private String senderDeptName; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("接收人sidList") + private List receivedSids; + /* @ApiModelProperty("跳转地址") + private String msgTargetUri;*/ + @ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件") + private String app_type; + @ApiModelProperty("插件sid") + private String moduleSid; +} diff --git a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java index b1044c2..52b5703 100644 --- a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java +++ b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java @@ -113,10 +113,10 @@ public class MessageRest implements MessageFeign { return messageService.saveOrUpdateAppMessage(dto); } - @Override + /* @Override public ResultBean getMessage(MessageFlowableDto dto) { return messageService.getMessage(dto); - } + }*/ @Override public ResultBean pushMessage(MessageFlowableQuery query) { @@ -148,6 +148,11 @@ public class MessageRest implements MessageFeign { return messageService.sendOrderMessage(dto); } + @Override + public ResultBean pushNoUriMessage(PushMessageQuery query) { + return messageService.pushNoUriMessage(query); + } + @Override public ResultBean pushMessageShare(MessageFlowableQueryForCC query) { return messageService.pushMessageShare(query); diff --git a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java index d6e4753..108ee65 100644 --- a/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java +++ b/message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java @@ -911,6 +911,7 @@ public class MessageService extends MybatisBaseService { /** * 流程审批分享 + * * @param query * @return */ @@ -924,7 +925,7 @@ public class MessageService extends MybatisBaseService { String msgTitle = query.getMsgTitle(); String applicationName = query.getApplicationName(); ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(query.getUserSid()); - if(sysUserInfoVoResultBean.getData() != null){ + if (sysUserInfoVoResultBean.getData() != null) { applicationName = sysUserInfoVoResultBean.getData().getStaffName(); } @@ -974,12 +975,6 @@ public class MessageService extends MybatisBaseService { return rb.success().setMsg(msgSid); } - /** - * 流程审批分享 - * - * @param dto - * @return - */ public ResultBean getMessageShare(MessageFlowableDto dto) { ResultBean rb = ResultBean.fireFail(); String msgTitle = dto.getMsgTitle(); @@ -999,13 +994,13 @@ public class MessageService extends MybatisBaseService { } } } - if(StringUtils.isNotBlank(dto.getOrgPath())){ + if (StringUtils.isNotBlank(dto.getOrgPath())) { //根据orgPath查询部门 List orgPathsList = Arrays.asList(dto.getOrgPath().split("/")); String orgSids = orgPathsList.get(orgPathsList.size() - 1); messageDto.setSenderDeptSid(orgSids); ResultBean organizationResultBean = sysOrganizationFeign.fetchBySid(orgSids); - if(organizationResultBean.getData() != null){ + if (organizationResultBean.getData() != null) { String deptName = organizationResultBean.getData().getName(); messageDto.setSenderDeptName(deptName); } @@ -1083,4 +1078,76 @@ public class MessageService extends MybatisBaseService { List messages = baseMapper.selectByBusinessSid(sid); return rb.success().setData(messages); } + + public ResultBean pushNoUriMessage(PushMessageQuery query) { + ResultBean rb = ResultBean.fireFail(); + //保存消息体 + String msgTitle = query.getMsgTitle(); + String msgContent = query.getMsgContent(); + String app_type = query.getApp_type(); + List receivedSids = query.getReceivedSids(); + AppMessageDto messageDto = new AppMessageDto(); + List typeVoList = messageTypeService.selectMsgTypeList(IDENTIFIER); + if (typeVoList.size() > 0) { + for (MessageTypeVo message : typeVoList) { + if (message.getMsgType().equals("业务")) { + messageDto.setMsgTypeSid(message.getMsgTypeSid()); + messageDto.setMsgType(message.getMsgType()); + } + } + } + messageDto.setMsgTitle(msgTitle); + messageDto.setMsgContent(msgContent); + messageDto.setMsgSource("业务"); + messageDto.setApp_type(app_type); + String msgSid = saveOrUpdateAppMessage(messageDto).getData(); + String msgTypeSid = messageDto.getMsgTypeSid(); + // 2、保存至消息列表 + ResultBean stringList = sysUserFeign.selectIdBySid(receivedSids); + List receiveIdList = Arrays.asList(stringList.getData().split(",")); + // 使用多线程保存 + List> futures = new ArrayList>(); + ExecutorService executor = Executors.newFixedThreadPool(4); + for (int i = 0; i < receivedSids.size(); i++) { + int finalI = i; + Future f = executor.submit(new Runnable() { + @Override + public void run() { + try { + System.out.println("run start-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + MessageListDto messageList = new MessageListDto(); + messageList.setMsgSid(msgSid); + messageList.setRDelStatus(0); + messageList.setSDelStatus(0); + messageList.setReceiverSid(receivedSids.get(finalI)); + //根据接收人sid查询接收人名称 + ResultBean sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(receivedSids.get(finalI)); + if (sysUserInfoVoResultBean.getData() != null) { + messageList.setReceiverName(sysUserInfoVoResultBean.getData().getStaffName()); + } + messageListService.saveOrUpdateDto(messageList); + System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + futures.add(f); + } + executor.shutdown(); + //标题、内容、消息类别key、消息类别名称、 + YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean(); + factoryBean.setResources(new ClassPathResource("application.yml")); + Properties properties = factoryBean.getObject(); + if ("pro".equals(properties.get("spring.profiles.active"))) { + for (int i = 0; i < receiveIdList.size(); i++) { + JPushServer.sendPushAlias(msgTitle, msgContent, msgTypeSid, "业务", receiveIdList.get(i)); + } + } else { + for (int i = 0; i < receiveIdList.size(); i++) { + JPushServer.sendPushAlias(msgTitle, msgContent, msgTypeSid, "业务", "T" + receiveIdList.get(i)); + } + } + return rb.success(); + } } \ No newline at end of file