From f4e4c0fdcfb8e53ec4231b39390b8e19d483ca5c Mon Sep 17 00:00:00 2001 From: yangsong Date: Mon, 11 Sep 2023 18:17:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=A7=92=E8=89=B2=E8=AF=A6?= =?UTF-8?q?=E6=83=85=EF=BC=8C=E5=88=86=E7=BB=84=E8=A7=92=E8=89=B2id?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/tyr/client/feign/SaasRoleApi.java | 3 +- .../tyr/client/feign/SaasRoleGroupApi.java | 2 +- .../model/enums/PermissionGroupType.java | 29 +++++++++++++++ .../client/model/enums/RoleGroupScope.java | 29 +++++++++++++++ .../model/req/QuerySaasRoleGroupReq.java | 5 ++- .../client/model/req/QuerySaasRoleReq.java | 2 ++ .../controller/role/SaasRoleController.java | 11 +++++- .../server/service/impl/RoleServiceImpl.java | 8 ++--- .../impl/SaasRoleGroupServiceImpl.java | 35 ++++++++++++++----- 9 files changed, 107 insertions(+), 17 deletions(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/PermissionGroupType.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/RoleGroupScope.java diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java index 51314ede..e72b2b23 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleApi.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; @@ -31,7 +32,7 @@ public interface SaasRoleApi { * 根据id查询详情 */ @PostMapping("/api/saasRole/getById") - ApiResult getById(@RequestParam(required = true) Long id); + ApiResult getById(@RequestParam(required = true) @NotNull Long id); /** * 获取角色列表 diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleGroupApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleGroupApi.java index 174cb817..7f2886f4 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleGroupApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasRoleGroupApi.java @@ -2,8 +2,8 @@ package cn.axzo.tyr.client.feign; import cn.axzo.framework.domain.web.result.ApiListResult; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import cn.axzo.tyr.client.model.req.QuerySaasRoleGroupReq; +import cn.axzo.tyr.client.model.vo.SaasRoleGroupVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/PermissionGroupType.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/PermissionGroupType.java new file mode 100644 index 00000000..6a92fd64 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/PermissionGroupType.java @@ -0,0 +1,29 @@ +package cn.axzo.tyr.client.model.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +@Getter +@AllArgsConstructor +public enum PermissionGroupType { + COMMON(1, "通用"), + Special (0, "例外"), + ; + + private Integer code; + private String desc; + + private static final Map MAPPING = new HashMap<>(); + static { + for (PermissionGroupType type : PermissionGroupType.values()) { + MAPPING.put(type.code, type); + } + } + + public static PermissionGroupType apply(Integer code) { + return code == null ? null :MAPPING.get(code); + } +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/RoleGroupScope.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/RoleGroupScope.java new file mode 100644 index 00000000..ad610bf1 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/enums/RoleGroupScope.java @@ -0,0 +1,29 @@ +package cn.axzo.tyr.client.model.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +@Getter +@AllArgsConstructor +public enum RoleGroupScope { + ALL(1, "全部"), + SPECIFY_ENTERPRISE_TYPE(2, "指定企业类型"), + ; + + private Integer code; + private String desc; + + private static final Map MAPPING = new HashMap<>(); + static { + for (RoleGroupScope type : RoleGroupScope.values()) { + MAPPING.put(type.code, type); + } + } + + public static RoleGroupScope apply(Integer code) { + return code == null ? null :MAPPING.get(code); + } +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleGroupReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleGroupReq.java index 22b56ae0..a9fdbcde 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleGroupReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleGroupReq.java @@ -34,5 +34,8 @@ public class QuerySaasRoleGroupReq { * 单位类型字典code */ private List ouTypeCode; - + /** + * 被那些角色使用到的分组 + */ + private List roleIds; } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java index 5438c865..2527491b 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/QuerySaasRoleReq.java @@ -37,4 +37,6 @@ public class QuerySaasRoleReq { * 分组id */ private List sassRoleGroupIds; + + private Integer isCommon; } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java index e030d5d9..79f018e9 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/role/SaasRoleController.java @@ -1,13 +1,17 @@ package cn.axzo.tyr.server.controller.role; +import cn.axzo.framework.domain.web.BizException; +import cn.axzo.framework.domain.web.code.BaseCode; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.tyr.client.feign.SaasRoleApi; import cn.axzo.tyr.client.model.req.QueryByIdentityIdTypeReq; import cn.axzo.tyr.client.model.req.QuerySaasRoleReq; import cn.axzo.tyr.client.model.vo.SaasRoleVO; import cn.axzo.tyr.server.service.RoleService; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; @@ -36,7 +40,12 @@ public class SaasRoleController implements SaasRoleApi { @Override public ApiResult getById(Long id) { - return null; + QuerySaasRoleReq query = QuerySaasRoleReq.builder().ids(Lists.newArrayList(id)).build(); + List saasRoles = roleService.query(query); + if (CollectionUtils.isNotEmpty(saasRoles)) { + return ApiResult.ok(saasRoles.get(0)); + } + throw new BizException(BaseCode.BAD_REQUEST, "未查询到角色"); } @Override diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java index 40a33130..4c0ff699 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/RoleServiceImpl.java @@ -55,7 +55,7 @@ public class RoleServiceImpl implements RoleService { if (CollectionUtils.isEmpty(roleIds)) { return new ArrayList<>(); } - return getByIds(roleIds); + return getByIds(roleIds, null); } /** @@ -63,7 +63,7 @@ public class RoleServiceImpl implements RoleService { * * @return */ - public List getByIds(List roleIds) { + public List getByIds(List roleIds, Integer isCommon) { if (CollectionUtils.isEmpty(roleIds)) { return new ArrayList<>(); } @@ -78,7 +78,7 @@ public class RoleServiceImpl implements RoleService { // 转map pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId)); // 查询权限集 - pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder() + pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder().isCommon(isCommon) .ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList())) .build()) // 转map @@ -141,7 +141,7 @@ public class RoleServiceImpl implements RoleService { .eq(StringUtils.isNotBlank(req.getRoleType()), SaasRole::getRoleType, req.getRoleType()) .orderByDesc(BaseEntity::getId) .list(); - return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList())); + return getByIds(list.stream().map(BaseEntity::getId).collect(Collectors.toList()), req.getIsCommon()); } @Override diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java index 7a76af4f..d7dfa8c2 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasRoleGroupServiceImpl.java @@ -30,21 +30,38 @@ public class SaasRoleGroupServiceImpl implements SaasRoleGroupService { @Override public List getList(QuerySaasRoleGroupReq req) { + if (CollectionUtils.isNotEmpty(req.getRoleIds())) { + List saasRoleGroupRelations = saasRoleGroupRelationDao.lambdaQuery() + .in(SaasRoleGroupRelation::getRoleId, req.getRoleIds()) + .eq(SaasRoleGroupRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); + List groupIds = saasRoleGroupRelations.stream().map(SaasRoleGroupRelation::getSaasRoleGroupId).distinct().collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(req.getIds())) { + req.getIds().retainAll(groupIds); + } else { + req.setIds(groupIds); + } + if (CollectionUtils.isEmpty(req.getIds())) { + return new ArrayList<>(); + } + } + List groups = saasRoleGroupDao.query(req); if (CollectionUtils.isEmpty(groups)) { return new ArrayList<>(); } - List saasRoleGroupRelations = saasRoleGroupRelationDao.lambdaQuery().in(SaasRoleGroupRelation::getSaasRoleGroupId, groups.stream().map(SaasRoleGroup::getId)) + List saasRoleGroupRelations = saasRoleGroupRelationDao.lambdaQuery() + .in(SaasRoleGroupRelation::getSaasRoleGroupId, groups.stream().map(SaasRoleGroup::getId)) .eq(SaasRoleGroupRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value).list(); Map> groupRoleMap = saasRoleGroupRelations.stream().collect(Collectors.groupingBy(SaasRoleGroupRelation::getSaasRoleGroupId, Collectors.mapping(SaasRoleGroupRelation::getRoleId, Collectors.toList()))); - List results = groups.stream().map(e -> { - SaasRoleGroupVO target = BeanUtil.copyProperties(e, SaasRoleGroupVO.class); - if (StringUtils.isNotBlank(e.getOuTypeCode())) { - target.setOuTypeCode(Arrays.stream(e.getOuTypeCode().split(",")).filter(StringUtils::isNotBlank).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList())); - } - target.setRoleIds(groupRoleMap.get(e.getId())); - return target; - }).collect(Collectors.toList()); + List results = groups.stream() + .map(e -> { + SaasRoleGroupVO target = BeanUtil.copyProperties(e, SaasRoleGroupVO.class); + if (StringUtils.isNotBlank(e.getOuTypeCode())) { + target.setOuTypeCode(Arrays.stream(e.getOuTypeCode().split(",")).filter(StringUtils::isNotBlank).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList())); + } + target.setRoleIds(groupRoleMap.get(e.getId())); + return target; + }).collect(Collectors.toList()); return results; }