Req-3117 扩展接口,支持多方调用,并添加到单元测试类
This commit is contained in:
parent
bc3aa326c7
commit
b075ffe9bb
@ -0,0 +1,14 @@
|
||||
package cn.axzo.riven.client.common.enums;
|
||||
|
||||
/**
|
||||
* 钉钉场景,不同的值对应不同的后端密钥
|
||||
* @author zhongpeng
|
||||
* @since 2024-11-18
|
||||
*/
|
||||
public enum DingDingSceneEnum {
|
||||
//运营群通知(目前用工一期发送消息给钉钉群通知云运营审核)
|
||||
WORK_OPERATION,
|
||||
//公用告警群
|
||||
COMMON_ALERT,
|
||||
;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.riven.client.req;
|
||||
|
||||
import cn.axzo.riven.client.common.enums.DingDingSceneEnum;
|
||||
import cn.axzo.riven.client.common.enums.DingTalkMsgTypeEnum;
|
||||
import cn.axzo.riven.client.model.ReplyMessage;
|
||||
import lombok.Data;
|
||||
@ -22,4 +23,11 @@ public class DingDingSendRebootGroupMsgReq {
|
||||
* 其中的消息,为:markdown格式的消息,,具体见:https://open.dingtalk.com/document/orgapp/message-types-and-data-format#
|
||||
*/
|
||||
private ReplyMessage replyMessage;
|
||||
|
||||
/**
|
||||
* 业务场景
|
||||
* 不同的业务场景对应后端配置不同的密钥和接受的群
|
||||
* 暂时不支持对多个群发送,如有需求,可以进行改造
|
||||
*/
|
||||
private DingDingSceneEnum dingDingSceneEnum;
|
||||
}
|
||||
|
||||
@ -1,10 +1,14 @@
|
||||
package cn.axzo.riven.config;
|
||||
|
||||
import cn.axzo.riven.client.common.enums.DingDingSceneEnum;
|
||||
import lombok.Getter;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 后续其他钉钉配置,可以收口到这里
|
||||
* @author zhongpeng@axzo.cn
|
||||
@ -12,17 +16,24 @@ import org.springframework.context.annotation.Configuration;
|
||||
@Configuration
|
||||
@RefreshScope
|
||||
@Getter
|
||||
@Setter
|
||||
@ConfigurationProperties(prefix = "reboot.group")
|
||||
public class DingDingRebootMainConfig {
|
||||
@Value("${reboot.operation.appKey:dingx9pejjkh8whnaqkw}")
|
||||
private String appKey;
|
||||
@Value("${reboot.operation.appSecret:IViT8sL_VVZ03gRc3oIvbtzS0DsTKUI9pLgXSNh9FErHgzFR_97liY5g6SpmJpjk}")
|
||||
private String appSecret;
|
||||
@Value("${reboot.operation.agentId:3286362019}")
|
||||
private Long agentId;
|
||||
//机器人的ID
|
||||
@Value("${reboot.operation.rebootCode:dingx9pejjkh8whnaqkw}")
|
||||
private String rebootCode;
|
||||
//群的ID,可以升级为支持多个群
|
||||
@Value("${reboot.operation.openConversationId:cidAy86bIrB513xUaCOmvD/Hg==}")
|
||||
private String openConversationId;
|
||||
|
||||
List<DingDingConfigDTO> list;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
public static class DingDingConfigDTO {
|
||||
private String appKey;
|
||||
private String appSecret;
|
||||
private Long agentId;
|
||||
//机器人的ID
|
||||
private String rebootCode;
|
||||
//群的ID,可以升级为支持多个群
|
||||
private String openConversationId;
|
||||
|
||||
private DingDingSceneEnum dingDingSceneEnum;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package cn.axzo.riven.service;
|
||||
|
||||
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
|
||||
import cn.axzo.framework.domain.web.code.BaseCode;
|
||||
import cn.axzo.riven.client.common.enums.DingDingSceneEnum;
|
||||
import cn.axzo.riven.client.req.DingDingSendRebootGroupMsgReq;
|
||||
import cn.axzo.riven.client.req.DingDingSendRebootMsgReq;
|
||||
import cn.axzo.riven.common.constants.DingDingJumpConstant;
|
||||
@ -20,10 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -97,9 +95,29 @@ public class DingDingRebootService {
|
||||
|
||||
public void sendCorpRebootGroupMsg(DingDingSendRebootGroupMsgReq req) {
|
||||
|
||||
GetAccessTokenResponseBody accessToken = dingDingNewSdkManger.getAccessToken(dingDingRebootMainConfig.getAppKey(), dingDingRebootMainConfig.getAppSecret());
|
||||
|
||||
dingDingNewSdkManger.sendGroupMessage(accessToken.getAccessToken(), dingDingRebootMainConfig.getRebootCode(), dingDingRebootMainConfig.getOpenConversationId(), req);
|
||||
//根据场景选择对应的配置
|
||||
DingDingRebootMainConfig.DingDingConfigDTO dto = getByEnum(req.getDingDingSceneEnum());
|
||||
//获取token
|
||||
GetAccessTokenResponseBody accessToken = dingDingNewSdkManger.getAccessToken(dto.getAppKey(), dto.getAppSecret());
|
||||
//发送消息
|
||||
dingDingNewSdkManger.sendGroupMessage(accessToken.getAccessToken(), dto.getRebootCode(), dto.getOpenConversationId(), req);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据业务场景匹配对应的发送钉钉配置
|
||||
* @param dingDingSceneEnum
|
||||
* @return
|
||||
*/
|
||||
private DingDingRebootMainConfig.DingDingConfigDTO getByEnum(DingDingSceneEnum dingDingSceneEnum) {
|
||||
|
||||
if (Objects.nonNull(dingDingSceneEnum) && !CollectionUtils.isEmpty(dingDingRebootMainConfig.getList())) {
|
||||
for (DingDingRebootMainConfig.DingDingConfigDTO dto : dingDingRebootMainConfig.getList()) {
|
||||
if (dingDingSceneEnum == dto.getDingDingSceneEnum()) {
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
}
|
||||
throw Throws.bizException(BaseCode.UNAVAILABLE_FOR_LEGAL_REASONS, "发送钉钉群的业务场景对应配置不存在,请检查配置和业务场景的对应关系");
|
||||
}
|
||||
}
|
||||
|
||||
23
riven-server/src/main/resources/application-local.yml
Normal file
23
riven-server/src/main/resources/application-local.yml
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
##钉钉群消息发送配置
|
||||
reboot:
|
||||
group:
|
||||
list:
|
||||
#场景-运营通知
|
||||
- dingDingSceneEnum: WORK_OPERATION
|
||||
appKey: dingx9pejjkh8whnaqkw
|
||||
appSecret: IViT8sL_VVZ03gRc3oIvbtzS0DsTKUI9pLgXSNh9FErHgzFR_97liY5g6SpmJpjk
|
||||
agentId: 3286362019
|
||||
#机器人ID
|
||||
rebootCode: dingx9pejjkh8whnaqkw
|
||||
#群ID
|
||||
openConversationId: cidAy86bIrB513xUaCOmvD/Hg==
|
||||
#场景-公用告警通知,待补充
|
||||
- dingDingSceneEnum: COMMON_ALERT
|
||||
appKey: 待补充
|
||||
appSecret: 待补充
|
||||
agentId: 0
|
||||
#机器人ID
|
||||
rebootCode: 待补充
|
||||
#群ID
|
||||
openConversationId: 待补充
|
||||
@ -18,3 +18,6 @@ spring:
|
||||
|
||||
server:
|
||||
shutdown: graceful
|
||||
|
||||
|
||||
|
||||
|
||||
18
riven-server/src/test/java/cn/axzo/riven/test/BaseTest.java
Normal file
18
riven-server/src/test/java/cn/axzo/riven/test/BaseTest.java
Normal file
@ -0,0 +1,18 @@
|
||||
package cn.axzo.riven.test;
|
||||
|
||||
import cn.axzo.riven.Application;
|
||||
import cn.azxo.framework.common.logger.JobLoggerTemplate;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
|
||||
/**
|
||||
* @author zhongpeng
|
||||
* @date 2024/11/18 16:33
|
||||
*/
|
||||
@SpringBootTest(classes = Application.class)
|
||||
public class BaseTest {
|
||||
|
||||
@MockBean
|
||||
JobLoggerTemplate jobLoggerTemplate;
|
||||
|
||||
}
|
||||
@ -2,16 +2,19 @@ package cn.axzo.riven.test;
|
||||
|
||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||
import cn.axzo.riven.Application;
|
||||
import cn.axzo.riven.client.common.enums.DingDingSceneEnum;
|
||||
import cn.axzo.riven.client.common.enums.DingTalkMsgTypeEnum;
|
||||
import cn.axzo.riven.client.model.SampleActionCard6;
|
||||
import cn.axzo.riven.client.req.DingDingSendRebootGroupMsgReq;
|
||||
import cn.axzo.riven.config.FeignConfiguration;
|
||||
import cn.axzo.riven.controller.DingDingMsgController;
|
||||
import cn.axzo.riven.test.taizhou.AxzoUserProfileServiceApiTest;
|
||||
import cn.azxo.framework.common.logger.JobLoggerTemplate;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -23,19 +26,21 @@ import javax.annotation.Resource;
|
||||
* @author zhongpeng
|
||||
* @date 2024/11/14 18:17
|
||||
*/
|
||||
@SpringBootTest(classes = Application.class)
|
||||
public class DingDingMsgControllerTest {
|
||||
public class DingDingMsgControllerTest extends BaseTest {
|
||||
|
||||
|
||||
@Resource
|
||||
private DingDingMsgController dingDingMsgController;
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
DingDingSendRebootGroupMsgReq req = new DingDingSendRebootGroupMsgReq();
|
||||
req.setMsgType(DingTalkMsgTypeEnum.sampleActionCard6);
|
||||
|
||||
req.setDingDingSceneEnum(DingDingSceneEnum.WORK_OPERATION);
|
||||
|
||||
String title = "标题";
|
||||
String text = "内容 \n ## 标题1 你好";
|
||||
|
||||
@ -39,7 +39,8 @@ public class DingDingTest {
|
||||
|
||||
|
||||
private static final String robotCode = "dingx9pejjkh8whnaqkw";
|
||||
private static final String token = "8b154088e6f235fa8155daffca12b6cc";
|
||||
//需要调用testGetAccessToken获取最新token
|
||||
private static final String token = "24bef3d2e00534b3887eafb5b47d4006";
|
||||
|
||||
private static final String openConversationId = "cidAy86bIrB513xUaCOmvD/Hg==";
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user