feat(2046) fix 设置角色时,使用group id查询

This commit is contained in:
TanJ 2024-01-16 11:44:19 +08:00
parent a897771bf3
commit d617917e45
5 changed files with 14 additions and 12 deletions

View File

@ -9,7 +9,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -32,7 +31,6 @@ public class WorkerManagerRoleUserReq {
* 这个字段在设置后续产品重构了班组管理员代班长相关功能的时候要替换成ROLE ID
* 现在保留权限集ID是因为只是做统一权限角色查询链路先暂时不变REQ-2046)
*/
@NotEmpty
private List<Long> permissionGroupId;
private IdentityType identityType;

View File

@ -40,5 +40,9 @@ public class SaasPgroupRoleRelationDao extends ServiceImpl<SaasPgroupRoleRelatio
}
public List<SaasPgroupRoleRelation> listByGroupIds(List<Long> permissionGroupId) {
return lambdaQuery()
.in(SaasPgroupRoleRelation::getGroupId, permissionGroupId).list();
}
}

View File

@ -107,6 +107,9 @@ public class SaasRoleDao extends ServiceImpl<SaasRoleMapper, SaasRole> {
}
public List<SaasRole> findInitRole(Set<Long> roleIds) {
if (CollectionUtils.isEmpty(roleIds)) {
return new ArrayList<>();
}
return lambdaQuery().in(BaseEntity::getId, roleIds)
.eq(BaseEntity::getIsDelete, TableIsDeleteEnum.NORMAL)
.eq(SaasRole::getRoleType, RoleTypeEnum.INIT.getValue())

View File

@ -128,7 +128,7 @@ public class SaasRoleUserRelationDao extends ServiceImpl<SaasRoleUserRelationMap
.eq(SaasRoleUserRelation::getWorkspaceId, req.getWorkspaceId())
.eq(SaasRoleUserRelation::getResourceType, req.getResourceType())
.eq(SaasRoleUserRelation::getRoleId, req.getResourceId())
.setSql(" is_delete = id");
.setSql(" is_delete = id").update();
}

View File

@ -28,9 +28,7 @@ import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
import cn.axzo.tyr.server.repository.entity.SaasRole;
import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation;
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
import cn.axzo.tyr.server.service.SaasRoleGroupRelationService;
import cn.axzo.tyr.server.service.SaasRoleGroupService;
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
import cn.axzo.tyr.server.service.SaasRoleUserService;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
@ -332,14 +330,13 @@ public class RoleUserService implements SaasRoleUserService {
@Transactional
public void grantOrUngrantWorkerManager(WorkerManagerRoleUserReq req) {
// 查询出角色ID
List<SaasPgroupRoleRelation> saasPgroupRoleRelations = saasPgroupRoleRelationDao.listByIds(req.getPermissionGroupId());
List<SaasPgroupRoleRelation> saasPgroupRoleRelations = new ArrayList<>(); // NPE
if (CollectionUtil.isNotEmpty(req.getPermissionGroupId())) {
saasPgroupRoleRelations = saasPgroupRoleRelationDao.listByGroupIds(req.getPermissionGroupId());
}
List<SaasRole> roleInfos = saasRoleDao.findInitRole(saasPgroupRoleRelations.stream().map(SaasPgroupRoleRelation::getRoleId).collect(Collectors.toSet()));
if (CollectionUtil.isEmpty(roleInfos)) {
log.warn("not found role info");
return;
}
RoleUserInfo roleUserBaseInfo = RoleUserInfo.builder()
.roleUserResourceInfos(req.getManagerInfos().stream().map(e -> RoleUserInfo.RoleUserResourceInfo
.builder()
@ -358,7 +355,7 @@ public class RoleUserService implements SaasRoleUserService {
if (CollectionUtil.isEmpty(roleUserBaseInfo.getRoleUserResourceInfos())) {
throw new ServiceException("grant team manager error, not found person info");
}
if (CollectionUtil.isEmpty(saasPgroupRoleRelations)) {
if (CollectionUtil.isEmpty(saasPgroupRoleRelations)|| CollectionUtil.isEmpty(roleInfos)) {
log.warn("warn: grant team manager permission error, not found permissions info");
// 未指定授权哪些角色
return;