feat(REQ-3114) - 处理多环境的 stream 模式会导致返回的信息有问题
This commit is contained in:
parent
42b6618acf
commit
2fb2ba8695
@ -7,7 +7,8 @@ import cn.axzo.riven.dingtalk.service.ThirdApplicationService;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dingtalk.open.app.api.OpenDingTalkClient;
|
||||
import org.hibernate.validator.constraints.EAN;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -16,7 +17,6 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -31,13 +31,19 @@ import static cn.axzo.riven.dingtalk.robot.connection.AutoConnector.clientMap;
|
||||
@RestController
|
||||
@RequestMapping("/webApi/dingtalk")
|
||||
public class DingtalkController {
|
||||
@Value("${spring.profiles.active}")
|
||||
private String activeProfile;
|
||||
@Resource
|
||||
private ThirdApplicationService thirdApplicationService;
|
||||
@EAN
|
||||
@Resource
|
||||
private AutoConnector autoConnector;
|
||||
|
||||
@PostMapping("/enabled")
|
||||
public CommonResponse<String> changeStream(@RequestParam String appId, @RequestParam Boolean enable) {
|
||||
public CommonResponse<String> changeStream(@RequestParam(required = false) String appId, @RequestParam Boolean enable) {
|
||||
List<String> envs = Lists.newArrayList("dev", "local");
|
||||
if (!envs.contains(activeProfile)) {
|
||||
return CommonResponse.success("非 dev/local 环境不可用");
|
||||
}
|
||||
OpenDingTalkClient client = clientMap.getOrDefault(appId, null);
|
||||
try {
|
||||
if (enable && Objects.isNull(client)) {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package cn.axzo.riven.dingtalk.robot.connection;
|
||||
|
||||
import cn.axzo.riven.client.req.ThirdApplicationReq;
|
||||
import cn.axzo.riven.dingtalk.callback.robot.RobotMsgCallbackConsumer;
|
||||
import cn.axzo.riven.dingtalk.config.RefreshableConfiguration;
|
||||
import cn.axzo.riven.dingtalk.listener.dd.DingTalkAllEventListener;
|
||||
import cn.axzo.riven.dingtalk.callback.robot.RobotMsgCallbackConsumer;
|
||||
import cn.axzo.riven.dingtalk.repository.entity.ThirdApplication;
|
||||
import cn.axzo.riven.dingtalk.service.ThirdApplicationService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -11,6 +11,7 @@ import com.dingtalk.open.app.api.OpenDingTalkClient;
|
||||
import com.dingtalk.open.app.api.OpenDingTalkStreamClientBuilder;
|
||||
import com.dingtalk.open.app.api.callback.DingTalkStreamTopics;
|
||||
import com.dingtalk.open.app.api.security.AuthClientCredential;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -31,6 +32,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AutoConnector {
|
||||
@Value("${spring.profiles.active}")
|
||||
private String activeProfile;
|
||||
public static final Map<String, OpenDingTalkClient> clientMap = new ConcurrentHashMap<>();
|
||||
@Resource
|
||||
private RefreshableConfiguration refreshableConfiguration;
|
||||
@ -41,8 +44,11 @@ public class AutoConnector {
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
List<String> envs = Lists.newArrayList("dev", "local");
|
||||
if (envs.contains(activeProfile)) {
|
||||
doConnection();
|
||||
}
|
||||
}
|
||||
|
||||
private void doConnection() {
|
||||
List<ThirdApplication> thirdApplications = applicationService.genericQuery(new ThirdApplicationReq());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user