feat(REQ-2545): 查询页面有权限的组件
This commit is contained in:
parent
4cf7460b50
commit
052899e355
@ -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;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user