From 2d0587169a80c2e7f799017e2d8e74090516a5b9 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期三, 31 七月 2024 11:44:49 +0800
Subject: [PATCH] 2024-07-31 朱宝民 钉钉消息推送

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml                         |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java |   16 ++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml                        |    2 
 pipIrr-platform/pipIrr-global/pom.xml                                                                   |   13 ++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java                    |   86 ++++++++++++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java   |   12 ++++
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                 |    9 +++
 7 files changed, 134 insertions(+), 6 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml
index 67e9c0e..4624b96 100644
--- a/pipIrr-platform/pipIrr-global/pom.xml
+++ b/pipIrr-platform/pipIrr-global/pom.xml
@@ -140,6 +140,19 @@
             <artifactId>okhttp</artifactId>
             <version>4.9.2</version>
         </dependency>
+
+        <!--閽夐拤娑堟伅鎺ㄩ��-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.15</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
new file mode 100644
index 0000000..67afbfc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
@@ -0,0 +1,86 @@
+package com.dy.pipIrrGlobal.config;
+
+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 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;
+import java.util.Collections;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-31 9:20
+ * @LastEditTime 2024-07-31 9:20
+ * @Description 閽夐拤瀹㈡埛绔伐鍏风被
+ */
+
+@Component
+public class DingTalk {
+    @Value("${dingtalk.robot.url}")
+    private String URL;
+
+    @Value("${dingtalk.robot.access-token}")
+    private String CUSTOM_ROBOT_TOKEN;
+
+    @Value("${dingtalk.robot.secret}")
+    private String SECRET;
+
+    @Value("${dingtalk.at-all}")
+    private Boolean AT_ALL;
+
+    @Value("${dingtalk.mobile}")
+    private String MOBILE;
+
+    public void sendMessage(String message) {
+        try {
+            Long timestamp = System.currentTimeMillis();
+            String secret = SECRET;
+            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瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭�
+            DingTalkClient client = new DefaultDingTalkClient( URL + "?sign=" + sign + "&timestamp=" + timestamp);
+            OapiRobotSendRequest req = new OapiRobotSendRequest();
+            /**
+             * 鍙戦�佹枃鏈秷鎭�
+             */
+            //瀹氫箟鏂囨湰鍐呭
+            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
+            text.setContent(message);
+            //瀹氫箟 @瀵硅薄
+            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
+            if(AT_ALL) {
+                at.setIsAtAll(true);
+            }else {
+                at.setAtMobiles(Collections.singletonList(MOBILE));
+            }
+            //璁剧疆娑堟伅绫诲瀷
+            req.setMsgtype("text");
+            req.setText(text);
+            req.setAt(at);
+            OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
+            System.out.println(rsp.getBody());
+        } 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);
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index e39b17a..fc10859 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -167,3 +167,12 @@
 auto-statistics:
     startHour: 17 #寮�濮嬪皬鏃� 0
     startMinute: 19 #寮�濮嬪垎閽� 5
+
+#閽夐拤娑堟伅鎺ㄩ��
+dingtalk:
+    robot:
+        url: https://oapi.dingtalk.com/robot/send
+        access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f
+        secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7
+    at-all: true
+    mobile: 18602657034
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java
index 455015f..8fabaa3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java
@@ -13,6 +13,7 @@
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import com.dy.pipIrrProject.intake.qo.OnLineIntakesQO;
 import com.dy.pipIrrProject.result.ProjectResultCode;
+import com.taobao.api.ApiException;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -51,6 +52,11 @@
 @RequiredArgsConstructor
 public class IntakeCtrl {
     private final IntakeSv intakeSv;
+
+    @GetMapping("/test")
+    public String sendMessage(String message) throws ApiException {
+        return intakeSv.sendMessage(message);
+    }
 
     /**
      * 瀹㈡埛绔姹傚緱鍒版墍鏈夊彇姘村彛鍚嶅瓧
@@ -142,7 +148,7 @@
     @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
-    public BaseResponse<Boolean> add(@RequestBody  @Valid PrIntake po, @Parameter(hidden = true) BindingResult bindingResult) {
+    public BaseResponse<Boolean> add(@RequestBody @Valid PrIntake po, @Parameter(hidden = true) BindingResult bindingResult) {
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         if (bindingResult != null && bindingResult.hasErrors()) {
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
@@ -152,7 +158,7 @@
             return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
         }
         po.setOperateDt(new Date());
-        po.setDeleted((byte)0);
+        po.setDeleted((byte) 0);
         Integer rec = Optional.ofNullable(intakeSv.addIntake(po)).orElse(0);
         if (rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.ADD_INTAKE_FAIL.getMessage());
@@ -182,11 +188,11 @@
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
         List<Long> ids = intakeSv.getIntakeIdByNameExcludeId(po.getId(), po.getName());
-        if (ids.size() > 0){
+        if (ids.size() > 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
         }
         int count;
-        po.setOperateDt( new Date());
+        po.setOperateDt(new Date());
         try {
             count = this.intakeSv.update(po);
         } catch (Exception e) {
@@ -286,6 +292,7 @@
 
     /**
      * 鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄧ嚎锛�
+     *
      * @param qo
      * @return
      */
@@ -303,6 +310,7 @@
 
     /**
      * 鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛锛堝湪绾垮拰涓嶅湪绾匡級
+     *
      * @param operator
      * @return
      */
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java
index e3080e5..7ef112d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java
@@ -6,6 +6,7 @@
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.config.DingTalk;
 import com.dy.pipIrrGlobal.daoPr.PrDivideMapper;
 import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrIntake;
@@ -47,6 +48,17 @@
 
     protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send" ;
 
+    @Autowired
+    private DingTalk dingTalk;
+
+    public String sendMessage(String message) {
+        try {
+            dingTalk.sendMessage(message);
+        } catch (Exception e) {
+            return "鍙戦�佸け璐�";
+        }
+        return "鍙戦�佹垚鍔�";
+    }
 
     /**
      * 娣诲姞鍙栨按鍙�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
index 24d6838..ceb5374 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
@@ -15,4 +15,4 @@
       #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
       idSuffix: ${pipIrr.project.idSuffix}
       #ConfigListener涓簲鐢�
-      #configFileNames: config-global.xml,config-demo.xml
+      #configFileNames: config-global.xml,config-demo.xml
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
index 8dc7ccd..b6c6612 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
@@ -15,4 +15,4 @@
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
             idSuffix: ${pipIrr.remote.idSuffix}
             #ConfigListener涓簲鐢�
-            #configFileNames: config-global.xml,config-demo.xml
+            #configFileNames: config-global.xml,config-demo.xml
\ No newline at end of file

--
Gitblit v1.8.0