消息推送接口
统一消息推送接口,通过此接口实现,系统消息、邮箱消息、企业微信、钉钉消息四种类型消息推送。
一、主要API说明
//注入
@Autowired
private ISysBaseAPI sysBaseApi;
//推送消息
MessageDTO messageDTO = new MessageDTO();
messageDTO.setToAll(false);
messageDTO.setToUser(applyUserId);
messageDTO.setTitle("消息发送测试");
//推送消息类型
messageDTO.setType(MessageTypeEnum.XT.getType());
messageDTO.setIsMarkdown(false);
messageDTO.setFromUser("system");
messageDTO.setContent(templateContext);
log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
iSysBaseAPI.sendTemplateMessage(messageDTO);
注意点
- type 为消息类型,目前支持四种类型:系统消息、邮箱消息、企业微信、钉钉消息
- templateCode模板编码,对应菜单【消息中心】-->【消息模板管理】
- data解析模板的数据,需自定义
- content,如果不需要通过模板解析数据,可以直接传入一个固定文本发送
属性说明
属性 | 类型 | 说明 |
---|---|---|
fromUser | string | 发送人(用户登录账户) |
toUser | string | 发送给(用户登录账户) |
toAll | boolean | 发送给所有人 |
title | string | 消息主题 |
content | string | 消息内容 |
templateCode | string | 模板消息对应的模板编码 |
type | string | 消息类型:参考枚举org.jeecg.common.constant.enums.MessageTypeEnum |
data | Map<String, Object> | 解析模板内容 对应的数据 |
二、推送示例代码
示例1:流程结束给某个人发通知
//推送消息正文内容
String templateContext = "从工作表获取,查找结果无数据,工作流【"+process+"】,节点【"+node+"】";
String title = "流程结束通知";
MessageDTO messageDTO = new MessageDTO();
messageDTO.setToAll(false);
messageDTO.setToUser("admin");
messageDTO.setTitle("测试推送");
messageDTO.setType(MessageTypeEnum.XT.getType());
messageDTO.setIsMarkdown(false);
messageDTO.setFromUser("system");
messageDTO.setContent(templateContext);
log.info("------------消息发送对象:{}--------------", JSON.toJSONString(messageDTO));
iSysBaseAPI.sendTemplateMessage(messageDTO);
其他类型说明
enum TaskTipTypeEnum {
XT("system", "bpm_system"),
YJ("email", "bpm_email"),
DD("dingtalk", "bpm_dingtalk"),
QYWX("wechat_enterprise", "bpm_wechat_enterprise");
示例2:通过模板code推送消息
MessageDTO md = new MessageDTO();
md.setToAll(false);
md.setTitle("消息发送测试");
md.setTemplateCode("bpm_cuiban");
md.setToUser("admin,jeecg");
md.setType(msgParams.getMsgType());
String testData = msgParams.getTestData();
if(oConvertUtils.isNotEmpty(testData)){
Map<String, Object> data = JSON.parseObject(testData, Map.class);
md.setData(data);
}
sysBaseApi.sendTemplateMessage(md);
return result.success("消息发送成功!");

三、更多API说明
3.1 通过消息模板推送消息
通过设计模板,可以自定义格式,支持Markdown、富文本、普通文本,发送邮件和系统消息。
-
1.先设计消息模板
- 菜单: 消息中心 -> 模板管理
-
2.调用ISysBaseAPI接口发送系统消息
/**
* 发送系统消息
* @param fromUser 发送人(用户登录账户)
* @param toUser 发送给(用户登录账户)
* @param title 通知标题
* @param map 模板参数
* @param templateCode 模板编码
*/
public void sendSysAnnouncement(String fromUser, String toUser,String title, Map<String, String> map, String templateCode);
/**
* 通过消息中心模板,生成推送内容
*
* @param templateCode 模板编码
* @param map 模板参数
* @return
*/
public String parseTemplateByCode(String templateCode, Map<String, String> map);
3.2 高级应用示例
推送消息,系统通知点击详情,打开对应的业务表单。
Map<String, String> templateParam = new HashMap<>();
//设置PC详情页面打开所需路由参数 (系统通知点击详情,打开审批表单)
templateParam.put(CommonSendStatus.MSG_ABSTRACT_JSON, "{'taskDetail':true,'procInsId':'1706599178455097345','taskId':'task630958764530507776'}");
//设置钉钉移动端审批详情页面打开URL
templateParam.put(CommonConstant.MSG_HREF_URL, "http://www.jeecg.com"));
BusTemplateMessageDTO message = new BusTemplateMessageDTO("admin","jeecg","流程催办提醒",templateParam, CommonSendStatus.TZMB_BPM_CUIBAN, SysAnnmentTypeEnum.BPM.getType(),task.getId());
sysBaseAPI.sendBusTemplateAnnouncement(message);
这里只是部分示例代码,大家可以参考这个原理去自己实现。大概逻辑就是
3.3 更多推送接口
参考类:org/jeecg/common/system/api/ISysBaseAPI.java
目前推送这块接口较多,大家尽快采用iSysBaseAPI.sendTemplateMessage(messageDTO)
方法,其他方法后续会优化掉。
