pom.xml
@@ -67,6 +67,23 @@ <version>4.9.3</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>dingtalk</artifactId> <version>2.0.14</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.11</version> </dependency> <dependency> <groupId>com.alibaba</groupId> src/main/java/com/gs/dingtalk/config/DataAcquisitionConfiguration.java
@@ -3,9 +3,24 @@ public class DataAcquisitionConfiguration { public static final String APP_ID = "d18e3c5b-6c75-4383-a1e5-ab3ea126053a"; /** * åºç¨ç AgentId */ public static final Long AGENT_ID = 3303296035L; /** * åºç¨ç AppKey */ public static final String APP_KEY = "dingyfqkfjecy4cjfyxa"; /** * åºç¨ç AppSecret */ public static final String APP_SECRET = "nCwmyBw8K-EqAvkuhrhhqFonbLp455awtMa4D4Q-VRaY8U2EDEVsnYSYYfPvjiAX"; public static final String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWc1nZ3OlSTCI6RnLLe+UNtJS05rUUbz4KooGo 4FQpDSPkTJncHHb6dGWleCuWob2gwZo+xYDa7B5s2qmWsqvtbCeRRGsNwuDJku1Idh7S3cWPWYow 9upJGqYmnVv0QQ4AMc2VWerTHUa7ZJSSbZZj+rd+gcbMdjp8GUHZwRI69wIDAQAB"; public static final String CORP_ID = "ding1dd72cd1d6adf70aa1320dcb25e91351"; //ç¾¤èæºå¨äººç¸å ³ public static final String CUSTOM_ROBOT_TOKEN = "c2849e46cb0d91b0721c377742938b8ac5ef57e3c9eeab918e2cd5dd9c3aad2a"; public static final String SECRET = "SEC382027a5c81ea5152b71b687fb2c1ebf26acbde035355da6ab2fb37306454134"; } src/main/java/com/gs/dingtalk/dto/DingTalkMessage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.gs.dingtalk.dto; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class DingTalkMessage { @SerializedName("errcode") private int errcode; @SerializedName("task_id") private Long taskId; @SerializedName("request_id") private String requestId; } src/main/java/com/gs/dingtalk/dto/DingTalkResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.gs.dingtalk.dto; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class DingTalkResponse { @SerializedName("errcode") private int errcode; @SerializedName("errmsg") private String errmsg; @SerializedName("result") private Result result; } src/main/java/com/gs/dingtalk/dto/Result.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.gs.dingtalk.dto; import com.google.gson.annotations.SerializedName; import lombok.Data; import java.util.List; @Data public class Result { // Getters and Setters @SerializedName("exclusive_account_userid_list") private List<String> exclusiveAccountUseridList; private String userid; } src/main/java/com/gs/dingtalk/entity/SendDingtalk.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.gs.dingtalk.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; @Data @TableName("send_dingtalk") @KeySequence(value = "SEQ_SEND", dbType = DbType.ORACLE) public class SendDingtalk implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; @TableId private Long id; // ä¸»é® /** * ééid */ private String userId; /** * ç¨æ·å */ private String userName; /** * ææºå· */ private String telephone; /** * æ¥æ¶çæé 1:å¼å«ç©æ 2:å¼å«çé¿ 3:å¼å«åè´¨ */ private String purview; /** * äºåé该æéç人 0è¡¨ç¤ºä¸æé 1 表示æé */ private Integer fiveMinuteReminder; /** * ä¸ååé该æéç人 0è¡¨ç¤ºä¸æé 1 表示æé */ private Integer thirtyMinuteReminder; } src/main/java/com/gs/dingtalk/entity/SendMessage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,144 @@ package com.gs.dingtalk.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("send_message") public class SendMessage implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * ID */ @TableId(value = "ID") private Long id; /** * åéå¨åºå· */ private String scallno; /** * åéå¨ID */ private String snedvalues; /** * å¼å¸¸ç±»å */ private String errCode; /** * 产线ç¼å· */ private String lineNo; /** * å·¥åºç¼å· */ private String procNo; /** * å·¥ä½ */ private Integer procLine; /** * å¼å§å¤ç½® */ private LocalDateTime recDate; /** * å建人 */ private String createBy; /** * å建æ¶é´ */ private LocalDateTime createDate; /** * æåæ´æ°äºº */ private String lastupdateBy; /** * æåæ´æ°æ¶é´ */ private LocalDateTime lastupdateDate; /** * 夿³¨ */ private String memo; /** * ç¶æ */ private String fstatus; /** * å¤ç人å */ private String excBy; /** * 对ç宿 */ private LocalDateTime excDate; /** * å¼å¸¸æè¿° */ private String errMemo; /** * æ¥æ¶äººå */ private String recBy; /** * å¼å¸¸å¯¹ç */ private String errExc; /** * mid */ private Long mid; /** * åéæ¶é´ */ @TableField("SENDDATE") private LocalDateTime sendDate; /** * 产线åç§° */ private String lineName; /** * å·¥åºåç§° */ private String procName; /** * å¤çæ¶é¿ */ private Integer timeLength; /** * (åé) */ private Integer rem; } src/main/java/com/gs/dingtalk/mapper/SendDingtalkMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.gs.dingtalk.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.dingtalk.entity.SendDingtalk; import org.apache.ibatis.annotations.Mapper; @Mapper public interface SendDingtalkMapper extends BaseMapper<SendDingtalk> { } src/main/java/com/gs/dingtalk/mapper/SendMessageMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.gs.dingtalk.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.dingtalk.entity.SendMessage; import org.apache.ibatis.annotations.Mapper; @Mapper public interface SendMessageMapper extends BaseMapper<SendMessage> { } src/main/java/com/gs/dingtalk/service/SendDingtalkService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.gs.dingtalk.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.dingtalk.entity.SendDingtalk; public interface SendDingtalkService extends IService<SendDingtalk> { void getDingTalkUserId() throws Exception; void sendDingTalkFiveMinute() throws Exception; void sendDingTalkthirtyMinute() throws Exception; void chatSendMessage() throws Exception; } src/main/java/com/gs/dingtalk/service/SendMessageService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.gs.dingtalk.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.dingtalk.entity.SendMessage; import java.util.List; public interface SendMessageService extends IService<SendMessage> { List<SendMessage> getSendMessageList(); } src/main/java/com/gs/dingtalk/service/SimpleExample.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,185 @@ package com.gs.dingtalk.service; import com.aliyun.dingtalkoauth2_1_0.Client; import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest; import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse; import com.aliyun.tea.TeaException; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.Common; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request; import com.dingtalk.api.request.OapiRobotSendRequest; import com.dingtalk.api.request.OapiV2UserGetbymobileRequest; import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response; import com.dingtalk.api.response.OapiRobotSendResponse; import com.dingtalk.api.response.OapiV2UserGetbymobileResponse; import com.google.gson.Gson; import com.gs.dingtalk.config.DataAcquisitionConfiguration; import com.gs.dingtalk.dto.DingTalkMessage; import com.gs.dingtalk.dto.DingTalkResponse; import com.gs.dingtalk.entity.SendDingtalk; import com.taobao.api.ApiException; import lombok.RequiredArgsConstructor; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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; /** * åéä¸ªäººæ¶æ¯ * * @author tjx * @date 2024/11/17 16:18 */ @Service @RequiredArgsConstructor @Transactional(rollbackFor = Exception.class) public class SimpleExample { /** * ç¾¤éæºå¨äººåéæ¶æ¯ * * @author tjx * @date 2024/11/18 08:54 */ public DingTalkResponse chatSendMessage(String message) throws Exception { try { Long timestamp = System.currentTimeMillis(); System.out.println(timestamp); String secret = DataAcquisitionConfiguration.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"); System.out.println(sign); //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(message); //å®ä¹ @ 对象 OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); at.setIsAtAll(true); //è®¾ç½®æ¶æ¯ç±»å req.setMsgtype("text"); req.setText(text); req.setAt(at); OapiRobotSendResponse rsp = client.execute(req, DataAcquisitionConfiguration.CUSTOM_ROBOT_TOKEN); Gson gson = new Gson(); return gson.fromJson(rsp.getBody(), DingTalkResponse.class); } 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; } /** * åéæ¶æ¯ */ public DingTalkMessage sendMessage(String userIdList, String message) throws Exception { String accessToken = getAccessToken(); DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.setAgentId(DataAcquisitionConfiguration.AGENT_ID); request.setUseridList(userIdList); request.setToAllUser(false); OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); msg.setMsgtype("text"); msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text()); msg.getText().setContent(message); request.setMsg(msg); OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, accessToken); Gson gson = new Gson(); return gson.fromJson(rsp.getBody(), DingTalkMessage.class); } /** * è·å AccessToken * * @return AccessToken * @throws Exception */ public String getAccessToken() throws Exception { Client client = createClient(); GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest() .setAppKey(DataAcquisitionConfiguration.APP_KEY) .setAppSecret(DataAcquisitionConfiguration.APP_SECRET); try { GetAccessTokenResponse accessToken = client.getAccessToken(getAccessTokenRequest); return accessToken.body.getAccessToken(); } catch (TeaException err) { if (!Common.empty(err.code) && !Common.empty(err.message)) { // err ä¸å«æ code å message 屿§ï¼å¯å¸®å©å¼åå®ä½é®é¢ System.out.println(err.code); System.out.println(err.message); } } catch (Exception exception) { TeaException err = new TeaException(exception.getMessage(), exception); if (!Common.empty(err.code) && !Common.empty(err.message)) { // err ä¸å«æ code å message 屿§ï¼å¯å¸®å©å¼åå®ä½é®é¢ System.out.println(err.code); System.out.println(err.message); } } return null; } /** * ä½¿ç¨ Token åå§åè´¦å·Client * * @return Client * @throws Exception */ public Client createClient() throws Exception { Config config = new Config(); config.protocol = "https"; config.regionId = "central"; return new Client(config); } public OapiV2UserGetbymobileResponse getOapiV2UserGetbymobileResponse(SendDingtalk s, String accessToken) { DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile"); OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest(); req.setMobile(s.getTelephone()); req.setSupportExclusiveAccountSearch(true); OapiV2UserGetbymobileResponse rsp = null; try { rsp = client.execute(req, accessToken); } catch (ApiException e) { throw new RuntimeException(e); } return rsp; } } src/main/java/com/gs/dingtalk/service/impl/SendDingtalkServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,146 @@ package com.gs.dingtalk.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dingtalk.api.response.OapiV2UserGetbymobileResponse; import com.google.gson.Gson; import com.gs.dingtalk.dto.DingTalkMessage; import com.gs.dingtalk.dto.DingTalkResponse; import com.gs.dingtalk.entity.SendDingtalk; import com.gs.dingtalk.entity.SendMessage; import com.gs.dingtalk.mapper.SendDingtalkMapper; import com.gs.dingtalk.service.SendDingtalkService; import com.gs.dingtalk.service.SendMessageService; import com.gs.dingtalk.service.SimpleExample; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Service @RequiredArgsConstructor @Transactional(rollbackFor = Exception.class) public class SendDingtalkServiceImpl extends ServiceImpl<SendDingtalkMapper, SendDingtalk> implements SendDingtalkService { private final SimpleExample simpleExample; private final SendMessageService sendMessageService; @Override public void getDingTalkUserId() throws Exception { String accessToken = simpleExample.getAccessToken(); LambdaQueryWrapper<SendDingtalk> wrapper = new LambdaQueryWrapper<>(); wrapper.isNull(SendDingtalk::getUserId); List<SendDingtalk> list = list(wrapper); list.forEach(s -> { OapiV2UserGetbymobileResponse rsp = simpleExample.getOapiV2UserGetbymobileResponse(s, accessToken); // ä½¿ç¨ Gson è§£æååºæ°æ® Gson gson = new Gson(); DingTalkResponse response = gson.fromJson(rsp.getBody(), DingTalkResponse.class); if ("ok".equals(response.getErrmsg())) { List<String> exclusiveAccountUseridList = response.getResult().getExclusiveAccountUseridList(); String userId = ""; if (CollectionUtil.isNotEmpty(exclusiveAccountUseridList)) { userId = exclusiveAccountUseridList.get(0); } else if (StrUtil.isNotEmpty(response.getResult().getUserid())) { userId = response.getResult().getUserid(); } LambdaUpdateWrapper<SendDingtalk> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(SendDingtalk::getUserId, userId).eq(SendDingtalk::getId, s.getId()); update(updateWrapper); } }); } @Override public void sendDingTalkFiveMinute() throws Exception { LambdaQueryWrapper<SendDingtalk> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SendDingtalk::getFiveMinuteReminder, 1); List<SendDingtalk> list = list(wrapper); getMessage(list); } @Override public void sendDingTalkthirtyMinute() throws Exception { LambdaQueryWrapper<SendDingtalk> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SendDingtalk::getThirtyMinuteReminder, 1); List<SendDingtalk> list = list(wrapper); getMessage(list); } @Override public void chatSendMessage() throws Exception { List<SendMessage> sendMessageList = sendMessageService.getSendMessageList(); sendMessageList.forEach(s -> { //ééçè§åéå¶ ç»åä¸åå·¥ä¸å¤©åªè½åé䏿¡å 容ç¸åçæ¶æ¯éç¥ã String message = s.getLineName() + s.getProcName() + ",请尽快å¤ç"; DingTalkResponse dingTalkResponse = null; try { dingTalkResponse = simpleExample.chatSendMessage(message); } catch (Exception e) { throw new RuntimeException(e); } if (dingTalkResponse != null) { if (dingTalkResponse.getErrcode() == 0) { System.out.println("åéæå"); } } }); } private void getMessage(List<SendDingtalk> list) { List<SendMessage> sendMessageList = sendMessageService.getSendMessageList(); sendMessageList.forEach(s -> { String userIdList = list.stream() .filter(dingtalk -> { String[] purviews = dingtalk.getPurview().split(","); return Arrays.asList(purviews).contains(s.getProcNo()); }).map(SendDingtalk::getUserId).collect(Collectors.joining(",")); //ééçè§åéå¶ ç»åä¸åå·¥ä¸å¤©åªè½åé䏿¡å 容ç¸åçæ¶æ¯éç¥ã String message = s.getLineName() + s.getProcName() + ",请尽快å¤ç"; DingTalkMessage dingTalkMessage = null; try { dingTalkMessage = simpleExample.sendMessage(userIdList, message); } catch (Exception e) { throw new RuntimeException(e); } if (dingTalkMessage.getErrcode() == 0) { System.out.println("åéæå"); } }); } } src/main/java/com/gs/dingtalk/service/impl/SendMessageServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.gs.dingtalk.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.dingtalk.entity.SendMessage; import com.gs.dingtalk.mapper.SendMessageMapper; import com.gs.dingtalk.service.SendMessageService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @Service @RequiredArgsConstructor @Transactional(rollbackFor = Exception.class) public class SendMessageServiceImpl extends ServiceImpl<SendMessageMapper, SendMessage> implements SendMessageService { @Override public List<SendMessage> getSendMessageList() { LambdaQueryWrapper<SendMessage> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SendMessage::getFstatus, "å¾ å¤ç"); List<SendMessage> list = list(queryWrapper); List<SendMessage> result = new ArrayList<>(); result.add(list.get(0)); return result; } } src/main/java/com/gs/dingtalk/task/ScheduledTasks.java
@@ -1,6 +1,7 @@ package com.gs.dingtalk.task; import com.gs.dingtalk.service.SendDingtalkService; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -8,6 +9,8 @@ @Component @RequiredArgsConstructor public class ScheduledTasks { private SendDingtalkService sendDingtalkService; /** * æ¯äºåéæ§è¡ä¸æ¬¡ @@ -19,7 +22,18 @@ * @date 2024/9/27 21:48 */ @Scheduled(cron = "0 0/5 * * * ?") public void getDeviceRealTimeData() { public void getDeviceRealTimeData() throws Exception { sendDingtalkService.sendDingTalkFiveMinute(); } //0/5 * * * * ? * @Scheduled(cron = "0/5 * * * * ?") public void chatSendMessage() throws Exception { sendDingtalkService.chatSendMessage(); } @Scheduled(cron = "0 0/30 * * * ?") public void sendDingTalkthirtyMinute() throws Exception { sendDingtalkService.sendDingTalkthirtyMinute(); } } src/main/resources/application.yml
@@ -5,9 +5,9 @@ datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:@192.168.11.251:1521/orcl username: sg_prd password: sgprd url: jdbc:oracle:thin:@192.168.0.100:1521/orcl username: yc_dev password: ycdev druid: initialSize: 5 minIdle: 5 src/main/resources/mapper/SendDingtalkMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.dingtalk.mapper.SendDingtalkMapper"> </mapper> src/main/resources/mapper/SendMessageMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.dingtalk.mapper.SendMessageMapper"> </mapper> src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
@@ -1,7 +1,10 @@ package com.gs.dingtalk; import com.gs.dingtalk.config.URLEncoder; import com.gs.dingtalk.service.SendDingtalkService; import com.gs.dingtalk.service.SimpleExample; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.math.BigDecimal; @@ -10,6 +13,12 @@ @SpringBootTest class DeviceReceivingApplicationTests { @Autowired private SimpleExample simpleExample; @Autowired private SendDingtalkService sendDingtalkService; @Test void contextLoads() { @@ -30,4 +39,20 @@ String encode = URLEncoder.encode(""); System.out.println(encode); } @Test void getPhone() throws Exception { sendDingtalkService.getDingTalkUserId(); } @Test void sendDingTalk() throws Exception { sendDingtalkService.sendDingTalkFiveMinute(); } //chatSendMessage @Test void chatSendMessage() throws Exception { sendDingtalkService.chatSendMessage(); } }