From 0e2d09270ccaf8aa253b857994339c8f8bdacec4 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 4 Jun 2024 15:12:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=92=89=E9=92=89=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E5=8F=AF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/task/RuleCheckTask.java | 4 +- .../com/xydl/cac/util/DingTalkPushUtil.java | 67 +++++++++++-------- src/main/resources/application-dev.yml | 4 ++ src/main/resources/application-prod.yml | 4 ++ 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/xydl/cac/task/RuleCheckTask.java b/src/main/java/com/xydl/cac/task/RuleCheckTask.java index 6712e0a..8af1f9f 100644 --- a/src/main/java/com/xydl/cac/task/RuleCheckTask.java +++ b/src/main/java/com/xydl/cac/task/RuleCheckTask.java @@ -28,6 +28,8 @@ public class RuleCheckTask { DataService dataService; @Resource WarningRepository warningRepository; + @Resource + DingTalkPushUtil dingTalkPushUtil; @Scheduled(initialDelay = 90000, fixedDelay = 60000) private void checkAll() { @@ -88,7 +90,7 @@ public class RuleCheckTask { warningRepository.save(warning); String str = warning.getZsbName() + "-" + warning.getWarnDesc() + ", 采集时间:" + dateStr + ", 当前值:" + value + " " + warning.getTriggerDesc(); - DingTalkPushUtil.pushText(str); + dingTalkPushUtil.pushText(str); } } diff --git a/src/main/java/com/xydl/cac/util/DingTalkPushUtil.java b/src/main/java/com/xydl/cac/util/DingTalkPushUtil.java index b2d4ec7..3266e2d 100644 --- a/src/main/java/com/xydl/cac/util/DingTalkPushUtil.java +++ b/src/main/java/com/xydl/cac/util/DingTalkPushUtil.java @@ -6,6 +6,8 @@ import com.dingtalk.api.request.OapiRobotSendRequest; import com.dingtalk.api.response.OapiRobotSendResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; @@ -14,38 +16,45 @@ import java.net.URLEncoder; /** * 钉钉推送工具类 */ +@Component @Slf4j public class DingTalkPushUtil { - public static final String CUSTOM_ROBOT_TOKEN = "e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328"; - public static final String SECRET = "SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124"; - public static final String KEY_WORD = "运维告警: "; - - - public static void pushText(String content) { - try { - Long timestamp = System.currentTimeMillis(); - String stringToSign = timestamp + "\n" + SECRET; - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); - String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); - - //sign字段和timestamp字段必须拼接到请求URL上,否则会出现 310000 的错误信息 - DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?sign=" + sign + "×tamp=" + timestamp); - OapiRobotSendRequest req = new OapiRobotSendRequest(); - /** - * 发送文本消息 - */ - //定义文本内容 - OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); - text.setContent(KEY_WORD + content); - //设置消息类型 - req.setMsgtype("text"); - req.setText(text); - OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN); - } catch (Exception e) { - log.error("钉钉发送失败", e); + @Value("${cac.dingding.send}") + public boolean send; + @Value("${cac.dingding.token}") + public String token; + @Value("${cac.dingding.secret}") + public String secret; + public String KEY_WORD = "运维告警: "; + + + public void pushText(String content) { + if (send) { + try { + Long timestamp = System.currentTimeMillis(); + String stringToSign = timestamp + "\n" + secret; + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + + //sign字段和timestamp字段必须拼接到请求URL上,否则会出现 310000 的错误信息 + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?sign=" + sign + "×tamp=" + timestamp); + OapiRobotSendRequest req = new OapiRobotSendRequest(); + /** + * 发送文本消息 + */ + //定义文本内容 + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent(KEY_WORD + content); + //设置消息类型 + req.setMsgtype("text"); + req.setText(text); + OapiRobotSendResponse rsp = client.execute(req, token); + } catch (Exception e) { + log.error("钉钉发送失败", e); + } } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 418b6e1..cd489c0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -26,4 +26,8 @@ spring: max-request-size: 100MB cac: + dingding: + send: true + token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328 + secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124 rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y= diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index b2dbf20..47a1d9a 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -26,4 +26,8 @@ spring: max-request-size: 100MB cac: + dingding: + send: false + token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328 + secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124 rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=