From f4036dfd71fae7f9c7e7b7d98b3468511ec240cb Mon Sep 17 00:00:00 2001 From: liao Date: Tue, 17 Oct 2023 11:59:08 +0800 Subject: [PATCH] =?UTF-8?q?add=20Hiwork=E6=B6=88=E6=81=AF=E5=BD=92?= =?UTF-8?q?=E5=85=A5=E6=B6=88=E6=81=AF=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/message/entity/SysMessage.java | 2 +- .../modules/message/util/PushMsgUtil.java | 2 +- .../docking/hiwork/dto/SendMessageDTO.java | 26 ++++++ .../hiwork/entity/HiworkDingDingMsg.java | 2 + .../hiwork/service/IHiworkMsgService.java | 3 +- .../hiwork/service/ISendMessageService.java | 19 ++++ .../service/impl/HiworkMsgServiceImpl.java | 4 +- .../service/impl/SendMessageServiceImpl.java | 89 +++++++++++++++++++ 8 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/dto/SendMessageDTO.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendMessageService.java create mode 100644 laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java diff --git a/laws-module-system/src/main/java/com/jero/modules/message/entity/SysMessage.java b/laws-module-system/src/main/java/com/jero/modules/message/entity/SysMessage.java index 5f19e77c..b1e381da 100644 --- a/laws-module-system/src/main/java/com/jero/modules/message/entity/SysMessage.java +++ b/laws-module-system/src/main/java/com/jero/modules/message/entity/SysMessage.java @@ -51,7 +51,7 @@ public class SysMessage extends JeroEntity { @Excel(name = "消息标题", width = 15) private java.lang.String esTitle; /**推送方式:1短信 2邮件 3微信*/ - @Excel(name = "推送方式:1短信 2邮件 3微信", width = 15) + @Excel(name = "推送方式:1短信 2邮件 3微信 4系统", width = 15) @Dict(dicCode = "msgType") private java.lang.String esType; /**备注*/ diff --git a/laws-module-system/src/main/java/com/jero/modules/message/util/PushMsgUtil.java b/laws-module-system/src/main/java/com/jero/modules/message/util/PushMsgUtil.java index 3aeaa803..b39f2fa9 100644 --- a/laws-module-system/src/main/java/com/jero/modules/message/util/PushMsgUtil.java +++ b/laws-module-system/src/main/java/com/jero/modules/message/util/PushMsgUtil.java @@ -34,7 +34,7 @@ public class PushMsgUtil { @Autowired private Configuration freemarkerConfig; /** - * @param msgType 消息类型 1短信 2邮件 3微信 + * @param msgType 消息类型 1短信 2邮件 3微信 4系统 * @param templateCode 消息模板码 * @param map 消息参数 * @param sentTo 接收消息方 diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/dto/SendMessageDTO.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/dto/SendMessageDTO.java new file mode 100644 index 00000000..678df842 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/dto/SendMessageDTO.java @@ -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 map; +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java index 398b8014..0632caed 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java @@ -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; } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java index 850740e4..2307b592 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java @@ -14,9 +14,10 @@ public interface IHiworkMsgService { * @Date: 2023/10/16 15:32 * @Description: 发送钉钉消息 * senderIdList:发送人员id集合 + * title:消息标题 * content:文本内容 **/ - void sendDingDingMsg(List senderIdList, String content); + void sendDingDingMsg(List senderIdList, String title, String content); /** * @Author: liao diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendMessageService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendMessageService.java new file mode 100644 index 00000000..eb1e8f48 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/ISendMessageService.java @@ -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); + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java index 1663e2a6..bd681771 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java @@ -45,7 +45,7 @@ public class HiworkMsgServiceImpl implements IHiworkMsgService { * content:文本内容 **/ @Override - public void sendDingDingMsg(List senderIdList, String content) { + public void sendDingDingMsg(List senderIdList, String title, String content) { HiworkDingDingMsg hiworkDingDingMsg = new HiworkDingDingMsg(); // 异步系统标识 hiworkDingDingMsg.setSysCode(HiworkPostUtil.getSysCode()); @@ -57,6 +57,8 @@ public class HiworkMsgServiceImpl implements IHiworkMsgService { List usernameList = senderUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()); // 发送人员id(工号以英文逗号分隔) hiworkDingDingMsg.setUseridList(StringUtils.join(usernameList, ",")); + // 标题 + hiworkDingDingMsg.setTitle(title); // 消息体 JSONObject msgJsonObject = new JSONObject(); diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java new file mode 100644 index 00000000..00e255c4 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java @@ -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 query = new LambdaQueryWrapper<>(); + query.eq(SysMessageTemplate::getTemplateCode,sendMessageDTO.getTemplateCode()); + List sysSmsTemplates = sysMessageTemplateService.list(query); + if(CollectionUtils.isEmpty(sysSmsTemplates)){ + throw new JeroBootException("消息模板不存在"); + } + SysMessageTemplate sysMessageTemplate = sysSmsTemplates.get(0); + + try { + // 替换模板内容 + if(!Objects.isNull(sendMessageDTO.getMap())){ + Map map = sendMessageDTO.getMap(); + map.forEach((k,v)-> sysMessageTemplate.setTemplateContent( + sysMessageTemplate.getTemplateContent().replace("${" + k + "}", v))); + } + + List 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("发送消息异常"); + } + + } +}