pms-parent/pms-global/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-global/src/main/resources/application-global.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-web-base/src/test/java/com/dy/pmsBase/PmsWebBaseApplicationTests.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/DingDingUtils.java
New file @@ -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字段和timestamp字段必须拼接到请求URL上,否则会出现 310000 的错误信息 DingTalkClient client = new DefaultDingTalkClient(url+"?sign="+sign+"×tamp="+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; } } 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 #不进行userToken过滤的URL,@ConfigurationProperties要求tokennofilter中所有字母都小写 tokennofilter: urls: 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()); } } 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>