Browse Source

移动端框架发布时推送消息

master
dimengzhe 3 years ago
parent
commit
7f090e71b5
  1. 44
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/AppVersionMessageDto.java
  2. 3
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java
  3. 5
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java
  4. 5
      message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java
  5. 98
      message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java

44
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<String> receiveSids;
}

3
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java

@ -76,5 +76,8 @@ public interface MessageFeign {
@PostMapping("/sendAutoserviceMessage")
ResultBean<String> sendAutoserviceMessage(@RequestBody AppScmMessageFlowableQuery query);
@ApiOperation("移动端框架发布推送消息")
@PostMapping("/sendAppVersionMessage")
ResultBean sendAppVersionMessage(@RequestBody AppVersionMessageDto dto);
}

5
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java

@ -73,4 +73,9 @@ public class MessageFeignFallback implements MessageFeign {
public ResultBean<String> sendAutoserviceMessage(AppScmMessageFlowableQuery query) {
return null;
}
@Override
public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) {
return null;
}
}

5
message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java

@ -130,4 +130,9 @@ public class MessageRest implements MessageFeign {
public ResultBean<String> sendAutoserviceMessage(AppScmMessageFlowableQuery query) {
return messageService.sendAutoserviceMessage(query);
}
@Override
public ResultBean sendAppVersionMessage(AppVersionMessageDto dto) {
return messageService.sendAppVersionMessage(dto);
}
}

98
message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java

@ -540,4 +540,102 @@ public class MessageService extends MybatisBaseService<MessageMapper, Message> {
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<MessageTypeVo> 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<String> list = dto.getReceiveSids();
ResultBean<String> stringList = sysUserFeign.selectIdBySid(list);
List<String> reveiveIdList = Arrays.asList(stringList.getData().split(","));
// 使用多线程保存
List<Future<?>> futures = new ArrayList<Future<?>>();
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<Future<?>>();
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();
}
}
Loading…
Cancel
Save