From 41942101a71916234582961b59d95bed56404ecf Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 26 Oct 2022 13:49:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=97=A5=E5=BF=97=E6=89=93?= =?UTF-8?q?=E5=8D=B04?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/filter/LogMsgSendFilter.java | 2 +- .../tools/utils/DingdingMsgSender.java | 101 ++++++++++++------ 2 files changed, 72 insertions(+), 31 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java index dd7bc540ed..bec26ea89d 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java @@ -51,7 +51,7 @@ public class LogMsgSendFilter extends LevelFilter { try { //排除其他包路径的东西 if (!event.getLoggerName().startsWith(baseProjectPackage)){ - return FilterReply.DENY; + return super.decide(event); } getServerInfo(); if (EnvEnum.LOCAL.getName().equals(activeEnv)){ diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java index bb663ac327..b4912c17ee 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java @@ -1,6 +1,8 @@ package com.epmet.commons.tools.utils; import com.alibaba.fastjson.JSON; +import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.request.OapiRobotSendRequest; import com.epmet.commons.tools.dto.form.DingTalkTextMsg; import com.google.common.collect.Lists; import org.apache.commons.codec.binary.Base64; @@ -12,9 +14,13 @@ import org.springframework.stereotype.Component; import javax.annotation.PreDestroy; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; +import javax.validation.constraints.NotNull; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import java.util.concurrent.ArrayBlockingQueue; /** @@ -115,36 +121,71 @@ public class DingdingMsgSender { running = false; } - /** - * 发送POST 请求 - * - * @param param 请求参数,JSON格式 - * @return - */ - private Result sendMsg(DingTalkTextMsg param) { - if (StringUtils.isBlank(param.getWebHook())) { - param.setWebHook(webHook); - } - if (StringUtils.isBlank(param.getSecret())) { - param.setSecret(secret); - } - Result result = new Result().error(); - Long timestamp = System.currentTimeMillis(); - try { - String stringToSign = timestamp + "\n" + param.getSecret(); - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); - String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); - String url = param.getWebHook(); - url = url.concat("×tamp=" + timestamp + "&sign=" + sign); - String jsonStrParam = param.getMsgContent(); - result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam); - } catch (Exception e) { - logger.warn("sendPostByJSON error", e); - } - return result; - } + /** + * 发送POST 请求 + * + * @param param 请求参数,JSON格式 + * @return + */ + @Deprecated + private Result sendMsg(DingTalkTextMsg param) { + if (StringUtils.isBlank(param.getWebHook())) { + param.setWebHook(webHook); + } + if (StringUtils.isBlank(param.getSecret())) { + param.setSecret(secret); + } + Result result = new Result().error(); + try { + String url = getUrlString(param, System.currentTimeMillis()); + String jsonStrParam = param.getMsgContent(); + result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam); + } catch (Exception e) { + logger.warn("sendPostByJSON error", e); + } + return result; + } + + @NotNull + private String getUrlString(DingTalkTextMsg param, Long timestamp) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException { + String stringToSign = timestamp + "\n" + param.getSecret(); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + String url = param.getWebHook(); + url = url.concat("×tamp=" + timestamp + "&sign=" + sign); + return url; + } + + /** + * 发送POST 请求 + * + * @param param 请求参数,JSON格式 + * @return + */ + public Result sendMsgSdk(DingTalkTextMsg param) { + if (StringUtils.isBlank(param.getWebHook())) { + param.setWebHook(webHook); + } + if (StringUtils.isBlank(param.getSecret())) { + param.setSecret(secret); + } + Result result = new Result().error(); + try { + String url = getUrlString(param, System.currentTimeMillis()); + DefaultDingTalkClient client = new DefaultDingTalkClient(url); + OapiRobotSendRequest request = new OapiRobotSendRequest(); + request.setMsgtype("text"); + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent("sdk"+param.getContent()); + request.setText(text); + client.execute(request); + } catch (Exception e) { + logger.warn("sendPostByJSON error", e); + } + return result; + } public static void main(String[] args) { for (int i = 0; i < 50; i++) {