diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasFeatureResourceService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasFeatureResourceService.java index 7aa6fa61..4b36b4e7 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasFeatureResourceService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasFeatureResourceService.java @@ -1,134 +1,136 @@ -package cn.axzo.tyr.server.service; - -import cn.axzo.foundation.page.PageResp; -import cn.axzo.tyr.client.model.req.DeleteFeatureResourceReq; -import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq; -import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq; -import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; -import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode; -import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; -import cn.axzo.tyr.server.model.ResourcePermission; -import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO; -import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; -import com.baomidou.mybatisplus.extension.service.IService; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * 功能资源服务 - * - * @version V1.0 - * @author: ZhanSiHu - * @date: 2024/4/3 10:17 - */ -public interface SaasFeatureResourceService extends IService { - - Long saveOrUpdateMenu(FeatureResourceTreeSaveReq req); - - void updateFeatureAuthType(Long featureId, Integer authType); - - /**递归的**/ - List batchListDescendant(List featureIds); - - SaasFeatureResource featureResourceById(Long featureId); - - FeatureResourceTreeNode getTreeFeatureDescendant(Long featureId, Integer featureType); - - /**菜单重排序**/ - void reorderMenuFeature(Long featureId, Integer offset); - - /** 根据ID查询导航菜单页面信息 仅可显示 - 限制查询字段 **/ - List listNavByIds(List featureIds, List featureTypes); - - /** 资源权限通用查询 **/ - List permissionQuery(ResourcePermissionQueryDTO param); - - /** 查询资源树 **/ - List getTree(GetFeatureResourceTreeReq req); - - SaasFeatureResource getByCode(String featureCode); - - Set listAuthFree(); - - List listByParentIdAndTerminalAndIds(Long parentId, String terminal, List featureIds); - - List list(PageSaasFeatureResourceReq param); - - PageResp page(PageSaasFeatureResourceReq param); - - void deleteFeatureResource(DeleteFeatureResourceReq param); - - Map> listCache(ListSaasFeatureResourceCache param); - - void refreshCache(RefreshFeatureResourceCacheParam param); - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - class RefreshFeatureResourceCacheParam { - private Set terminals; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - class StoreSaasFeatureResourceCache { - - private List saasFeatureResources; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - class SaasFeatureResourceDTO { - private String terminal; - - private List features; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - class ListSaasFeatureResourceCache { - - private Set terminals; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - class SaasFeatureResourceCache { - - private Long featureId; - - private boolean notAuth; - - private Set parentIds; - - private String uniCode; - - /** - * 客户端版本号 - * 在根据版本号查询菜单树限的时候需要 - */ - private Integer version; - - /** - * 1、展示 - * 0、隐藏 - * FeatureResourceStatus - */ - private Integer status; - } -} +package cn.axzo.tyr.server.service; + +import cn.axzo.foundation.page.PageResp; +import cn.axzo.tyr.client.model.req.DeleteFeatureResourceReq; +import cn.axzo.tyr.client.model.req.FeatureResourceTreeSaveReq; +import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq; +import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq; +import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode; +import cn.axzo.tyr.client.model.res.SaasFeatureResourceResp; +import cn.axzo.tyr.server.model.ResourcePermission; +import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO; +import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; +import com.baomidou.mybatisplus.extension.service.IService; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 功能资源服务 + * + * @version V1.0 + * @author: ZhanSiHu + * @date: 2024/4/3 10:17 + */ +public interface SaasFeatureResourceService extends IService { + + Long saveOrUpdateMenu(FeatureResourceTreeSaveReq req); + + void updateFeatureAuthType(Long featureId, Integer authType); + + /**递归的**/ + List batchListDescendant(List featureIds); + + SaasFeatureResource featureResourceById(Long featureId); + + FeatureResourceTreeNode getTreeFeatureDescendant(Long featureId, Integer featureType); + + /**菜单重排序**/ + void reorderMenuFeature(Long featureId, Integer offset); + + /** 根据ID查询导航菜单页面信息 仅可显示 - 限制查询字段 **/ + List listNavByIds(List featureIds, List featureTypes); + + /** 资源权限通用查询 **/ + List permissionQuery(ResourcePermissionQueryDTO param); + + /** 查询资源树 **/ + List getTree(GetFeatureResourceTreeReq req); + + SaasFeatureResource getByCode(String featureCode); + + Set listAuthFree(); + + List listByParentIdAndTerminalAndIds(Long parentId, String terminal, List featureIds); + + List listByParentIdAndBlurTerminalAndIds(Long parentId, String terminal, List featureIds); + + List list(PageSaasFeatureResourceReq param); + + PageResp page(PageSaasFeatureResourceReq param); + + void deleteFeatureResource(DeleteFeatureResourceReq param); + + Map> listCache(ListSaasFeatureResourceCache param); + + void refreshCache(RefreshFeatureResourceCacheParam param); + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class RefreshFeatureResourceCacheParam { + private Set terminals; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class StoreSaasFeatureResourceCache { + + private List saasFeatureResources; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class SaasFeatureResourceDTO { + private String terminal; + + private List features; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class ListSaasFeatureResourceCache { + + private Set terminals; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class SaasFeatureResourceCache { + + private Long featureId; + + private boolean notAuth; + + private Set parentIds; + + private String uniCode; + + /** + * 客户端版本号 + * 在根据版本号查询菜单树限的时候需要 + */ + private Integer version; + + /** + * 1、展示 + * 0、隐藏 + * FeatureResourceStatus + */ + private Integer status; + } +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java index e8c34ff8..6478df4d 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionQueryServiceImpl.java @@ -183,12 +183,21 @@ public class PermissionQueryServiceImpl implements PermissionQueryService { return navTreeList.stream().filter(t -> Objects.equals(t.getParentId(), root.getId())).collect(Collectors.toList()); } + private boolean isGATerminal(String terminal) { + if (Objects.isNull(terminal)) { + return false; + } + + TerminalInfo tm = new TerminalInfo(terminal); + return tm.isGA(); + } + @Override public boolean hasPermission(PermissionCheckReq req) { //这里暂时硬编码-非OMS端鉴权请求 直接转老接口处理 if (!StrUtil.equals("NT_OMS_WEB" ,req.getTerminal()) - && !Objects.equals(TerminalInfo.NT_PC_GA_GENERAL, req.getTerminal())) { + && !isGATerminal(req.getTerminal())) { // 为了兼容用户没有在企业中,但是需要看到企业类型的菜单,在调用相关接口时,忽略这些菜单的鉴权 if (CollectionUtils.isNotEmpty(notAuthUniCodes)) { diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java index c4d76d41..4c898184 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java @@ -4,7 +4,6 @@ import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.profiles.api.UserProfileServiceApi; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; -import cn.axzo.framework.auth.domain.TerminalInfo; import cn.axzo.framework.domain.page.PageResp; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; @@ -78,6 +77,10 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @Service public class ProductServiceImpl implements ProductService { + + /** 政务端前缀 **/ + private static final String PREFIX_TERMINAL_GA = "NT_PC_GA_"; + private final ProductModuleDao productModuleDao; private final ProductFeatureRelationService productFeatureRelationService; private final SaasFeatureResourceService saasFeatureResourceService; @@ -290,7 +293,7 @@ public class ProductServiceImpl implements ProductService { @Override public ApiResult> getGovernmentTerminal(String terminal) { - List featureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(0L, terminal, null); + List featureResources = saasFeatureResourceService.listByParentIdAndBlurTerminalAndIds(0L, terminal, null); List resps = CollectionUtil.isEmpty(featureResources) ? Collections.emptyList() : featureResources.stream().map(e -> GovernmentTerminalResp.builder() .featureResourceId(e.getId()) .featureResourceName(e.getFeatureName()) @@ -405,7 +408,7 @@ public class ProductServiceImpl implements ProductService { List saasFeatureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(null, null, rootFeatureIds); AssertUtil.notEmpty(saasFeatureResources, "功能范围选择端不能为空"); saasFeatureResources.forEach(e -> { - AssertUtil.isTrue(e.getParentId() == 0 && TerminalInfo.NT_PC_GA_GENERAL.equals(e.getTerminal()), "功能范围选择端有误"); + AssertUtil.isTrue(e.getParentId() == 0 && e.getTerminal().startsWith(PREFIX_TERMINAL_GA), "功能范围选择端有误"); }); List frs = saasFeatureResourceService.batchListDescendant(rootFeatureIds); @@ -471,7 +474,7 @@ public class ProductServiceImpl implements ProductService { } product.setRelationType(result.getData().get(0).getType()); List featureIds = result.getData().stream().map(ProductFeatureRelationVO::getFeatureId).collect(Collectors.toList()); - List featureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(0L, TerminalInfo.NT_PC_GA_GENERAL, featureIds); + List featureResources = saasFeatureResourceService.listByParentIdAndBlurTerminalAndIds(0L, PREFIX_TERMINAL_GA, featureIds); if (CollectionUtil.isNotEmpty(featureResources)) { product.setFeatureScopes(featureResources.stream().map(e -> ProductVO.FeatureScope.builder() .governmentFeatureResourceId(e.getId()) 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 a48e8b6a..e6b701dc 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 @@ -602,6 +602,16 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl listByParentIdAndBlurTerminalAndIds(Long parentId, String terminal, List featureIds) { + return featureResourceDao.lambdaQuery() + .eq(BaseEntity::getIsDelete, 0) + .eq(Objects.nonNull(parentId), SaasFeatureResource::getParentId, parentId) + .likeRight(StringUtils.isNotBlank(terminal), SaasFeatureResource::getTerminal, terminal) + .in(CollectionUtil.isNotEmpty(featureIds), SaasFeatureResource::getId, featureIds) + .list(); + } + @Override public List list(PageSaasFeatureResourceReq param) { return PageConverter.drainAll(pageNumber -> {