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 c65ee78..533ec8c 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 @@ -80,4 +80,8 @@ public interface MessageFeign { @PostMapping("/sendAppVersionMessage") ResultBean sendAppVersionMessage(@RequestBody AppVersionMessageDto dto); + @ApiOperation("订单推送消息") + @PostMapping("/sendOrderMessage") + ResultBean sendOrderMessage(@RequestBody OrderMesageDto dto); + } \ No newline at end of file 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 e414eee..67e075d 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 @@ -78,4 +78,9 @@ public class MessageFeignFallback implements MessageFeign { public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) { return null; } + + @Override + public ResultBean sendOrderMessage(OrderMesageDto dto) { + return null; + } } \ No newline at end of file diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderListMessageDto.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderListMessageDto.java new file mode 100644 index 0000000..1267be9 --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderListMessageDto.java @@ -0,0 +1,39 @@ +package com.yxt.messagecenter.api.message; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2023/1/9 14:12 + * @Description + */ +@Data +public class OrderListMessageDto implements Dto { + private static final long serialVersionUID = -7186212256596679049L; + + private String businessSid; + + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("app所需参数") + private Map appMap; + @ApiModelProperty("申请人") + private String applicationName; + @ApiModelProperty("申请人sid") + private List createBySid; + @ApiModelProperty("跳转地址") + private String msgTargetUri; + private String app_type; + @ApiModelProperty("插件sid") + private String moduleSid; + +} diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderMesageDto.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderMesageDto.java new file mode 100644 index 0000000..270f43d --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/OrderMesageDto.java @@ -0,0 +1,18 @@ +package com.yxt.messagecenter.api.message; + +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2023/1/9 14:12 + * @Description + */ +@Data +public class OrderMesageDto implements Dto { + private static final long serialVersionUID = 7066694784027774352L; + + private List list; +} 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 3296412..30b5510 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 @@ -135,4 +135,9 @@ public class MessageRest implements MessageFeign { public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) { return messageService.sendAppVersionMessage(dto); } + + @Override + public ResultBean sendOrderMessage(OrderMesageDto dto) { + return messageService.sendOrderMessage(dto); + } } 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 fd65b6a..6bf2b1b 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 @@ -638,4 +638,78 @@ public class MessageService extends MybatisBaseService { System.out.println("process end"); return rb.success(); } + + public ResultBean sendOrderMessage(OrderMesageDto dto) { + ResultBean rb = ResultBean.fireFail(); + //保存消息体 + List list = dto.getList(); + for (OrderListMessageDto dto1 : list) { + String msgTitle = dto1.getMsgTitle(); + String msgContent = dto1.getMsgContent(); + String msgTargetUri = dto1.getMsgTargetUri(); + String app_type = dto1.getApp_type(); + List createBySidList = dto1.getCreateBySid(); + 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.setMsgTargetUri(msgTargetUri); + messageDto.setApp_type(app_type); + JSONObject json = new JSONObject(dto1.getAppMap()); + messageDto.setArgs_json(json.toJSONString()); + String msgSid = saveOrUpdateAppMessage(messageDto).getData(); + String msgTypeSid = messageDto.getMsgTypeSid(); + // 2、保存至消息列表 + ResultBean stringList = sysUserFeign.selectIdBySid(createBySidList); + List receiveIdList = Arrays.asList(stringList.getData().split(",")); + // 使用多线程保存 + List> futures = new ArrayList>(); + ExecutorService executor = Executors.newFixedThreadPool(4); + for (int i = 0; i < createBySidList.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(createBySidList.get(finalI)); + 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