This is an automated email from the ASF dual-hosted git repository.
zhongjiajie pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 1fd748f [Feature-8138][Task] add at@ msg in the dingtalk task plugin
(#8139)
1fd748f is described below
commit 1fd748f376ad652783c94fd7c2d9e602291acb16
Author: Kerwin <[email protected]>
AuthorDate: Fri Jan 21 17:09:39 2022 +0800
[Feature-8138][Task] add at@ msg in the dingtalk task plugin (#8139)
---
.../dingtalk/DingTalkAlertChannelFactory.java | 24 ++++++++++++++-
.../alert/dingtalk/DingTalkParamsConstants.java | 9 ++++++
.../plugin/alert/dingtalk/DingTalkSender.java | 36 ++++++++++++++++++++--
.../dingtalk/DingTalkAlertChannelFactoryTest.java | 2 +-
.../src/js/module/i18n/locale/en_US.js | 3 ++
.../src/js/module/i18n/locale/zh_CN.js | 3 ++
6 files changed, 72 insertions(+), 5 deletions(-)
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
index 4fb9832..4694a8c 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactory.java
@@ -64,6 +64,28 @@ public final class DingTalkAlertChannelFactory implements
AlertChannelFactory {
.setRequired(false)
.build())
.build();
+ InputParam atMobilesParam = InputParam
+ .newBuilder(DingTalkParamsConstants.NAME_DING_TALK_AT_MOBILES,
DingTalkParamsConstants.DING_TALK_AT_MOBILES)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false)
+ .build())
+ .build();
+ InputParam atUserIdsParam = InputParam
+ .newBuilder(DingTalkParamsConstants.NAME_DING_TALK_AT_USERIDS,
DingTalkParamsConstants.DING_TALK_AT_USERIDS)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false)
+ .build())
+ .build();
+ RadioParam isAtAll = RadioParam
+ .newBuilder(DingTalkParamsConstants.NAME_DING_TALK_AT_ALL,
DingTalkParamsConstants.DING_TALK_AT_ALL)
+ .addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE,
false))
+ .addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE,
false))
+ .setValue(STRING_FALSE)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false)
+ .build())
+ .build();
+
RadioParam isEnableProxy = RadioParam
.newBuilder(DingTalkParamsConstants.NAME_DING_TALK_PROXY_ENABLE,
DingTalkParamsConstants.DING_TALK_PROXY_ENABLE)
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE,
false))
@@ -98,7 +120,7 @@ public final class DingTalkAlertChannelFactory implements
AlertChannelFactory {
.setPlaceholder("if enable use authentication, you need input
password")
.build();
- return Arrays.asList(webHookParam, keywordParam, secretParam,
isEnableProxy, proxyParam, portParam, userParam, passwordParam);
+ return Arrays.asList(webHookParam, keywordParam, secretParam,
atMobilesParam, atUserIdsParam, isAtAll, isEnableProxy, proxyParam, portParam,
userParam, passwordParam);
}
@Override
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
index 6810deb..da280f1 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
@@ -30,6 +30,15 @@ public final class DingTalkParamsConstants {
static final String DING_TALK_SECRET = "$t('secret')";
static final String NAME_DING_TALK_SECRET = "Secret";
+ static final String DING_TALK_AT_MOBILES = "$t('atMobiles')";
+ static final String NAME_DING_TALK_AT_MOBILES = "AtMobiles";
+
+ static final String DING_TALK_AT_USERIDS = "$t('atUserIds')";
+ static final String NAME_DING_TALK_AT_USERIDS = "AtUserIds";
+
+ static final String DING_TALK_AT_ALL = "$t('isAtAll')";
+ static final String NAME_DING_TALK_AT_ALL = "IsAtAll";
+
static final String DING_TALK_PROXY = "$t('proxy')";
static final String NAME_DING_TALK_PROXY = "Proxy";
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
index ca4ec2d..e7a5a59 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
@@ -39,8 +39,12 @@ import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.Objects;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
@@ -60,6 +64,11 @@ public final class DingTalkSender {
private final String url;
private final String keyword;
private final String secret;
+
+ private final String atMobiles;
+ private final String atUserIds;
+ private final Boolean atAll;
+
private final Boolean enableProxy;
private String proxy;
@@ -74,11 +83,16 @@ public final class DingTalkSender {
url = config.get(DingTalkParamsConstants.NAME_DING_TALK_WEB_HOOK);
keyword = config.get(DingTalkParamsConstants.NAME_DING_TALK_KEYWORD);
secret = config.get(DingTalkParamsConstants.NAME_DING_TALK_SECRET);
+
+ atMobiles =
config.get(DingTalkParamsConstants.NAME_DING_TALK_AT_MOBILES);
+ atUserIds =
config.get(DingTalkParamsConstants.NAME_DING_TALK_AT_USERIDS);
+ atAll =
Boolean.valueOf(config.get(DingTalkParamsConstants.NAME_DING_TALK_AT_ALL));
+
enableProxy =
Boolean.valueOf(config.get(DingTalkParamsConstants.NAME_DING_TALK_PROXY_ENABLE));
if (Boolean.TRUE.equals(enableProxy)) {
port =
Integer.parseInt(config.get(DingTalkParamsConstants.NAME_DING_TALK_PORT));
proxy = config.get(DingTalkParamsConstants.NAME_DING_TALK_PROXY);
- user = config.get(DingTalkParamsConstants.DING_TALK_USER);
+ user = config.get(DingTalkParamsConstants.NAME_DING_TALK_USER);
password =
config.get(DingTalkParamsConstants.NAME_DING_TALK_PASSWORD);
}
}
@@ -107,7 +121,7 @@ public final class DingTalkSender {
return RequestConfig.custom().setProxy(httpProxy).build();
}
- private static String textToJsonString(String text) {
+ private String textToJsonString(String text) {
Map<String, Object> items = new HashMap<>();
items.put("msgtype", "text");
Map<String, String> textContent = new HashMap<>();
@@ -115,10 +129,26 @@ public final class DingTalkSender {
String txt = StringUtils.newStringUtf8(byt);
textContent.put("content", txt);
items.put("text", textContent);
+
+ setMsgAt(items);
return JSONUtils.toJsonString(items);
}
- private static AlertResult checkSendDingTalkSendMsgResult(String result) {
+ private void setMsgAt(Map<String, Object> items) {
+ Map<String, Object> at = new HashMap<>();
+
+ String[] atMobileArray =
org.apache.dolphinscheduler.spi.utils.StringUtils.isNotBlank(atMobiles) ?
atMobiles.split(",") : new String[0];
+ String[] atUserArray =
org.apache.dolphinscheduler.spi.utils.StringUtils.isNotBlank(atUserIds) ?
atUserIds.split(",") : new String[0];
+ boolean isAtAll = Objects.isNull(atAll) ? false : atAll;
+
+ at.put("atMobiles", atMobileArray);
+ at.put("atUserIds", atUserArray);
+ at.put("isAtAll", isAtAll);
+
+ items.put("at", at);
+ }
+
+ private AlertResult checkSendDingTalkSendMsgResult(String result) {
AlertResult alertResult = new AlertResult();
alertResult.setStatus("false");
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
index 9905195..d427606 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannelFactoryTest.java
@@ -32,7 +32,7 @@ public class DingTalkAlertChannelFactoryTest {
DingTalkAlertChannelFactory dingTalkAlertChannelFactory = new
DingTalkAlertChannelFactory();
List<PluginParams> params = dingTalkAlertChannelFactory.params();
JSONUtils.toJsonString(params);
- Assert.assertEquals(8, params.size());
+ Assert.assertEquals(11, params.size());
}
@Test
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
index 30590fc..bbc15c9 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
@@ -727,6 +727,9 @@ export default {
webHook: 'WebHook',
Keyword: 'Keyword',
Secret: 'Secret',
+ AtMobiles: '@Mobiles',
+ AtUserIds: '@UserIds',
+ IsAtAll: '@All',
Proxy: 'Proxy',
receivers: 'Receivers',
receiverCcs: 'ReceiverCcs',
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
index d422a36..484bbe9 100644
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
@@ -727,6 +727,9 @@ export default {
webHook: 'Web钩子',
Keyword: '关键词',
Secret: '密钥',
+ AtMobiles: '@手机号',
+ AtUserIds: '@用户ID',
+ IsAtAll: '@所有人',
Proxy: '代理',
receivers: '收件人',
receiverCcs: '抄送人',