From 21927cbf5573311541a5402e1bdc08372b53d072 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 10 Feb 2025 22:59:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96DingtalkBotService?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=9D=9E=E7=A9=BA=E7=9A=84=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/dingtalkBot/dto/SendMsgRequest.java | 3 ++ .../service/DingtalkBotService.java | 33 +++++++++++++++---- .../service/DingtalkBotSceneService.java | 32 ++++++++++++++++++ 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/dingtalkBot/dto/SendMsgRequest.java b/src/main/java/cn/lihongjie/coal/dingtalkBot/dto/SendMsgRequest.java index 9bafd092..1f7ad06d 100644 --- a/src/main/java/cn/lihongjie/coal/dingtalkBot/dto/SendMsgRequest.java +++ b/src/main/java/cn/lihongjie/coal/dingtalkBot/dto/SendMsgRequest.java @@ -7,6 +7,9 @@ import java.util.*; @Data public class SendMsgRequest { + private String organizationId; + private String sceneCode; + private List dingtalkBotIds; private String dingtalkBotTemplateId; diff --git a/src/main/java/cn/lihongjie/coal/dingtalkBot/service/DingtalkBotService.java b/src/main/java/cn/lihongjie/coal/dingtalkBot/service/DingtalkBotService.java index 3fa93063..a159db80 100644 --- a/src/main/java/cn/lihongjie/coal/dingtalkBot/service/DingtalkBotService.java +++ b/src/main/java/cn/lihongjie/coal/dingtalkBot/service/DingtalkBotService.java @@ -10,6 +10,8 @@ import cn.lihongjie.coal.dingtalkBot.dto.*; import cn.lihongjie.coal.dingtalkBot.entity.DingtalkBotEntity; import cn.lihongjie.coal.dingtalkBot.mapper.DingtalkBotMapper; import cn.lihongjie.coal.dingtalkBot.repository.DingtalkBotRepository; +import cn.lihongjie.coal.dingtalkBotScene.entity.DingtalkBotSceneEntity; +import cn.lihongjie.coal.dingtalkBotScene.service.DingtalkBotSceneService; import cn.lihongjie.coal.dingtalkBotTemplate.entity.DingtalkBotTemplateEntity; import cn.lihongjie.coal.dingtalkBotTemplate.service.DingtalkBotTemplateService; import cn.lihongjie.coal.exception.BizException; @@ -22,6 +24,8 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; @@ -90,28 +94,43 @@ public class DingtalkBotService extends BaseService results = new ArrayList<>(); response.setResults(results); - List all = this.repository.findAllById(request.getDingtalkBotIds()); + List botList; + DingtalkBotTemplateEntity template; + if (StringUtils.isNotEmpty(request.getSceneCode())) { - DingtalkBotTemplateEntity dingtalkBotTemplateEntity = - dingtalkBotTemplateService.get(request.getDingtalkBotTemplateId()); + DingtalkBotSceneEntity scene = + dingtalkBotSceneService.getByCode( + request.getOrganizationId(), request.getSceneCode()); - for (DingtalkBotEntity dingtalkBotEntity : all) { + botList = scene.getDingtalkBots(); + template = scene.getDingtalkBotTemplate(); + } else { - results.add(doSend(dingtalkBotEntity, dingtalkBotTemplateEntity, request.getParams())); + botList = this.repository.findAllById(request.getDingtalkBotIds()); + template = dingtalkBotTemplateService.get(request.getDingtalkBotTemplateId()); + } + + if (MapUtils.isNotEmpty(request.getParams())) { + + for (DingtalkBotEntity dingtalkBotEntity : botList) { + results.add(doSend(dingtalkBotEntity, template, request.getParams())); + } } if (CollectionUtils.isNotEmpty(request.getParamsList())) { - for (DingtalkBotEntity dingtalkBotEntity : all) { + for (DingtalkBotEntity dingtalkBotEntity : botList) { for (Map params : request.getParamsList()) { - results.add(doSend(dingtalkBotEntity, dingtalkBotTemplateEntity, params)); + results.add(doSend(dingtalkBotEntity, template, params)); } } } diff --git a/src/main/java/cn/lihongjie/coal/dingtalkBotScene/service/DingtalkBotSceneService.java b/src/main/java/cn/lihongjie/coal/dingtalkBotScene/service/DingtalkBotSceneService.java index c621f69c..87348d0c 100644 --- a/src/main/java/cn/lihongjie/coal/dingtalkBotScene/service/DingtalkBotSceneService.java +++ b/src/main/java/cn/lihongjie/coal/dingtalkBotScene/service/DingtalkBotSceneService.java @@ -12,6 +12,11 @@ import cn.lihongjie.coal.dingtalkBotScene.mapper.DingtalkBotSceneMapper; import cn.lihongjie.coal.dingtalkBotScene.repository.DingtalkBotSceneRepository; import cn.lihongjie.coal.exception.BizException; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -19,9 +24,12 @@ import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @Slf4j @Transactional @@ -78,4 +86,28 @@ public class DingtalkBotSceneService return page.map(this.mapper::toDto); } + + public DingtalkBotSceneEntity getByCode(String organizationId, String sceneCode) { + + List all = + repository.findAll( + new Specification() { + @Override + public Predicate toPredicate( + Root root, + CriteriaQuery query, + CriteriaBuilder criteriaBuilder) { + return criteriaBuilder.and( + criteriaBuilder.equal( + root.get("organization_id"), organizationId), + criteriaBuilder.equal(root.get("code"), sceneCode)); + } + }); + + if (all.isEmpty()) { + throw new BizException("场景不存在 " + sceneCode); + } + + return all.get(0); + } }