This is an automated email from the ASF dual-hosted git repository.
leonbao 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 86b476a [Feature-7460][Alert] Wechat alert add send to group chat
(#7465)
86b476a is described below
commit 86b476a1601872d1e47c3e9ca5ee4c18cbea92d3
Author: SbloodyS <[email protected]>
AuthorDate: Sat Dec 18 10:26:16 2021 +0800
[Feature-7460][Alert] Wechat alert add send to group chat (#7465)
* feature_7460
* feature_7460
Co-authored-by: SbloodyS <[email protected]>
---
.../alert/wechat/WeChatAlertChannelFactory.java | 9 +++++++-
.../plugin/alert/wechat/WeChatAlertConstants.java | 3 +++
.../alert/wechat/WeChatAlertParamsConstants.java | 4 ++++
.../plugin/alert/wechat/WeChatSender.java | 9 +++++++-
.../{WeChatAlertConstants.java => WeChatType.java} | 25 ++++++++++++++--------
.../wechat/WeChatAlertChannelFactoryTest.java | 2 +-
6 files changed, 40 insertions(+), 12 deletions(-)
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactory.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactory.java
index 299ffdd..ef5fc6f 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactory.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactory.java
@@ -76,6 +76,13 @@ public final class WeChatAlertChannelFactory implements
AlertChannelFactory {
.build())
.build();
+ RadioParam sendType =
RadioParam.newBuilder(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SEND_TYPE,
WeChatAlertParamsConstants.ENTERPRISE_WE_CHAT_SEND_TYPE)
+ .addParamsOptions(new ParamsOptions(WeChatType.APP.getDescp(),
WeChatType.APP.getDescp(), false))
+ .addParamsOptions(new
ParamsOptions(WeChatType.APPCHAT.getDescp(), WeChatType.APPCHAT.getDescp(),
false))
+ .setValue(WeChatType.APP.getDescp())
+ .addValidate(Validate.newBuilder().setRequired(true).build())
+ .build();
+
RadioParam showType =
RadioParam.newBuilder(AlertConstants.NAME_SHOW_TYPE, AlertConstants.SHOW_TYPE)
.addParamsOptions(new
ParamsOptions(ShowType.TABLE.getDescp(), ShowType.TABLE.getDescp(), false))
.addParamsOptions(new
ParamsOptions(ShowType.TEXT.getDescp(), ShowType.TEXT.getDescp(), false))
@@ -83,7 +90,7 @@ public final class WeChatAlertChannelFactory implements
AlertChannelFactory {
.addValidate(Validate.newBuilder().setRequired(true).build())
.build();
- return Arrays.asList(corpIdParam, secretParam, usersParam,
userSendMsgParam, agentIdParam, showType);
+ return Arrays.asList(corpIdParam, secretParam, usersParam,
userSendMsgParam, agentIdParam, sendType, showType);
}
@Override
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
index 141542f..9c90d63 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
@@ -26,6 +26,9 @@ public final class WeChatAlertConstants {
static final String WE_CHAT_PUSH_URL =
"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}";
+ static final String WE_CHAT_APP_CHAT_PUSH_URL =
"https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token" +
+ "={token}";
+
static final String WE_CHAT_TOKEN_URL =
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpId}&corpsecret={secret}";
private WeChatAlertConstants() {
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
index e4c6381..5cf9e40 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
@@ -31,6 +31,10 @@ public final class WeChatAlertParamsConstants {
static final String ENTERPRISE_WE_CHAT_USERS = "$t('users')";
static final String NAME_ENTERPRISE_WE_CHAT_USERS = "users";
+ static final String NAME_ENTERPRISE_WE_CHAT_SEND_TYPE = "sendType";
+
+ static final String ENTERPRISE_WE_CHAT_SEND_TYPE = "send.type";
+
private WeChatAlertParamsConstants() {
throw new UnsupportedOperationException("This is a utility class and
cannot be instantiated");
}
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
index b2d5568..badd6f2 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
@@ -63,6 +63,7 @@ public final class WeChatSender {
private final String weChatUserSendMsg;
private final String weChatTokenUrlReplace;
private final String weChatToken;
+ private final String sendType;
private final String showType;
WeChatSender(Map<String, String> config) {
@@ -72,6 +73,7 @@ public final class WeChatSender {
String weChatSecret =
config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SECRET);
String weChatTokenUrl = WeChatAlertConstants.WE_CHAT_TOKEN_URL;
weChatUserSendMsg =
config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USER_SEND_MSG);
+ sendType =
config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SEND_TYPE);
showType = config.get(AlertConstants.NAME_SHOW_TYPE);
requireNonNull(showType, AlertConstants.NAME_SHOW_TYPE +
MUST_NOT_NULL);
weChatTokenUrlReplace = weChatTokenUrl
@@ -257,7 +259,12 @@ public final class WeChatSender {
alertResult.setStatus(ALERT_STATUS);
return alertResult;
}
- String enterpriseWeChatPushUrlReplace =
WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(TOKEN_REGEX, weChatToken);
+ String enterpriseWeChatPushUrlReplace = "";
+ if (sendType.equals(WeChatType.APP.getDescp())) {
+ enterpriseWeChatPushUrlReplace =
WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(TOKEN_REGEX, weChatToken);
+ } else if (sendType.equals(WeChatType.APPCHAT.getDescp())) {
+ enterpriseWeChatPushUrlReplace =
WeChatAlertConstants.WE_CHAT_APP_CHAT_PUSH_URL.replace(TOKEN_REGEX,
weChatToken);
+ }
try {
return
checkWeChatSendMsgResult(post(enterpriseWeChatPushUrlReplace, msg));
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatType.java
similarity index 60%
copy from
dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
copy to
dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatType.java
index 141542f..eac208a 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatType.java
@@ -15,20 +15,27 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.plugin.alert.wechat;
-public final class WeChatAlertConstants {
- static final String MARKDOWN_QUOTE = ">";
+package org.apache.dolphinscheduler.plugin.alert.wechat;
- static final String MARKDOWN_ENTER = "\n";
+public enum WeChatType {
+ APP(1, "应用"),
+ APPCHAT(2, "群聊"),
+ ;
- static final String CHARSET = "UTF-8";
+ private final int code;
+ private final String descp;
- static final String WE_CHAT_PUSH_URL =
"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}";
+ WeChatType(int code, String descp) {
+ this.code = code;
+ this.descp = descp;
+ }
- static final String WE_CHAT_TOKEN_URL =
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpId}&corpsecret={secret}";
+ public int getCode() {
+ return code;
+ }
- private WeChatAlertConstants() {
- throw new UnsupportedOperationException("This is a utility class and
cannot be instantiated");
+ public String getDescp() {
+ return descp;
}
}
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
index 04ecc36..648c206 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-wechat/src/test/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertChannelFactoryTest.java
@@ -36,7 +36,7 @@ public class WeChatAlertChannelFactoryTest {
WeChatAlertChannelFactory weChatAlertChannelFactory = new
WeChatAlertChannelFactory();
List<PluginParams> params = weChatAlertChannelFactory.params();
JSONUtils.toJsonString(params);
- Assert.assertEquals(6, params.size());
+ Assert.assertEquals(7, params.size());
}
@Test