feat(REQ-2545): 查询页面元素接口调整,增加非路由页面向下找的逻辑
This commit is contained in:
parent
85b7af5e04
commit
de108e0c68
@ -12,14 +12,21 @@ import lombok.*;
|
||||
* @version 1.0
|
||||
* @date 2024/6/18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("saas_page_element_feature_resource_relation")
|
||||
@TableName(value = "saas_page_element_feature_resource_relation", autoResultMap = true)
|
||||
public class SaasPageElementFeatureResourceRelation extends BaseEntity<SaasPageElementFeatureResourceRelation> {
|
||||
|
||||
|
||||
/**
|
||||
* 绑定类型:0(默认类型) 1(页面默认路由)
|
||||
* @see cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum
|
||||
*/
|
||||
@TableField("type")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@ -32,13 +39,6 @@ public class SaasPageElementFeatureResourceRelation extends BaseEntity<SaasPageE
|
||||
@TableField("update_by")
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 绑定类型:0(默认类型) 1(页面默认路由)
|
||||
* @see cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum
|
||||
*/
|
||||
@TableField("type")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 页面元素code
|
||||
*/
|
||||
|
||||
@ -191,22 +191,28 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
log.warn("绑定关系不存在,页面元素编码:{}", request.getPageElementCode());
|
||||
return null;
|
||||
}
|
||||
|
||||
List<SaasPageElementFeatureResourceRelation> resultRelations = Lists.newArrayList(relations);
|
||||
// 路由页面向下找,非路由页面向上找。
|
||||
List<SaasPageElementFeatureResourceRelation> pageRouteRelations = relations.stream().filter(relation -> PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE.getValue().equals(relation.getType())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(pageRouteRelations)) {
|
||||
if (CollectionUtils.isNotEmpty(pageRouteRelations)) {
|
||||
// 查询默认路由页面及页面下组件的绑定关系
|
||||
List<SaasFeatureResource> saasFeatureResources = listDescendantByUniCodeAndTerminal(request.getTerminal(), pageRouteRelations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toList()));
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||
return null;
|
||||
}
|
||||
List<SaasPageElementFeatureResourceRelation> resourceRelations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(saasFeatureResources.stream().map(SaasFeatureResource::getUniCode).collect(Collectors.toList()), request.getTerminal(), null);
|
||||
if (CollectionUtils.isNotEmpty(resourceRelations)) {
|
||||
// 这里会存在重复的数据,下面在过滤转为Set的时候做了去重
|
||||
resultRelations.addAll(resourceRelations);
|
||||
}
|
||||
} else {
|
||||
log.warn("页面路由的绑定关系不存在,页面元素编码:{}", request.getPageElementCode());
|
||||
return null;
|
||||
}
|
||||
// 查询页面的所有元素
|
||||
List<String> pageElementCodes = saasPageElementDao.listByGroupCodesAndExcludeIds(relations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toList()),null, request.getTerminal(), null)
|
||||
.stream().map(SaasPageElement::getCode).distinct().collect(Collectors.toList());
|
||||
|
||||
// 查询默认路由页面及页面下组件的绑定关系
|
||||
List<SaasFeatureResource> saasFeatureResources = listDescendantByUniCodeAndTerminal(request.getTerminal(), pageRouteRelations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toList()));
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||
return null;
|
||||
}
|
||||
List<SaasPageElementFeatureResourceRelation> resourceRelations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(saasFeatureResources.stream().map(SaasFeatureResource::getUniCode).collect(Collectors.toList()), request.getTerminal(), null);
|
||||
if (CollectionUtils.isNotEmpty(resourceRelations)) {
|
||||
// 这里会存在重复的数据,下面在过滤转为Set的时候做了去重
|
||||
relations.addAll(resourceRelations);
|
||||
resultRelations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(relations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toList()), request.getTerminal(), null)
|
||||
.stream().filter(e -> pageElementCodes.contains(e.getPageElementCode())).distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 过滤用户有权限的featureCodes
|
||||
@ -214,7 +220,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
.personId(request.getPersonId())
|
||||
.workspaceOusPairs(Lists.newArrayList(IdentityAuthReq.WorkspaceOuPair.builder().ouId(request.getOuId()).workspaceId(request.getWorkspaceId()).build()))
|
||||
.terminal(Lists.newArrayList(request.getTerminal()))
|
||||
.featureCode(relations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toSet()))
|
||||
.featureCode(resultRelations.stream().map(SaasPageElementFeatureResourceRelation::getPageElementCode).collect(Collectors.toSet()))
|
||||
.type(SaasPgroupPermissionRelation.NEW_FEATURE)
|
||||
.build());
|
||||
if (Objects.isNull(res) || CollectionUtils.isEmpty(res.getPermissions())) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user