From 2fb2ba8695355b1c8ed91e12adb7a56073d3fc59 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 29 Oct 2024 09:32:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3114)=20-=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=A4=9A=E7=8E=AF=E5=A2=83=E7=9A=84=20stream=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=BC=9A=E5=AF=BC=E8=87=B4=E8=BF=94=E5=9B=9E=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dingtalk/controller/DingtalkController.java | 16 +++++++++++----- .../dingtalk/robot/connection/AutoConnector.java | 10 ++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/controller/DingtalkController.java b/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/controller/DingtalkController.java index d855ef1..02cd386 100644 --- a/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/controller/DingtalkController.java +++ b/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/controller/DingtalkController.java @@ -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 changeStream(@RequestParam String appId, @RequestParam Boolean enable) { + public CommonResponse changeStream(@RequestParam(required = false) String appId, @RequestParam Boolean enable) { + List 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)) { @@ -46,7 +52,7 @@ public class DingtalkController { List applications = thirdApplicationService.genericQuery(query); autoConnector.startStream(applications); } else { - if(Objects.nonNull(client)) { + if (Objects.nonNull(client)) { client.stop(); clientMap.remove(appId); } diff --git a/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/robot/connection/AutoConnector.java b/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/robot/connection/AutoConnector.java index 0b028d2..cbda536 100644 --- a/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/robot/connection/AutoConnector.java +++ b/riven-dingtalk/src/main/java/cn/axzo/riven/dingtalk/robot/connection/AutoConnector.java @@ -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 clientMap = new ConcurrentHashMap<>(); @Resource private RefreshableConfiguration refreshableConfiguration; @@ -41,7 +44,10 @@ public class AutoConnector { @PostConstruct public void init() { - doConnection(); + List envs = Lists.newArrayList("dev", "local"); + if (envs.contains(activeProfile)) { + doConnection(); + } } private void doConnection() {