feat(REQ-2545): 查询页面元素接口调整,增加非路由页面向下找的逻辑

This commit is contained in:
李昆鹏 2024-07-05 08:54:45 +08:00
parent 85b7af5e04
commit de108e0c68
2 changed files with 32 additions and 26 deletions

View File

@ -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
*/

View File

@ -191,13 +191,10 @@ 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)) {
log.warn("页面路由的绑定关系不存在,页面元素编码:{}", request.getPageElementCode());
return null;
}
if (CollectionUtils.isNotEmpty(pageRouteRelations)) {
// 查询默认路由页面及页面下组件的绑定关系
List<SaasFeatureResource> saasFeatureResources = listDescendantByUniCodeAndTerminal(request.getTerminal(), pageRouteRelations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toList()));
if (CollectionUtils.isEmpty(saasFeatureResources)) {
@ -206,7 +203,16 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
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.addAll(resourceRelations);
}
} else {
log.warn("页面路由的绑定关系不存在,页面元素编码:{}", request.getPageElementCode());
// 查询页面的所有元素
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());
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())) {