diff --git a/message-center-api/src/main/java/com/yxt/messagecenter/api/message/AppVersionMessageDto.java b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/AppVersionMessageDto.java new file mode 100644 index 0000000..573d37a --- /dev/null +++ b/message-center-api/src/main/java/com/yxt/messagecenter/api/message/AppVersionMessageDto.java @@ -0,0 +1,44 @@ +package com.yxt.messagecenter.api.message; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/11/28 16:24 + * @Description + */ +@Data +public class AppVersionMessageDto { + + @ApiModelProperty("主程序sid") + private String appSid; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("版本编码") + private Integer versionCode; + + @ApiModelProperty("版本号") + private String versionName; + + @ApiModelProperty("apk下载地址") + private String updateUrl; + + @ApiModelProperty("版本的更新描述") + private String upgradeInfo; + + @ApiModelProperty("文件存放路径") + private String filepath; + + @ApiModelProperty("文件名") + private String filename; + + @ApiModelProperty("图标地址") + private String iconUrl; + + private List receiveSids; +} 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 5f69de8..c65ee78 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 @@ -76,5 +76,8 @@ public interface MessageFeign { @PostMapping("/sendAutoserviceMessage") ResultBean sendAutoserviceMessage(@RequestBody AppScmMessageFlowableQuery query); + @ApiOperation("移动端框架发布推送消息") + @PostMapping("/sendAppVersionMessage") + ResultBean sendAppVersionMessage(@RequestBody AppVersionMessageDto 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 78a1dfd..e414eee 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 @@ -73,4 +73,9 @@ public class MessageFeignFallback implements MessageFeign { public ResultBean sendAutoserviceMessage(AppScmMessageFlowableQuery query) { return null; } + + @Override + public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) { + return null; + } } \ No newline at end of file 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 98b1724..3296412 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 @@ -130,4 +130,9 @@ public class MessageRest implements MessageFeign { public ResultBean sendAutoserviceMessage(AppScmMessageFlowableQuery query) { return messageService.sendAutoserviceMessage(query); } + + @Override + public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) { + return messageService.sendAppVersionMessage(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 a9ed90c..fd65b6a 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 @@ -540,4 +540,102 @@ public class MessageService extends MybatisBaseService { System.out.println("process end"); return rb.success().setMsg(msgSid); } + + public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) { + ResultBean rb = ResultBean.fireFail(); + // 1、保存消息体 + 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("版本更新"); + messageDto.setMsgContent(dto.getVersionName() + "版本已更新"); + messageDto.setMsgSource("app版本更新"); + messageDto.setMsgTargetUri(MsgTargetUriEnum.APPUPDATE.getUri()); + messageDto.setApp_type("0"); + JSONObject json = new JSONObject(); + json.put("content", "检查更新中…"); + messageDto.setArgs_json(json.toJSONString()); + String msgSid = saveOrUpdateAppMessage(messageDto).getData(); + String msgTypeSid = messageDto.getMsgTypeSid(); + // 2、保存至消息列表 + List list = dto.getReceiveSids(); + ResultBean stringList = sysUserFeign.selectIdBySid(list); + List reveiveIdList = Arrays.asList(stringList.getData().split(",")); + // 使用多线程保存 + List> futures = new ArrayList>(); + ExecutorService executor = Executors.newFixedThreadPool(4); + for (String receverSid : list) { + Future f = executor.submit(new Runnable() { + @Override + public void run() { + try { + System.out.println("run start-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + MessageList messageList = new MessageList(); + messageList.setMsgSid(msgSid); + messageList.setRDelStatus(0); + messageList.setSDelStatus(0); + messageList.setReceiverSid(receverSid); + messageListService.save(messageList); + System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + futures.add(f); + } + executor.shutdown(); + YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean(); + factoryBean.setResources(new ClassPathResource("application.yml")); + Properties properties = factoryBean.getObject(); + // 使用多线程保存 + futures = new ArrayList>(); + executor = Executors.newFixedThreadPool(4); + if ("pro".equals(properties.get("spring.profiles.active"))) { + for (int i = 0; i < reveiveIdList.size(); i++) { + int finalI = i; + Future f = executor.submit(new Runnable() { + @Override + public void run() { + try { + JPushServer.sendPushAlias(messageDto.getMsgTitle(), messageDto.getMsgContent(), msgTypeSid, messageDto.getMsgType(), reveiveIdList.get(finalI)); + + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + futures.add(f); + } + executor.shutdown(); + } else { + for (int i = 0; i < reveiveIdList.size(); i++) { + int finalI = i; + Future f = executor.submit(new Runnable() { + @Override + public void run() { + try { + JPushServer.sendPushAlias(messageDto.getMsgTitle(), messageDto.getMsgContent(), msgTypeSid, messageDto.getMsgType(), "T" + reveiveIdList.get(finalI)); + + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + futures.add(f); + } + executor.shutdown(); + + } + System.out.println("process end"); + return rb.success(); + } } \ No newline at end of file