feat(REQ-2545): 查询页面有权限的组件

This commit is contained in:
李昆鹏 2024-06-26 16:49:01 +08:00
parent 4cf7460b50
commit 052899e355
3 changed files with 36 additions and 12 deletions

View File

@ -5,9 +5,9 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author likunpeng
@ -20,22 +20,26 @@ import java.util.List;
@AllArgsConstructor
public class GetUserHasPermissionPageElementReq {
/**
* 页面的元素
*/
// @NotNull(message = "页面的元素不能为空")
/** 页面的元素 **/
@NotBlank(message = "页面的元素不能为空")
private String pageElementCode;
/** 登录端 **/
// @NotNull(message = "登录端不能为空")
@NotBlank(message = "登录端不能为空")
private String terminal;
// @NotNull(message = "人员ID不能为空")
/** 人员ID **/
@NotNull(message = "人员ID不能为空")
@Min(value = 1, message = "人员ID有误")
private Long personId;
// @NotNull(message = "单位ID不能为空")
/** 单位ID **/
@NotNull(message = "单位ID不能为空")
@Min(value = 1, message = "单位ID有误")
private Long ouId;
// @NotNull(message = "租户ID不能为空")
/** 租户ID **/
@NotNull(message = "租户ID不能为空")
@Min(value = 1, message = "租户ID有误")
private Long workspaceId;
}

View File

@ -1194,6 +1194,7 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
List<SaasPgroupPermissionRelation> saasPgroupPermissionRelations = saasPgroupPermissionRelationDao.lambdaQuery()
.in(SaasPgroupPermissionRelation::getGroupId, Lists.transform(saasPgroupRoleRelations, SaasPgroupRoleRelation::getGroupId))
.eq(SaasPgroupPermissionRelation::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.eq(Objects.nonNull(param.getType()), SaasPgroupPermissionRelation::getType, param.getType())
.list();
if (CollectionUtils.isEmpty(saasPgroupPermissionRelations)) {
return Collections.emptyMap();

View File

@ -10,13 +10,18 @@ import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
import cn.axzo.tyr.client.model.req.*;
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
import cn.axzo.tyr.client.model.res.PageElementResp;
import cn.axzo.tyr.client.model.res.SaasPermissionRelationRes;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO;
import cn.axzo.tyr.client.model.roleuser.req.ListRoleUserRelationParam;
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
import cn.axzo.tyr.server.service.SaasPageElementService;
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -53,6 +58,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
private final SaasPageElementDao saasPageElementDao;
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
private final SaasFeatureResourceDao saasFeatureResourceDao;
private final SaasRoleUserRelationService saasRoleUserRelationService;
@Qualifier("asyncExecutor")
@Autowired
@ -175,8 +181,21 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
return null;
}
// TODO 过滤用户有权限的featureIds
List<Long> hasPermissionFeatureIds = saasFeatureResources.stream().map(BaseEntity::getId).collect(Collectors.toList());
// 过滤用户有权限的featureIds
List<SaasRoleUserV2DTO> saasRoleUsers = saasRoleUserRelationService.listV2(ListRoleUserRelationParam.builder()
.personId(request.getPersonId())
.workspaceOuPairs(Lists.newArrayList(ListRoleUserRelationParam.WorkspaceOuPair.builder().ouId(request.getOuId()).workspaceId(request.getWorkspaceId()).build()))
.needRole(Boolean.TRUE)
.needPermissionRelation(Boolean.TRUE)
.type(SaasPgroupPermissionRelation.NEW_FEATURE)
.featureIds(saasFeatureResources.stream().map(BaseEntity::getId).collect(Collectors.toList()))
.terminal(request.getTerminal())
.build());
List<Long> hasPermissionFeatureIds = CollectionUtils.emptyIfNull(saasRoleUsers).stream()
.filter(e -> Objects.nonNull(e.getSaasRole()) && CollectionUtils.isNotEmpty(e.getSaasRole().getPermissionRelations()))
.flatMap(e -> e.getSaasRole().getPermissionRelations().stream().map(SaasPermissionRelationRes::getFeatureId))
.distinct().collect(Collectors.toList());
log.info("getUserHasPermissionPageElement pageElementCode:{}, hasPermissionFeatureIds:{}", request.getPageElementCode(), hasPermissionFeatureIds);
if (CollectionUtils.isEmpty(hasPermissionFeatureIds)) {
log.warn("不存在有权限的组件,页面元素编码:{}", request.getPageElementCode());