add Hiwork消息归入消息模板

This commit is contained in:
liao
2023-10-17 11:59:08 +08:00
parent 0fb024bfff
commit f4036dfd71
8 changed files with 143 additions and 4 deletions
@@ -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;
}
@@ -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;
}
@@ -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
@@ -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);
}
@@ -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();
@@ -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("发送消息异常");
}
}
}