add Hiwork消息归入消息模板
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
package com.jero.modules.docking.hiwork.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/17 11:19
|
||||
* @Description: 发送消息
|
||||
*/
|
||||
@Data
|
||||
public class SendMessageDTO {
|
||||
/**
|
||||
* 模板code
|
||||
*/
|
||||
private String templateCode;
|
||||
/**
|
||||
* 接收人id,多个以逗号分隔
|
||||
*/
|
||||
private String toUserId;
|
||||
/**
|
||||
* 对象例如 用户名:${username} map:{"username":"张三"} 转换成 用户名:张三
|
||||
*/
|
||||
private Map<String, String> map;
|
||||
}
|
||||
+2
@@ -25,6 +25,8 @@ public class HiworkDingDingMsg {
|
||||
private String deptIdList;
|
||||
@ApiModelProperty(value = "agentId")
|
||||
private String agentId;
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
@ApiModelProperty(value = "消息体")
|
||||
private JSONObject msg;
|
||||
}
|
||||
|
||||
+2
-1
@@ -14,9 +14,10 @@ public interface IHiworkMsgService {
|
||||
* @Date: 2023/10/16 15:32
|
||||
* @Description: 发送钉钉消息
|
||||
* senderIdList:发送人员id集合
|
||||
* title:消息标题
|
||||
* content:文本内容
|
||||
**/
|
||||
void sendDingDingMsg(List<String> senderIdList, String content);
|
||||
void sendDingDingMsg(List<String> senderIdList, String title, String content);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.jero.modules.docking.hiwork.service;
|
||||
|
||||
import com.jero.modules.docking.hiwork.dto.SendMessageDTO;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/17 11:22
|
||||
* @Description: 发送消息
|
||||
*/
|
||||
public interface ISendMessageService {
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/17 11:24
|
||||
* @Description: 根据模板发送消息
|
||||
**/
|
||||
void sendMessage(SendMessageDTO sendMessageDTO);
|
||||
|
||||
}
|
||||
+3
-1
@@ -45,7 +45,7 @@ public class HiworkMsgServiceImpl implements IHiworkMsgService {
|
||||
* content:文本内容
|
||||
**/
|
||||
@Override
|
||||
public void sendDingDingMsg(List<String> senderIdList, String content) {
|
||||
public void sendDingDingMsg(List<String> senderIdList, String title, String content) {
|
||||
HiworkDingDingMsg hiworkDingDingMsg = new HiworkDingDingMsg();
|
||||
// 异步系统标识
|
||||
hiworkDingDingMsg.setSysCode(HiworkPostUtil.getSysCode());
|
||||
@@ -57,6 +57,8 @@ public class HiworkMsgServiceImpl implements IHiworkMsgService {
|
||||
List<String> usernameList = senderUserList.stream().map(SysUser::getUsername).collect(Collectors.toList());
|
||||
// 发送人员id(工号以英文逗号分隔)
|
||||
hiworkDingDingMsg.setUseridList(StringUtils.join(usernameList, ","));
|
||||
// 标题
|
||||
hiworkDingDingMsg.setTitle(title);
|
||||
|
||||
// 消息体
|
||||
JSONObject msgJsonObject = new JSONObject();
|
||||
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package com.jero.modules.docking.hiwork.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.docking.hiwork.dto.SendMessageDTO;
|
||||
import com.jero.modules.docking.hiwork.service.IHiworkMsgService;
|
||||
import com.jero.modules.docking.hiwork.service.ISendMessageService;
|
||||
import com.jero.modules.message.entity.SysMessageTemplate;
|
||||
import com.jero.modules.message.service.ISysMessageTemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/17 11:23
|
||||
* @Description: 发送消息
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SendMessageServiceImpl implements ISendMessageService {
|
||||
|
||||
@Resource
|
||||
private ISysMessageTemplateService sysMessageTemplateService;
|
||||
@Autowired
|
||||
private IHiworkMsgService hiworkMsgService;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/17 11:25
|
||||
* @Description: 根据模板发送消息
|
||||
**/
|
||||
@Override
|
||||
public void sendMessage(SendMessageDTO sendMessageDTO) {
|
||||
if(StringUtils.isEmpty(sendMessageDTO.getToUserId())){
|
||||
throw new JeroBootException("消息接收人id不能为空");
|
||||
}
|
||||
if(StringUtils.isEmpty(sendMessageDTO.getTemplateCode())){
|
||||
throw new JeroBootException("消息模板编码不能为空!");
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<SysMessageTemplate> query = new LambdaQueryWrapper<>();
|
||||
query.eq(SysMessageTemplate::getTemplateCode,sendMessageDTO.getTemplateCode());
|
||||
List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.list(query);
|
||||
if(CollectionUtils.isEmpty(sysSmsTemplates)){
|
||||
throw new JeroBootException("消息模板不存在");
|
||||
}
|
||||
SysMessageTemplate sysMessageTemplate = sysSmsTemplates.get(0);
|
||||
|
||||
try {
|
||||
// 替换模板内容
|
||||
if(!Objects.isNull(sendMessageDTO.getMap())){
|
||||
Map<String,String> map = sendMessageDTO.getMap();
|
||||
map.forEach((k,v)-> sysMessageTemplate.setTemplateContent(
|
||||
sysMessageTemplate.getTemplateContent().replace("${" + k + "}", v)));
|
||||
}
|
||||
|
||||
List<String> toUserIdList = Arrays.asList(sendMessageDTO.getToUserId().split(","));
|
||||
if ("5".equals(sysMessageTemplate.getTemplateType())) {
|
||||
// Hiwork钉钉消息
|
||||
hiworkMsgService.sendDingDingMsg(toUserIdList, sysMessageTemplate.getTemplateName(),
|
||||
sysMessageTemplate.getTemplateContent());
|
||||
} else if ("6".equals(sysMessageTemplate.getTemplateType())) {
|
||||
// Hiwork系统消息
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
// 消息类型(暂未确定)
|
||||
String messageType = "";
|
||||
hiworkMsgService.sendSystemMsg(loginUser.getId(), toUserIdList,messageType,
|
||||
sysMessageTemplate.getTemplateName(), sysMessageTemplate.getTemplateContent());
|
||||
}
|
||||
|
||||
log.info(sysMessageTemplate.getTemplateContent());
|
||||
} catch (Exception e){
|
||||
log.error("发送消息异常",e);
|
||||
throw new JeroBootException("发送消息异常");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user