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 f1b4707f..41b6fe1a 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 @@ -42,6 +42,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; @@ -58,8 +59,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; @@ -299,11 +303,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; } @@ -323,7 +335,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; } @@ -802,7 +814,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));