From 38dd3d3f7988bf5b02025735afdb9425b8b83af5 Mon Sep 17 00:00:00 2001 From: yangsong Date: Tue, 12 Sep 2023 16:42:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=B1=BB=E5=9E=8B=E5=8F=98?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../role/SaasPermissionGroupController.java | 7 +- .../service/PermissionGroupService.java | 3 +- .../service/impl/PermissionGroupImpl.java | 64 +++++++++++++++++++ 3 files changed, 69 insertions(+), 5 deletions(-) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasPermissionGroupController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasPermissionGroupController.java index 15b2139a..27bc90e0 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasPermissionGroupController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasPermissionGroupController.java @@ -1,16 +1,15 @@ package cn.axzo.tyr.server.controller.role; -import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.tyr.client.feign.SaasPermissionGroupApi; import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; import cn.axzo.tyr.server.repository.service.SaasPermissionGroupDao; import cn.axzo.tyr.server.repository.service.SaasPermissionGroupScopeDao; import cn.axzo.tyr.server.repository.service.SaasPgroupPermissionRelationDao; +import cn.axzo.tyr.server.service.PermissionGroupService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; @@ -18,7 +17,6 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; - @Slf4j @RestController @RequiredArgsConstructor @@ -27,6 +25,7 @@ public class SaasPermissionGroupController implements SaasPermissionGroupApi { private final SaasPermissionGroupDao permissionGroupDao; private final SaasPgroupPermissionRelationDao pgroupPermissionRelationDao; private final SaasPermissionGroupScopeDao permissionGroupScopeDao; + private final PermissionGroupService permissionGroupService; @Override public ApiResult saveOrUpdate(SaasPermissionGroupVO req) { @@ -40,7 +39,7 @@ public class SaasPermissionGroupController implements SaasPermissionGroupApi { @Override public ApiPageResult query(QuerySaasPermissionGroupReq req) { - return null; + return ApiPageResult.ok(permissionGroupService.page(req)); } @Transactional diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java index 19017dc6..d6f96b88 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/PermissionGroupService.java @@ -1,5 +1,6 @@ package cn.axzo.tyr.server.service; +import cn.axzo.framework.domain.page.PageResp; import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO; @@ -19,6 +20,6 @@ public interface PermissionGroupService { */ public List query(QuerySaasPermissionGroupReq req); - + PageResp page(QuerySaasPermissionGroupReq req); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java index b7f04ebe..f6fba882 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionGroupImpl.java @@ -1,6 +1,7 @@ package cn.axzo.tyr.server.service.impl; import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum; +import cn.axzo.framework.domain.page.PageResp; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode; import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq; @@ -13,6 +14,7 @@ import cn.axzo.tyr.server.repository.service.SaasPgroupPermissionRelationDao; import cn.axzo.tyr.server.repository.service.SaasPgroupRoleRelationDao; import cn.axzo.tyr.server.service.PermissionGroupService; import cn.axzo.tyr.server.service.PermissionPointService; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -97,4 +99,66 @@ public class PermissionGroupImpl implements PermissionGroupService { ).collect(Collectors.toList()); } + + @Override + public PageResp page(QuerySaasPermissionGroupReq req) { + // 如果角色id不为空则先查询角色权限集关联表 + IPage iPage = req.toPage(); + if (CollectionUtils.isNotEmpty(req.getRoleIds())) { + List relationList = roleRelationDao.lambdaQuery() + .in(SaasPgroupRoleRelation::getRoleId, req.getRoleIds()) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); + List hitIds = relationList.stream().map(SaasPgroupRoleRelation::getGroupId).distinct().collect(Collectors.toList()); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(req.getIds())) { + req.getIds().retainAll(hitIds); + } else { + req.setIds(hitIds); + } + // 如果没查询到关联关系则直接返回 + if (CollectionUtils.isEmpty(relationList)) { + return PageResp.zero(iPage.getCurrent(), iPage.getSize()); + } + } + // 查询权限集 + iPage = permissionGroupDao.lambdaQuery() + .in(CollectionUtils.isNotEmpty(req.getIds()), BaseEntity::getId, req.getIds()) + .eq(req.getIsCommon() != null, SaasPermissionGroup::getIsCommon, req.getIsCommon()) + .eq(req.getCreateBy() != null, SaasPermissionGroup::getCreateBy, req.getCreateBy()) + .eq(req.getUpdateBy() != null, SaasPermissionGroup::getUpdateBy, req.getUpdateBy()) + .eq(StringUtils.isNotBlank(req.getType()), SaasPermissionGroup::getType, req.getType()) + .like(StringUtils.isNotBlank(req.getName()), SaasPermissionGroup::getName, req.getName()) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .orderByDesc(BaseEntity::getId) + .page(iPage); + List groupList = iPage.getRecords(); + // 如果权限集为空则直接返回 + if (CollectionUtils.isEmpty(groupList)) { + return PageResp.zero(iPage.getCurrent(), iPage.getSize()); + } + // 查询权限集关联的权限 + List permissionList = permissionRelationDao.lambdaQuery() + .in(SaasPgroupPermissionRelation::getGroupId, groupList.stream().map(BaseEntity::getId).collect(Collectors.toList())) + .eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .list(); + List feature = null; + if (CollectionUtils.isNotEmpty(permissionList)) { + // 查询featureCode + feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList())); + } + // 组装填充字段 + List finalFeature = feature; + List pageList = groupList.stream().map(group -> + SaasPermissionGroupVO.builder() + .id(group.getId()) + .name(group.getName()) + .feature(finalFeature) + .createBy(group.getCreateBy()) + .updateBy(group.getUpdateBy()) + .type(group.getType()) + .build() + ).collect(Collectors.toList()); + return PageResp.list(iPage.getCurrent(), iPage.getSize(), iPage.getTotal(), pageList); + } + }