From 9200ad3efb5331994aa520a2298ba5f479ee1541 Mon Sep 17 00:00:00 2001 From: 3y Date: Fri, 25 Mar 2022 22:57:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=20=E9=92=89=E9=92=89?= =?UTF-8?q?=E7=BE=A4=20=E8=87=AA=E5=AE=9A=E4=B9=89=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E5=84=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/AustinConstant.java | 21 +- .../common/dto/DingDingContentModel.java | 19 ++ .../dto/EnterpriseWeChatContentModel.java | 2 +- .../austin/common/enums/ChannelType.java | 2 + .../java3y/austin/common/enums/IdType.java | 1 + ...tMessageType.java => SendMessageType.java} | 4 +- .../domain/dingding/DingDingRobotAccount.java | 31 +++ .../domain/dingding/DingDingRobotParam.java | 204 ++++++++++++++++++ .../domain/dingding/DingDingRobotResult.java | 31 +++ .../handler/domain/{ => sms}/SmsParam.java | 2 +- .../domain/{ => sms}/TencentSmsParam.java | 2 +- .../{ => wechat}/OfficialAccountParam.java | 2 +- .../handler/impl/DingDingRobotHandler.java | 114 ++++++++++ .../handler/impl/EnterpriseWeChatHandler.java | 22 +- .../handler/handler/impl/SmsHandler.java | 2 +- .../austin/handler/script/SmsScript.java | 2 +- .../handler/script/impl/TencentSmsScript.java | 4 +- austin-support/pom.xml | 5 + .../austin/support/utils/AccountUtils.java | 1 + pom.xml | 7 + 20 files changed, 454 insertions(+), 24 deletions(-) create mode 100644 austin-common/src/main/java/com/java3y/austin/common/dto/DingDingContentModel.java rename austin-common/src/main/java/com/java3y/austin/common/enums/{WechatMessageType.java => SendMessageType.java} (84%) create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotAccount.java create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotParam.java create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotResult.java rename austin-handler/src/main/java/com/java3y/austin/handler/domain/{ => sms}/SmsParam.java (90%) rename austin-handler/src/main/java/com/java3y/austin/handler/domain/{ => sms}/TencentSmsParam.java (95%) rename austin-handler/src/main/java/com/java3y/austin/handler/domain/{ => wechat}/OfficialAccountParam.java (94%) create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java index a36dd86..dd060f0 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java @@ -14,7 +14,6 @@ public class AustinConstant { public final static Integer TRUE = 1; public final static Integer FALSE = 0; - /** * cron时间格式 */ @@ -35,4 +34,24 @@ public class AustinConstant { public final static Integer BUSINESS_ID_LENGTH = 16; + /** + * 消息发送给全部人的标识 + * (企业微信 应用消息) + * (钉钉自定义机器人) + * + */ + public static final String SEND_ALL = "@all"; + + + /** + * 加密算法 + */ + public static final String HMAC_SHA256_ENCRYPTION_ALGO = "HmacSHA256"; + + /** + * 编码格式 + */ + public static final String CHARSET_NAME = "UTF-8"; + + } diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/DingDingContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/DingDingContentModel.java new file mode 100644 index 0000000..17c0d33 --- /dev/null +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/DingDingContentModel.java @@ -0,0 +1,19 @@ +package com.java3y.austin.common.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author 3y + * 钉钉 自定义机器人 + * https://open.dingtalk.com/document/group/custom-robot-access + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DingDingContentModel extends ContentModel { + private String content; +} diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/EnterpriseWeChatContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/EnterpriseWeChatContentModel.java index 28d9e39..ad6a4b1 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/EnterpriseWeChatContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/EnterpriseWeChatContentModel.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; /** * @author 3y - * 企业微信 + * 企业微信 应用消息 */ @Data @Builder diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java b/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java index 98433ba..bb8cd2c 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java @@ -24,6 +24,8 @@ public enum ChannelType { OFFICIAL_ACCOUNT(50, "OfficialAccounts(服务号)", OfficialAccountsContentModel.class, "official_accounts"), MINI_PROGRAM(60, "miniProgram(小程序)", MiniProgramContentModel.class, "mini_program"), ENTERPRISE_WE_CHAT(70, "EnterpriseWeChat(企业微信)", EnterpriseWeChatContentModel.class, "enterprise_we_chat"), + DING_DING_ROBOT(80, "dingDingRobot(钉钉机器人)", DingDingContentModel.class, "ding_ding_robot"), + ; /** diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/IdType.java b/austin-common/src/main/java/com/java3y/austin/common/enums/IdType.java index 1e96710..d3b1961 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/IdType.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/IdType.java @@ -20,6 +20,7 @@ public enum IdType { OPEN_ID(40, "openId"), EMAIL(50, "email"), ENTERPRISE_USER_ID(60, "enterprise_user_id"), + DING_DING_USER_ID(70, "ding_ding_user_id"), ; private Integer code; diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/WechatMessageType.java b/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java similarity index 84% rename from austin-common/src/main/java/com/java3y/austin/common/enums/WechatMessageType.java rename to austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java index 94d1aae..645e7ec 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/WechatMessageType.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java @@ -5,14 +5,14 @@ import lombok.Getter; import lombok.ToString; /** - * 微信下发消息类型枚举 + * 微信应用消息/钉钉/服务号均有多种的消息类型下发 * * @author 3y */ @Getter @ToString @AllArgsConstructor -public enum WechatMessageType { +public enum SendMessageType { TEST(10, "文本"), VOICE(20, "语音"), diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotAccount.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotAccount.java new file mode 100644 index 0000000..435fc40 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotAccount.java @@ -0,0 +1,31 @@ +package com.java3y.austin.handler.domain.dingding; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 钉钉自定义机器人 账号信息 + * + * @author 3y + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DingDingRobotAccount { + + /** + * 密钥 + */ + private String secret; + + /** + * 自定义群机器人中的 webhook + */ + private String webhook; + + +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotParam.java new file mode 100644 index 0000000..3012916 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotParam.java @@ -0,0 +1,204 @@ +package com.java3y.austin.handler.domain.dingding; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 钉钉自定义机器人 入参 + * + * https://open.dingtalk.com/document/group/custom-robot-access + * + * @author 3y + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DingDingRobotParam { + /** + * at + */ + private AtVO at; + /** + * text + */ + private TextVO text; + /** + * link + */ + private LinkVO link; + /** + * markdown + */ + private MarkdownVO markdown; + /** + * actionCard + */ + private ActionCardVO actionCard; + /** + * feedCard + */ + private FeedCardVO feedCard; + /** + * msgtype + */ + private String msgtype; + + /** + * AtVO + */ + @NoArgsConstructor + @Data + @Builder + @AllArgsConstructor + public static class AtVO { + /** + * atMobiles + */ + private List atMobiles; + /** + * atUserIds + */ + private List atUserIds; + /** + * isAtAll + */ + private Boolean isAtAll; + } + + /** + * TextVO + */ + @NoArgsConstructor + @Data + @Builder + @AllArgsConstructor + public static class TextVO { + /** + * content + */ + private String content; + } + + /** + * LinkVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class LinkVO { + /** + * text + */ + private String text; + /** + * title + */ + private String title; + /** + * picUrl + */ + private String picUrl; + /** + * messageUrl + */ + private String messageUrl; + } + + /** + * MarkdownVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class MarkdownVO { + /** + * title + */ + private String title; + /** + * text + */ + private String text; + } + + /** + * ActionCardVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class ActionCardVO { + /** + * title + */ + private String title; + /** + * text + */ + private String text; + /** + * btnOrientation + */ + private String btnOrientation; + /** + * btns + */ + private List btns; + + /** + * BtnsVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class BtnsVO { + /** + * title + */ + private String title; + /** + * actionURL + */ + private String actionURL; + } + } + + /** + * FeedCardVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class FeedCardVO { + /** + * links + */ + private List links; + + /** + * LinksVO + */ + @NoArgsConstructor + @Data + @AllArgsConstructor + public static class LinksVO { + /** + * title + */ + private String title; + /** + * messageURL + */ + private String messageURL; + /** + * picURL + */ + private String picURL; + } + } +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotResult.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotResult.java new file mode 100644 index 0000000..6e382c3 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/dingding/DingDingRobotResult.java @@ -0,0 +1,31 @@ +package com.java3y.austin.handler.domain.dingding; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +/** + * 钉钉群 自定义机器人返回的结果 + *

+ * 正常的返回:{"errcode":0,"errmsg":"ok"} + * + * @author 3y + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +public class DingDingRobotResult { + /** + * errcode + */ + @SerializedName("errcode") + private Integer errCode; + + /** + * errmsg + */ + @SerializedName("errmsg") + private String errMsg; +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/SmsParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/SmsParam.java similarity index 90% rename from austin-handler/src/main/java/com/java3y/austin/handler/domain/SmsParam.java rename to austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/SmsParam.java index bd79df9..bcf9f1e 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/SmsParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/SmsParam.java @@ -1,4 +1,4 @@ -package com.java3y.austin.handler.domain; +package com.java3y.austin.handler.domain.sms; import lombok.Builder; import lombok.Data; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/TencentSmsParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/TencentSmsParam.java similarity index 95% rename from austin-handler/src/main/java/com/java3y/austin/handler/domain/TencentSmsParam.java rename to austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/TencentSmsParam.java index 821df40..c798cb0 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/TencentSmsParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/TencentSmsParam.java @@ -1,4 +1,4 @@ -package com.java3y.austin.handler.domain; +package com.java3y.austin.handler.domain.sms; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/OfficialAccountParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/OfficialAccountParam.java similarity index 94% rename from austin-handler/src/main/java/com/java3y/austin/handler/domain/OfficialAccountParam.java rename to austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/OfficialAccountParam.java index dd97e83..5b1a797 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/OfficialAccountParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/OfficialAccountParam.java @@ -1,4 +1,4 @@ -package com.java3y.austin.handler.domain; +package com.java3y.austin.handler.domain.wechat; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java new file mode 100644 index 0000000..4fb4be5 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java @@ -0,0 +1,114 @@ +package com.java3y.austin.handler.handler.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.base.Throwables; +import com.java3y.austin.common.constant.AustinConstant; +import com.java3y.austin.common.domain.TaskInfo; +import com.java3y.austin.common.dto.DingDingContentModel; +import com.java3y.austin.common.enums.ChannelType; +import com.java3y.austin.handler.domain.dingding.DingDingRobotAccount; +import com.java3y.austin.handler.domain.dingding.DingDingRobotParam; +import com.java3y.austin.handler.domain.dingding.DingDingRobotResult; +import com.java3y.austin.handler.handler.BaseHandler; +import com.java3y.austin.handler.handler.Handler; +import com.java3y.austin.support.utils.AccountUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.net.URLEncoder; +import java.util.ArrayList; + +/** + * 钉钉消息自定义机器人 消息处理器 + * + * @author 3y + */ +@Slf4j +@Service +public class DingDingRobotHandler extends BaseHandler implements Handler { + + private static final String DING_DING_ROBOT_ACCOUNT_KEY = "dingDingRobotAccount"; + private static final String PREFIX = "ding_ding_robot_"; + + @Autowired + private AccountUtils accountUtils; + + public DingDingRobotHandler() { + channelCode = ChannelType.DING_DING_ROBOT.getCode(); + } + + @Override + public boolean handler(TaskInfo taskInfo) { + try { + DingDingRobotAccount account = accountUtils.getAccount(taskInfo.getSendAccount(), DING_DING_ROBOT_ACCOUNT_KEY, PREFIX, new DingDingRobotAccount()); + DingDingRobotParam dingDingRobotParam = assembleParam(taskInfo); + String httpResult = HttpUtil.post(assembleParamUrl(account), JSON.toJSONString(dingDingRobotParam)); + DingDingRobotResult dingDingRobotResult = JSON.parseObject(httpResult, DingDingRobotResult.class); + if (dingDingRobotResult.getErrCode() == 0) { + return true; + } + // 常见的错误 应当 关联至 AnchorState,由austin后台统一透出失败原因 + log.error("DingDingHandler#handler fail!result:{},params:{}", JSON.toJSONString(dingDingRobotResult), JSON.toJSONString(taskInfo)); + } catch (Exception e) { + log.error("DingDingHandler#handler fail!e:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); + } + return false; + } + + private DingDingRobotParam assembleParam(TaskInfo taskInfo) { + + // 接收者相关 + DingDingRobotParam.AtVO atVo = DingDingRobotParam.AtVO.builder().build(); + if (AustinConstant.SEND_ALL.equals(CollUtil.getFirst(taskInfo.getReceiver()))) { + atVo.setIsAtAll(true); + } else { + atVo.setAtUserIds(new ArrayList<>(taskInfo.getReceiver())); + } + + // 消息类型以及内容相关 + DingDingContentModel contentModel = (DingDingContentModel) taskInfo.getContentModel(); + return DingDingRobotParam.builder().at(atVo).msgtype("text") + .text(DingDingRobotParam.TextVO.builder().content(contentModel.getContent()).build()).build(); + } + + /** + * 拼装 url + * + * @param account + * @return + */ + private String assembleParamUrl(DingDingRobotAccount account) { + long currentTimeMillis = System.currentTimeMillis(); + String sign = assembleSign(currentTimeMillis, account.getSecret()); + return (account.getWebhook() + "×tamp=" + currentTimeMillis + "&sign=" + sign); + } + + /** + * 使用HmacSHA256算法计算签名 + * + * @param currentTimeMillis + * @param secret + * @return + */ + private String assembleSign(long currentTimeMillis, String secret) { + String sign = ""; + try { + String stringToSign = currentTimeMillis + String.valueOf(StrUtil.C_LF) + secret; + Mac mac = Mac.getInstance(AustinConstant.HMAC_SHA256_ENCRYPTION_ALGO); + mac.init(new SecretKeySpec(secret.getBytes(AustinConstant.CHARSET_NAME), AustinConstant.HMAC_SHA256_ENCRYPTION_ALGO)); + byte[] signData = mac.doFinal(stringToSign.getBytes(AustinConstant.CHARSET_NAME)); + sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), AustinConstant.CHARSET_NAME); + } catch (Exception e) { + log.error("DingDingHandler#assembleSign fail!:{}", Throwables.getStackTraceAsString(e)); + } + return sign; + } +} + diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java index eb98ca1..8f7c283 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java @@ -3,6 +3,7 @@ package com.java3y.austin.handler.handler.impl; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; +import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.EnterpriseWeChatContentModel; import com.java3y.austin.common.enums.ChannelType; @@ -10,6 +11,7 @@ import com.java3y.austin.handler.handler.BaseHandler; import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.support.utils.AccountUtils; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxMpErrorMsgEnum; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.api.impl.WxCpMessageServiceImpl; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; @@ -29,9 +31,8 @@ import org.springframework.stereotype.Component; public class EnterpriseWeChatHandler extends BaseHandler implements Handler { /** - * 构建WxCpMessage时需要用的常量 + * 切割userId 的分隔符 */ - private static final String ALL = "@all"; private static final String DELIMITER = "|"; /** @@ -53,8 +54,11 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { WxCpDefaultConfigImpl accountConfig = accountUtils.getAccount(taskInfo.getSendAccount(), ENTERPRISE_WECHAT_ACCOUNT_KEY, PREFIX, new WxCpDefaultConfigImpl()); WxCpMessageServiceImpl messageService = new WxCpMessageServiceImpl(initService(accountConfig)); WxCpMessageSendResult result = messageService.send(buildWxCpMessage(taskInfo, accountConfig.getAgentId())); - buildAnchorState(result); - return true; + if (Integer.valueOf(WxMpErrorMsgEnum.CODE_0.getCode()).equals(result.getErrCode())) { + return true; + } + // 常见的错误 应当 关联至 AnchorState,由austin后台统一透出失败原因 + log.error("EnterpriseWeChatHandler#handler fail!result:{},params:{}", JSON.toJSONString(result), JSON.toJSONString(taskInfo)); } catch (Exception e) { log.error("EnterpriseWeChatHandler#handler fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); @@ -62,14 +66,6 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { return false; } - /** - * 打点相关的信息记录 - * - * @param result - */ - private void buildAnchorState(WxCpMessageSendResult result) { - - } /** @@ -93,7 +89,7 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { */ private WxCpMessage buildWxCpMessage(TaskInfo taskInfo, Integer agentId) { String userId; - if (ALL.equals(CollUtil.getFirst(taskInfo.getReceiver()))) { + if (AustinConstant.SEND_ALL.equals(CollUtil.getFirst(taskInfo.getReceiver()))) { userId = CollUtil.getFirst(taskInfo.getReceiver()); } else { userId = StringUtils.join(taskInfo.getReceiver(), DELIMITER); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java index c9ee59e..7a23499 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java @@ -7,7 +7,7 @@ import com.google.common.base.Throwables; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.SmsContentModel; import com.java3y.austin.common.enums.ChannelType; -import com.java3y.austin.handler.domain.SmsParam; +import com.java3y.austin.handler.domain.sms.SmsParam; import com.java3y.austin.handler.handler.BaseHandler; import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.handler.script.SmsScript; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/SmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/SmsScript.java index daeb1a2..94560ec 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/script/SmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/SmsScript.java @@ -1,7 +1,7 @@ package com.java3y.austin.handler.script; -import com.java3y.austin.handler.domain.SmsParam; +import com.java3y.austin.handler.domain.sms.SmsParam; import com.java3y.austin.support.domain.SmsRecord; import java.util.List; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java index acbcb54..510bbfc 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java @@ -5,8 +5,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.IdUtil; import com.java3y.austin.common.enums.SmsStatus; -import com.java3y.austin.handler.domain.SmsParam; -import com.java3y.austin.handler.domain.TencentSmsParam; +import com.java3y.austin.handler.domain.sms.SmsParam; +import com.java3y.austin.handler.domain.sms.TencentSmsParam; import com.java3y.austin.handler.script.SmsScript; import com.java3y.austin.support.domain.SmsRecord; import com.java3y.austin.support.utils.AccountUtils; diff --git a/austin-support/pom.xml b/austin-support/pom.xml index f4f672a..0a9a1bf 100644 --- a/austin-support/pom.xml +++ b/austin-support/pom.xml @@ -83,6 +83,11 @@ io.github.lyh200 dynamic-tp-spring-boot-starter-apollo + + + com.aliyun + dingtalk + \ No newline at end of file diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java index a463614..2d3792f 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java @@ -24,6 +24,7 @@ public class AccountUtils { * (key:smsAccount)短信参数示例:[{"sms_10":{"url":"sms.tencentcloudapi.com","region":"ap-guangzhou","secretId":"AKIDhDUUDfffffMEqBF1WljQq","secretKey":"B4h39yWnfffff7D2btue7JErDJ8gxyi","smsSdkAppId":"140025","templateId":"11897","signName":"Java3y公众号","supplierId":10,"supplierName":"腾讯云"}}] * (key:emailAccount)邮件参数示例:[{"email_10":{"host":"smtp.qq.com","port":465,"user":"403686131@qq.com","pass":"","from":"403686131@qq.com"}}] * (key:enterpriseWechatAccount)企业微信参数示例:[{"enterprise_wechat_10":{"corpId":"wwf87603333e00069c","corpSecret":"-IFWxS2222QxzPIorNVUQn144444D915DM","agentId":10044442,"token":"rXROB3333Kf6i","aesKey":"MKZtoFxHIM44444M7ieag3r9ZPUsl"}}] + * (key:dingDingRobotAccount) 钉钉自定义机器人参数实例:[{"ding_ding_robot_10":{"secret":"SEC996d8d9d4768aded74114faae924f229229de444475a1c295d64fedf","webhook":"https://oapi.dingtalk.com/robot/send?access_token=8d03b644ffb6534b203d87333367328b0c3003d164715d2c6c6e56"}}] */ public T getAccount(Integer sendAccount, String apolloKey, String prefix, T t) { String accountValues = config.getProperty(apolloKey, AustinConstant.APOLLO_DEFAULT_VALUE_JSON_ARRAY); diff --git a/pom.xml b/pom.xml index 1005812..5571aed 100644 --- a/pom.xml +++ b/pom.xml @@ -174,6 +174,13 @@ ${weixin-java} + + + com.aliyun + dingtalk + 1.3.22 + +