diff --git a/pom.xml b/pom.xml index 288f801e2..c37ce8da3 100644 --- a/pom.xml +++ b/pom.xml @@ -22,11 +22,9 @@ 17 17 1.1.0-beta2 - 1.0.0 4.1.94.Final 5.8.25 3.5.7 - 2.0.0 2.0.0 1.3.6 2.6.2 @@ -136,12 +134,6 @@ snail-job-client-job-core ${revision} - - - com.aliyun - alibaba-dingtalk-service-sdk - ${alibaba-dingtalk.version} - com.baomidou mybatis-plus-boot-starter diff --git a/snail-job-common/snail-job-common-core/pom.xml b/snail-job-common/snail-job-common-core/pom.xml index 1a732609e..897396165 100644 --- a/snail-job-common/snail-job-common-core/pom.xml +++ b/snail-job-common/snail-job-common-core/pom.xml @@ -31,20 +31,6 @@ lombok true - - com.aliyun - alibaba-dingtalk-service-sdk - - - log4j - log4j - - - commons-logging - commons-logging - - - commons-configuration commons-configuration diff --git a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/DingDingUtils.java b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/DingDingUtils.java index b84f2d512..6742f4b26 100644 --- a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/DingDingUtils.java +++ b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/util/DingDingUtils.java @@ -2,15 +2,17 @@ package com.aizuda.snailjob.common.core.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.aizuda.snailjob.common.core.constant.SystemConstants; import com.aizuda.snailjob.common.log.SnailJobLog; -import com.dingtalk.api.DefaultDingTalkClient; -import com.dingtalk.api.DingTalkClient; -import com.dingtalk.api.request.OapiRobotSendRequest; +import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author: opensnail @@ -22,28 +24,29 @@ public class DingDingUtils { public static final String atLabel = "@{0}"; /** - * 组装OapiRobotSendRequest + * 组装 DingTalkRequest * - * @param title - * @param text - * @return + * @param title 标题 + * @param text 内容 + * @return DingTalkRequest */ - public static OapiRobotSendRequest buildSendRequest(String title, String text, List ats) { - OapiRobotSendRequest request = new OapiRobotSendRequest(); - request.setMsgtype("markdown"); - OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown(); - markdown.setTitle(title); - // 防止文本过长钉钉限流,目前最大为4000 - markdown.setText(StrUtil.sub(getAtText(ats, text, atLabel), 0, 4000)); - request.setMarkdown(markdown); + public static String buildSendRequest(String title, String text, List ats) { + Map message = new HashMap<>(); + message.put("msgtype", "markdown"); + Map markdown = new HashMap<>(); + markdown.put("text", StrUtil.sub(getAtText(ats, text, atLabel), 0, 4000)); + markdown.put("title", title); + message.put("markdown", markdown); - OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); - at.setAtMobiles(ats); - request.setAt(at); + // 处理提到的人 + Map at = new HashMap<>(); + at.put("atMobiles", ats); + at.put("isAtAll", true); if (CollUtil.isNotEmpty(ats)) { - at.setIsAtAll(ats.stream().map(String::toLowerCase).anyMatch(SystemConstants.AT_ALL::equals)); + at.put("isAtAll", ats.stream().map(String::toLowerCase).anyMatch(SystemConstants.AT_ALL::equals)); } - return request; + message.put("at", at); + return JsonUtil.toJsonString(message); } public static String getAtText(List ats, String text, String atLabel) { @@ -57,18 +60,28 @@ public class DingDingUtils { } /** - * @param request + * @param request DingTalkRequest */ - public static boolean sendMessage(OapiRobotSendRequest request, String url) { + public static boolean sendMessage(String request, String url) { try { if (StrUtil.isBlank(url)) { return false; } - DingTalkClient client = new DefaultDingTalkClient(url); - client.execute(request); + // 发送POST请求 + HttpResponse response = HttpRequest.post(url) + .headerMap(getHeaders(), true) + .body(request) + .execute(); + String body = response.body(); + JsonNode bodyJson = JsonUtil.toJson(body); + int errCode = bodyJson.get("errcode").asInt(); + if (errCode != 0) { + SnailJobLog.LOCAL.error("dingDingProcessNotify: 钉钉发送失败, 错误码:{}, 错误信息:{}", errCode, bodyJson.get("errmsg").asText()); + return false; + } return true; } catch (Exception e) { SnailJobLog.LOCAL.error("dingDingProcessNotify", e); @@ -77,4 +90,10 @@ public class DingDingUtils { return false; } + public static Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + return headers; + } + }