实现接口:根据身份id和身份类型查询角色、权限集、权限
This commit is contained in:
parent
6885458035
commit
a25a245b9b
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
/**
|
||||
* 角色
|
||||
*/
|
||||
@FeignClient(name = "tyr", url = "${axzo.service.maokai:http://tyr:8080/api/saasRole}")
|
||||
@FeignClient(name = "tyr", url = "${axzo.service.maokai:http://tyr:8080}")
|
||||
public interface SaasRoleApi {
|
||||
|
||||
/**
|
||||
@ -21,25 +21,25 @@ public interface SaasRoleApi {
|
||||
* 标准角worksaceId ouId = -1,自定义跟随自定义分组赋值
|
||||
* 如果权限列表不为空则创建通用权限
|
||||
*/
|
||||
@PostMapping("saveOrUpdate")
|
||||
@PostMapping("/api/saasRole/saveOrUpdate")
|
||||
ApiResult saveOrUpdate(@RequestBody SaasRoleVO req);
|
||||
|
||||
/**
|
||||
* 根据id查询详情
|
||||
*/
|
||||
@PostMapping("getById")
|
||||
@PostMapping("/api/saasRole/getById")
|
||||
ApiResult<SaasRoleVO> getById(@RequestParam(required = true) Long id);
|
||||
|
||||
/**
|
||||
* 获取角色列表
|
||||
*/
|
||||
@PostMapping("query")
|
||||
@PostMapping("/api/saasRole/query")
|
||||
ApiListResult<SaasRoleVO> query(@RequestBody QuerySaasRoleReq req);
|
||||
|
||||
/**
|
||||
* 根据身份id 身份类型查询权限列表
|
||||
*/
|
||||
@GetMapping("queryByIdentityIdType")
|
||||
@GetMapping("/api/saasRole/queryByIdentityIdType")
|
||||
ApiListResult<SaasRoleVO> queryByIdentityIdType(@RequestParam(required = true) Long identityId,@RequestParam(required = true) Integer identityType);
|
||||
|
||||
}
|
||||
|
||||
@ -2,17 +2,23 @@ package cn.axzo.tyr.client.model.req;
|
||||
|
||||
|
||||
import cn.axzo.basics.common.page.PageRequest;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class QuerySaasPermissionGroupReq extends PageRequest {
|
||||
|
||||
/**
|
||||
* 角色id
|
||||
*/
|
||||
private Long roleId;
|
||||
private List<Long> roleIds;
|
||||
|
||||
/**
|
||||
* 权限组id
|
||||
@ -24,6 +30,11 @@ public class QuerySaasPermissionGroupReq extends PageRequest {
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 是否为通用权限集 1:是 0:否
|
||||
*/
|
||||
private Integer isCommon;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.tyr.client.model.vo;
|
||||
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@ -46,8 +47,8 @@ public class SaasPermissionGroupVO {
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 权限id
|
||||
* 权限
|
||||
*/
|
||||
private List<Long> featureIds;
|
||||
private List<PermissionPointTreeNode> feature;
|
||||
|
||||
}
|
||||
|
||||
@ -35,6 +35,11 @@ public class SaasRoleGroupVO {
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 角色
|
||||
*/
|
||||
private List<SaasRoleVO> role;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
|
||||
@ -1,11 +1,18 @@
|
||||
package cn.axzo.tyr.client.model.vo;
|
||||
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class SaasRoleVO {
|
||||
|
||||
private Long id;
|
||||
@ -31,19 +38,14 @@ public class SaasRoleVO {
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 分组id
|
||||
* 分组id(这个关联关系应该放在上一级,从结构上看,上下级是多对多的,如果放在下级返回上级的id不太合适)
|
||||
*/
|
||||
private List<Long> roleGroupIds;
|
||||
// private List<Long> roleGroupIds;
|
||||
|
||||
/**
|
||||
* 权限组id
|
||||
* 权限组
|
||||
*/
|
||||
private List<Long> permissionGroupIds;
|
||||
|
||||
/**
|
||||
* 权限id
|
||||
*/
|
||||
private List<Long> featureIds;
|
||||
private List<SaasPermissionGroupVO> permissionGroup;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
|
||||
@ -43,12 +43,6 @@
|
||||
<groupId>cn.axzo.framework</groupId>
|
||||
<artifactId>axzo-processor-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.basics</groupId>
|
||||
<artifactId>basics-common</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
|
||||
@ -13,9 +13,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
|
||||
@Slf4j
|
||||
@EnableAsync
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackages = {
|
||||
"cn.axzo.data.collection.api",
|
||||
})
|
||||
//@EnableFeignClients
|
||||
@MapperScan(value = {"cn.axzo.tyr.server.repository.mapper"})
|
||||
@SpringBootApplication(scanBasePackages = "cn.axzo")
|
||||
public class TyrApplication {
|
||||
|
||||
@ -51,7 +51,6 @@ public class SaasRoleController implements SaasRoleApi {
|
||||
|
||||
@Override
|
||||
public ApiListResult<SaasRoleVO> queryByIdentityIdType(Long identityId, Integer identityType) {
|
||||
// 根据身份id和身份类型查询 用户角色关联表
|
||||
return roleService.queryByIdentityIdType(identityId, identityType);
|
||||
return ApiListResult.ok(roleService.queryByIdentityIdType(identityId, identityType));
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,11 +22,11 @@ import java.io.Serializable;
|
||||
@TableName("saas_permission_group")
|
||||
public class SaasPermissionGroup extends BaseEntity<SaasPermissionGroup> {
|
||||
|
||||
|
||||
/**
|
||||
* 权限集名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 权限集描述
|
||||
*/
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
package cn.axzo.tyr.server.repository.entity;
|
||||
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 权限集功能中间表(SaasPgroupPermissionRelation)表实体类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2022-05-24 11:18:41
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("saas_pgroup_permission_relation")
|
||||
public class SaasPgroupPermissionRelation extends BaseEntity<SaasPgroupPermissionRelation> {
|
||||
|
||||
|
||||
/**
|
||||
* 权限集id
|
||||
*/
|
||||
private Long groupId;
|
||||
/**
|
||||
* 功能id
|
||||
*/
|
||||
private Long featureId;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
|
||||
/**
|
||||
* 获取主键值
|
||||
*
|
||||
* @return 主键值
|
||||
*/
|
||||
@Override
|
||||
protected Serializable pkVal() {
|
||||
return this.id;
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ public class SaasRoleUserRelation extends BaseEntity<SaasRoleUserRelation> {
|
||||
/**
|
||||
* 身份类型 1:工人 2:从业人员 3:班组长 4:运营人员 5:政务人员
|
||||
*/
|
||||
private IdentityType identityType;
|
||||
private Integer identityType;
|
||||
|
||||
/**
|
||||
* 角色Id
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
package cn.axzo.tyr.server.repository.mapper;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface SaasPgroupPermissionRelationMapper extends BaseMapper<SaasPgroupPermissionRelation> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package cn.axzo.tyr.server.repository.service;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPgroupPermissionRelationMapper;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public class SaasPgroupPermissionRelationDao extends ServiceImpl<SaasPgroupPermissionRelationMapper, SaasPgroupPermissionRelation> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
|
||||
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 角色
|
||||
*
|
||||
* @version V1.0
|
||||
* @author: ZhanSiHu
|
||||
* @date: 2023/9/6 15:51
|
||||
*/
|
||||
public interface PermissionGroupService {
|
||||
|
||||
/**
|
||||
* 通用查询
|
||||
*/
|
||||
public List<SaasPermissionGroupVO> query(QuerySaasPermissionGroupReq req);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -4,6 +4,7 @@ import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointVO;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -42,4 +43,5 @@ public interface PermissionPointService {
|
||||
|
||||
/** 移动排序 **/
|
||||
void updateSort(Long updater, Long permissionId, Integer direction);
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package cn.axzo.tyr.server.service;
|
||||
import cn.axzo.framework.domain.web.result.ApiListResult;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 角色
|
||||
*
|
||||
@ -13,5 +15,5 @@ import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
public interface RoleService {
|
||||
|
||||
|
||||
ApiListResult<SaasRoleVO> queryByIdentityIdType(Long identityId, Integer identityType);
|
||||
List<SaasRoleVO> queryByIdentityIdType(Long identityId, Integer identityType);
|
||||
}
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
|
||||
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||
import cn.axzo.tyr.server.repository.service.SaasPermissionGroupDao;
|
||||
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 lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 权限集
|
||||
*
|
||||
* @version V1.0
|
||||
* @author: ZhanSiHu
|
||||
* @date: 2023/9/6 15:51
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class PermissionGroupImpl implements PermissionGroupService {
|
||||
|
||||
@Autowired
|
||||
SaasPermissionGroupDao permissionGroupDao;
|
||||
@Autowired
|
||||
SaasPgroupRoleRelationDao roleRelationDao;
|
||||
@Autowired
|
||||
SaasPgroupPermissionRelationDao permissionRelationDao;
|
||||
@Autowired
|
||||
PermissionPointService featureService;
|
||||
|
||||
@Override
|
||||
public List<SaasPermissionGroupVO> query(QuerySaasPermissionGroupReq req) {
|
||||
// 如果角色id不为空则先查询角色权限集关联表
|
||||
List<SaasPgroupRoleRelation> relationList = null;
|
||||
if (CollectionUtils.isNotEmpty(req.getRoleIds())) {
|
||||
relationList = roleRelationDao.lambdaQuery()
|
||||
.in(SaasPgroupRoleRelation::getRoleId, req.getRoleIds())
|
||||
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.list();
|
||||
// 如果没查询到关联关系则直接返回
|
||||
if (CollectionUtils.isEmpty(relationList)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
// 查询权限集
|
||||
List<SaasPermissionGroup> groupList = 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())
|
||||
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.orderByDesc(BaseEntity::getId)
|
||||
.list();
|
||||
// 如果权限集为空则直接返回
|
||||
if (CollectionUtils.isEmpty(groupList)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
// 查询权限集关联的权限
|
||||
List<SaasPgroupPermissionRelation> permissionList = permissionRelationDao.lambdaQuery()
|
||||
.in(SaasPgroupPermissionRelation::getGroupId, groupList.stream().map(BaseEntity::getId).collect(Collectors.toList()))
|
||||
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.list();
|
||||
List<PermissionPointTreeNode> feature = null;
|
||||
if (CollectionUtils.isNotEmpty(permissionList)) {
|
||||
// 查询featureCode
|
||||
feature = featureService.listNodesByIds(permissionList.stream().map(SaasPgroupPermissionRelation::getFeatureId).collect(Collectors.toList()));
|
||||
}
|
||||
// 组装填充字段
|
||||
List<PermissionPointTreeNode> finalFeature = feature;
|
||||
return 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());
|
||||
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.util.TreeUtil;
|
||||
import cn.axzo.framework.domain.web.BizException;
|
||||
import cn.axzo.framework.domain.web.code.BaseCode;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.model.enums.FeatureType;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
@ -130,7 +131,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
@Override
|
||||
public List<PermissionPointTreeNode> listNodesByIds(List<Long> permissionIds) {
|
||||
if (CollectionUtil.isEmpty(permissionIds)) {
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return this.saasFeatureDao.listByIds(permissionIds)
|
||||
.stream()
|
||||
@ -296,7 +297,6 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
this.saasFeatureDao.updateSort(sortedChildren.get(switchIndex).getId(), index);
|
||||
}
|
||||
|
||||
|
||||
private PermissionPointTreeNode feature2Node(SaasFeature feature) {
|
||||
PermissionPointTreeNode node = new PermissionPointTreeNode();
|
||||
node.setPermissionPointId(feature.getId());
|
||||
|
||||
@ -1,18 +1,27 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiListResult;
|
||||
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.req.QuerySaasPermissionGroupReq;
|
||||
import cn.axzo.tyr.client.model.vo.SaasPermissionGroupVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
||||
import cn.axzo.tyr.server.repository.service.SaasPgroupRoleRelationDao;
|
||||
import cn.axzo.tyr.server.repository.service.SaasRoleDao;
|
||||
import cn.axzo.tyr.server.repository.service.SaasRoleUserRelationDao;
|
||||
import cn.axzo.tyr.server.service.PermissionGroupService;
|
||||
import cn.axzo.tyr.server.service.RoleService;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -31,12 +40,62 @@ public class RoleServiceImpl implements RoleService {
|
||||
SaasRoleUserRelationDao roleUserRelationDao;
|
||||
@Autowired
|
||||
SaasRoleDao saasRoleDao;
|
||||
@Autowired
|
||||
PermissionGroupService permissionGroupService;
|
||||
@Autowired
|
||||
SaasPgroupRoleRelationDao permissionGroupRelation;
|
||||
|
||||
@Override
|
||||
public ApiListResult<SaasRoleVO> queryByIdentityIdType(Long identityId, Integer identityType) {
|
||||
public List<SaasRoleVO> queryByIdentityIdType(Long identityId, Integer identityType) {
|
||||
// 查询人关联的角色id
|
||||
Set<Long> roleIds = roleUserRelationDao.queryByIdentityIdType(identityId, identityType).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toSet());
|
||||
// 根据角色列表查询角色列表
|
||||
return ApiListResult.ok(null);
|
||||
List<Long> roleIds = roleUserRelationDao.queryByIdentityIdType(identityId, identityType).stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(roleIds)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
// 查询角色信息
|
||||
List<SaasRole> roles = saasRoleDao.lambdaQuery().in(BaseEntity::getId, roleIds).list();
|
||||
// 查询权限集关联关系
|
||||
List<SaasPgroupRoleRelation> saasPgroupRoleRelations = queryPermissionGroupRelation(roleIds);
|
||||
// 查询权限集
|
||||
Map<Long, List<SaasPgroupRoleRelation>> pgrouRelationMap = null;
|
||||
Map<Long, List<SaasPermissionGroupVO>> pGroupMap = null;
|
||||
if (CollectionUtils.isNotEmpty(saasPgroupRoleRelations)) {
|
||||
// 转map<roleId,relation>
|
||||
pgrouRelationMap = saasPgroupRoleRelations.stream().collect(Collectors.groupingBy(SaasPgroupRoleRelation::getRoleId));
|
||||
// 查询权限集
|
||||
pGroupMap = permissionGroupService.query(QuerySaasPermissionGroupReq.builder()
|
||||
.ids(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList()))
|
||||
.build())
|
||||
// 转map<pgroupId>
|
||||
.stream().collect(Collectors.groupingBy(SaasPermissionGroupVO::getId));
|
||||
}
|
||||
Map<Long, List<SaasPgroupRoleRelation>> finalPgrouRelationMap = pgrouRelationMap;
|
||||
Map<Long, List<SaasPermissionGroupVO>> finalPGroupMap = pGroupMap;
|
||||
return roles.stream().map(role -> {
|
||||
// 获取对应的权限集
|
||||
List<SaasPermissionGroupVO> pGroup = new ArrayList<>();
|
||||
if(finalPgrouRelationMap != null && finalPgrouRelationMap.containsKey(role.getId())) {
|
||||
pGroup = finalPgrouRelationMap.get(role.getId())
|
||||
.stream()
|
||||
.map(SaasPgroupRoleRelation::getGroupId)
|
||||
.map(finalPGroupMap::get)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(List::stream)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
SaasRoleVO saasRoleVO = BeanUtil.copyProperties(role, SaasRoleVO.class);
|
||||
saasRoleVO.setPermissionGroup(pGroup);
|
||||
return saasRoleVO;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据角色id查询权限集关联关系
|
||||
*/
|
||||
public List<SaasPgroupRoleRelation> queryPermissionGroupRelation(List<Long> roleIds) {
|
||||
return permissionGroupRelation.lambdaQuery()
|
||||
.in(SaasPgroupRoleRelation::getRoleId, roleIds)
|
||||
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.list();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user