From 09fcc9929a430d812f57c1ea06e5562b403c9d8c Mon Sep 17 00:00:00 2001
From: 刘小明 <liuxm_a@163.com>
Date: 星期三, 18 九月 2024 09:48:03 +0800
Subject: [PATCH] dingding发送群消息demo

---
 pms-parent/pms-global/pom.xml                                                        |    5 ++
 pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java |   11 +++++
 pms-parent/pms-global/src/main/resources/application-global.yml                      |    7 +++
 pms-parent/pom.xml                                                                   |    8 ++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java         |   84 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 113 insertions(+), 2 deletions(-)

diff --git a/pms-parent/pms-global/pom.xml b/pms-parent/pms-global/pom.xml
index d419493..66bc894 100644
--- a/pms-parent/pms-global/pom.xml
+++ b/pms-parent/pms-global/pom.xml
@@ -21,5 +21,10 @@
             <artifactId>pms-common</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+            <version>2.0.0</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java
new file mode 100644
index 0000000..0d89990
--- /dev/null
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java
@@ -0,0 +1,84 @@
+package com.dy.pmsGlobal.util;
+
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiRobotSendRequest;
+import com.dingtalk.api.response.OapiRobotSendResponse;
+import com.taobao.api.ApiException;
+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;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+@Slf4j
+@Component
+public class DingDingUtils {
+
+    @Value("${dingtalk.robot.access-token}")
+    private String custom_robot_token;
+
+//    public static final String USER_ID= "<you need @ group user's userId>";
+    @Value("${dingtalk.at-all}")
+    private boolean at_all;
+
+    @Value("${dingtalk.robot.secret}")
+    private String secret;
+
+    @Value("${dingtalk.robot.url}")
+    private String url;
+
+    public OapiRobotSendResponse send(String msg) {
+        try {
+            Long timestamp = System.currentTimeMillis();
+            String sign = sign(timestamp, secret);
+            System.out.println(sign);
+            //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭�
+            DingTalkClient client = new DefaultDingTalkClient(url+"?sign="+sign+"&timestamp="+timestamp);
+            OapiRobotSendRequest req = new OapiRobotSendRequest();
+            /**
+             * 鍙戦�佹枃鏈秷鎭�
+             */
+            //瀹氫箟鏂囨湰鍐呭
+            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
+            text.setContent(msg);
+            //瀹氫箟 @ 瀵硅薄
+            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
+            if(at_all) {
+                at.setIsAtAll(true);
+            }
+            //璁剧疆娑堟伅绫诲瀷
+            req.setMsgtype("text");
+            req.setText(text);
+            req.setAt(at);
+            OapiRobotSendResponse rsp = client.execute(req, custom_robot_token);
+            log.error("閽夐拤鍝嶅簲:"+rsp);
+            return rsp;
+        } catch (ApiException e) {
+            e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException(e);
+        } catch (InvalidKeyException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+    private String sign(Long timestamp, String secret) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
+        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");
+        return sign;
+    }
+
+}
diff --git a/pms-parent/pms-global/src/main/resources/application-global.yml b/pms-parent/pms-global/src/main/resources/application-global.yml
index 690b37c..79deadf 100644
--- a/pms-parent/pms-global/src/main/resources/application-global.yml
+++ b/pms-parent/pms-global/src/main/resources/application-global.yml
@@ -43,7 +43,12 @@
         cache-enabled: true  #鎵撳紑鍏ㄥ眬缂撳瓨寮�鍏筹紙浜岀骇鐜锛夛紝榛樿鍊兼槸true
         #default-enum-type-handler: com.dy.common.mybatis.envm.EnumCodeTypeHandler
 
-
+dingtalk:
+    robot:
+        url: https://oapi.dingtalk.com/robot/send
+        access-token: 5004482dce6b24d0e1e655b8e4376a6418cfcebce17ff792d0e68cbb63d6eb5b
+        secret: SEC985ad412f35ece68bb239cad88b6fba59b19461dd8d067e80fafa1270d6ab465
+    at-all: true
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
 tokennofilter:
     urls:
diff --git a/pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java b/pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java
index 70e2ae5..c170e6a 100644
--- a/pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java
+++ b/pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java
@@ -1,13 +1,22 @@
 package com.dy.pmsBase;
 
+import com.dingtalk.api.response.OapiRobotSendResponse;
+import com.dy.pmsGlobal.util.DingDingUtils;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
 class PmsWebBaseApplicationTests {
-
+    private DingDingUtils dingDingUtils;
+    @Autowired
+    public void setDingDingUtils(DingDingUtils dingDingUtils) {
+        this.dingDingUtils = dingDingUtils;
+    }
     @Test
     void contextLoads() {
+        OapiRobotSendResponse rsp = dingDingUtils.send("鍚勪綅,杩欐槸涓�鏉℃祴璇曟秷鎭�");
+        System.out.println(rsp.getErrcode());
     }
 
 }
diff --git a/pms-parent/pom.xml b/pms-parent/pom.xml
index 572bc78..902c8ca 100644
--- a/pms-parent/pom.xml
+++ b/pms-parent/pom.xml
@@ -235,6 +235,14 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <!--閽夐拤娑堟伅鎺ㄩ��-->
+            <dependency>
+                <groupId>com.aliyun</groupId>
+                <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+                <version>2.0.0</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <!-- vo po杞崲 -->
             <dependency>
                 <groupId>org.mapstruct</groupId>

--
Gitblit v1.8.0