REQ-2046 小组长权限

This commit is contained in:
henry 2024-02-06 17:15:54 +08:00
parent a3a0eee25e
commit 13c7b79591
3 changed files with 7 additions and 13 deletions

View File

@ -140,5 +140,4 @@ public interface TyrSaasRoleApi {
*/ */
@PostMapping("api/saasRole/changeGroupLeaderRole") @PostMapping("api/saasRole/changeGroupLeaderRole")
ApiResult<Void> changeGroupLeaderRole(@RequestBody @Valid List<ChangeGroupLeaderRoleReq> req); ApiResult<Void> changeGroupLeaderRole(@RequestBody @Valid List<ChangeGroupLeaderRoleReq> req);
} }

View File

@ -42,5 +42,5 @@ public class ChangeGroupLeaderRoleReq {
* 权限名列表 * 权限名列表
*/ */
@NotEmpty @NotEmpty
private List<String> permissionNameList = Lists.newArrayListWithExpectedSize(3); private List<Long> roleIdList = Lists.newArrayList();
} }

View File

@ -886,20 +886,18 @@ public class RoleServiceImpl implements RoleService {
log.warn("can't find group_role_relation.code: {}", groupLeaderCode); log.warn("can't find group_role_relation.code: {}", groupLeaderCode);
return; return;
} }
Map<String, Long> roleMap = voList.get(0).getRoleInfos().stream().collect(Collectors.toMap(SaasRoleVO::getName, SaasRoleVO::getId, (a, b) -> a));
List<SaasRoleUserRelation> userRelationList = reqs.stream().map(req -> { List<SaasRoleUserRelation> userRelationList = reqs.stream().map(req -> {
List<SaasRoleUserRelation> nowRelations = saasRoleUserRelationDao.findValidByNodeResource(req.getGroupLeaderPersonId(), req.getGroupNodeId(), null); List<SaasRoleUserRelation> nowRelations = saasRoleUserRelationDao.findValidByNodeResource(req.getGroupLeaderPersonId(), req.getGroupNodeId(), null);
Map<Long, SaasRoleUserRelation> relationMap = nowRelations.stream().collect(Collectors.toMap(SaasRoleUserRelation::getRoleId, Function.identity(), (a, b) -> a)); Map<Long, SaasRoleUserRelation> relationMap = nowRelations.stream().collect(Collectors.toMap(SaasRoleUserRelation::getRoleId, Function.identity(), (a, b) -> a));
List<String> permissionNameList = req.getPermissionNameList(); List<Long> roleIdList = req.getRoleIdList();
if (CollUtil.isNotEmpty(permissionNameList)) { if (CollUtil.isNotEmpty(roleIdList)) {
if (CollUtil.isNotEmpty(nowRelations)) { if (CollUtil.isNotEmpty(nowRelations)) {
List<SaasRoleUserRelation> resList = Lists.newArrayList(); List<SaasRoleUserRelation> resList = Lists.newArrayList();
// 都不为空 既增又减 // 都不为空 既增又减
Set<Long> nowRoles = nowRelations.stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toSet()); Set<Long> nowRoles = nowRelations.stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toSet());
// nowRoles -A , newRoles - B // nowRoles -A , newRoles - B
// A-B 减少的权限 // A-B 减少的权限
Set<Long> newRoles = permissionNameList.stream().map(roleMap::get).filter(Objects::nonNull).collect(Collectors.toSet()); Set<Long> newRoles = roleIdList.stream().filter(Objects::nonNull).collect(Collectors.toSet());
Set<Long> deductRoles = Sets.difference(nowRoles, newRoles); Set<Long> deductRoles = Sets.difference(nowRoles, newRoles);
if (CollUtil.isNotEmpty(deductRoles)) { if (CollUtil.isNotEmpty(deductRoles)) {
List<SaasRoleUserRelation> deductRelations = deductRoles.stream().map(relationMap::get).filter(Objects::nonNull).collect(Collectors.toList()); List<SaasRoleUserRelation> deductRelations = deductRoles.stream().map(relationMap::get).filter(Objects::nonNull).collect(Collectors.toList());
@ -927,14 +925,11 @@ public class RoleServiceImpl implements RoleService {
return resList; return resList;
} else { } else {
// nowRelations 为空 则只增不减 // nowRelations 为空 则只增不减
return permissionNameList.stream().map(e -> { return roleIdList.stream().map(e -> {
if (Objects.isNull(roleMap.get(e))) {
return null;
}
SaasRoleUserRelation userRelation = new SaasRoleUserRelation(); SaasRoleUserRelation userRelation = new SaasRoleUserRelation();
userRelation.setIdentityId(req.getGroupLeaderIdentityId()); userRelation.setIdentityId(req.getGroupLeaderIdentityId());
userRelation.setRoleId(roleMap.get(e)); userRelation.setRoleId(e);
userRelation.setIdentityType(IdentityType.WORKER.getCode()); userRelation.setIdentityType(IdentityType.WORKER.getCode());
userRelation.setNaturalPersonId(req.getGroupLeaderPersonId()); userRelation.setNaturalPersonId(req.getGroupLeaderPersonId());
userRelation.setWorkspaceId(req.getWorkspaceId()); userRelation.setWorkspaceId(req.getWorkspaceId());
@ -944,7 +939,7 @@ public class RoleServiceImpl implements RoleService {
userRelation.setResourceId(req.getGroupNodeId()); userRelation.setResourceId(req.getGroupNodeId());
return userRelation; return userRelation;
}).filter(Objects::nonNull).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
} }
if (CollUtil.isNotEmpty(nowRelations)) { if (CollUtil.isNotEmpty(nowRelations)) {