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 + "×tamp=" + 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