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;
+ }
+
}