feat:(REQ-2488) 角色用户列表接口支持roleId和roleCodes查询

This commit is contained in:
lilong 2024-08-23 11:07:29 +08:00
parent 4f3daf8adf
commit f1e6a59d2a
5 changed files with 61 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
import java.util.Set;
@Data
@SuperBuilder
@ -83,4 +84,9 @@ public class ListRoleReq {
* 例如((workspaceId = ## and ouId = ##) or (workspaceId = ## and ouId = ##))
*/
private List<ListRoleUserRelationParam.WorkspaceOuPair> workspaceOuPairs;
/**
* 角色权限码
*/
private Set<String> roleCodes;
}

View File

@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
import java.util.Set;
@SuperBuilder
@Data
@ -106,6 +107,12 @@ public class ListRoleUserRelationParam {
@CriteriaField(ignore = true)
private Boolean needPermission;
/**
* 角色权限码
*/
@CriteriaField(ignore = true)
private Set<String> roleCodes;
@Data
@Builder
@NoArgsConstructor

View File

@ -2,11 +2,13 @@ package cn.axzo.tyr.client.model.roleuser.req;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.page.IPageReq;
import cn.axzo.foundation.page.PageResp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Collections;
import java.util.List;
@SuperBuilder
@ -26,4 +28,13 @@ public class PageRoleUserRelationParam extends ListRoleUserRelationParam impleme
*/
@CriteriaField(ignore = true)
List<String> sort;
public PageResp toEmpty() {
return PageResp.builder()
.current(this.getPage())
.size(this.getPageSize())
.total(0)
.data(Collections.emptyList())
.build();
}
}

View File

@ -139,6 +139,12 @@ public interface RoleService extends IService<SaasRole> {
@CriteriaField(field = "id", operator = Operator.NE)
private Long idNE;
/**
* 角色权限码
*/
@CriteriaField(field = "roleCode", operator = Operator.IN)
private Set<String> roleCodes;
/**
* 权限点从saas_feature_resource表查询
*/

View File

@ -9,6 +9,7 @@ import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
import cn.axzo.tyr.client.model.res.SaasRoleRes;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserDTO;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
@ -29,6 +30,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.BeanUtils;
@ -43,6 +45,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -152,6 +155,12 @@ public class SaasRoleUserRelationServiceImpl extends ServiceImpl<SaasRoleUserRel
});
}
Set<Long> roleIds = resolveRoleIds(param);
if (!CollectionUtils.isEmpty(param.getRoleCodes()) && CollectionUtils.isEmpty(roleIds)) {
return param.toEmpty();
}
wrapper.in(!CollectionUtils.isEmpty(roleIds), "role_id", roleIds);
IPage<SaasRoleUserRelation> page = this.page(PageConverter.toMybatis(param, SaasRoleUserRelation.class), wrapper);
Map<Long, SaasRoleUserV2DTO.SaasRoleUser> saasRoleUsers = listSaasRoleUser(param, page.getRecords());
@ -161,6 +170,28 @@ public class SaasRoleUserRelationServiceImpl extends ServiceImpl<SaasRoleUserRel
return PageConverter.toResp(page, (record) -> from(record, saasRoleUsers, saasRoles));
}
private Set<Long> resolveRoleIds(PageRoleUserRelationParam param) {
if (CollectionUtils.isEmpty(param.getRoleCodes())) {
return Optional.ofNullable(param.getRoleIds())
.map(Sets::newHashSet)
.orElseGet(Sets::newHashSet);
}
RoleService.ListSaasRoleParam listSaasRoleParam = RoleService.ListSaasRoleParam.builder()
.roleCodes(param.getRoleCodes())
.build();
Set<Long> roleIds = roleService.list(listSaasRoleParam).stream()
.map(SaasRoleRes::getId)
.collect(Collectors.toSet());
if (CollectionUtils.isEmpty(param.getRoleIds())) {
return roleIds;
}
return param.getRoleIds().stream()
.filter(roleIds::contains)
.collect(Collectors.toSet());
}
private Map<Long, SaasRoleUserV2DTO.SaasRoleUser> listSaasRoleUser(PageRoleUserRelationParam param,
List<SaasRoleUserRelation> saasRoleUserRelations) {
if (CollectionUtils.isEmpty(saasRoleUserRelations) || BooleanUtils.isNotTrue(param.getNeedUsers())) {