From f3efb695e9cf4ed6ead42921cc519fe42c268583 Mon Sep 17 00:00:00 2001 From: lilong Date: Mon, 21 Oct 2024 15:47:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20(hotfix/20241021)=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E8=8A=82=E7=82=B9=E8=AF=A6=E6=83=85=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=8F=90=E9=AB=98=E6=8E=A5=E5=8F=A3=E6=80=A7?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/req/DetailFeatureResourceReq.java | 4 +++ .../impl/SaasFeatureResourceServiceImpl.java | 30 +++++++++++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/DetailFeatureResourceReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/DetailFeatureResourceReq.java index 8f65fa43..5b8b9b0c 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/DetailFeatureResourceReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/DetailFeatureResourceReq.java @@ -22,4 +22,8 @@ public class DetailFeatureResourceReq { * 资源类型1-菜单 2-页面 3-应用入口 4-组件;5-root节点 */ private Integer featureType; + + private Boolean needChildren; + + private Boolean needPageElement; } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java index 3aac5869..61f47b25 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasFeatureResourceServiceImpl.java @@ -41,6 +41,7 @@ import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert; import cn.axzo.tyr.server.repository.dao.SaasFeatureDao; import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao; import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao; +import cn.axzo.tyr.server.repository.entity.ProductModule; import cn.axzo.tyr.server.repository.entity.SaasFeature; import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation; @@ -57,8 +58,11 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Pair; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -298,11 +302,19 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl descendants = featureResourceDao.lambdaQuery() + + LambdaQueryChainWrapper wrapper = featureResourceDao.lambdaQuery() .eq(BaseEntity::getIsDelete,0) - .eq(ObjectUtil.isNotNull(param.getFeatureType()), SaasFeatureResource::getFeatureType, param.getFeatureType()) - .apply("FIND_IN_SET('" + param.getFeatureId() + "', path)") - .list(); + .eq(ObjectUtil.isNotNull(param.getFeatureType()), SaasFeatureResource::getFeatureType, param.getFeatureType()); + + if (BooleanUtils.isTrue(param.getNeedChildren())) { + wrapper.apply("FIND_IN_SET('" + param.getFeatureId() + "', path)"); + } else { + wrapper.eq(BaseEntity::getId, param.getFeatureId()); + } + + List descendants = wrapper.list(); + if (CollectionUtil.isEmpty(descendants)) { return null; } @@ -322,7 +334,7 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl allUniCodes = descendants.stream().map(SaasFeatureResource::getUniCode).filter(StringUtils::isNotBlank).collect(Collectors.toList()); - fillPageElement2PageFeatureResource(treeList, allUniCodes); + fillPageElement2PageFeatureResource(treeList, allUniCodes, param); return featureResourceTreeNode; } @@ -801,7 +813,13 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl featureResourceTreeNodes, List allUniCodes) { + private void fillPageElement2PageFeatureResource(List featureResourceTreeNodes, + List allUniCodes, + DetailFeatureResourceReq detailFeatureResourceReq) { + if (BooleanUtils.isNotTrue(detailFeatureResourceReq.getNeedPageElement())) { + return; + } + Map> uniCodeElementsMap = saasPageElementService.getByTerminalAndUniCodes(featureResourceTreeNodes.get(0).getTerminal(), allUniCodes) .stream().collect(Collectors.groupingBy(PageElementBasicDTO::getUniCode));