feat(REQ-2545): 菜单详情接口增加返回组件的绑定信息

This commit is contained in:
李昆鹏 2024-07-10 09:42:41 +08:00
parent a65a81e84b
commit 89d0d040fc
4 changed files with 29 additions and 13 deletions

View File

@ -21,6 +21,11 @@ public class PageElementBasicDTO {
*/
private Long id;
/**
* 组件编码
*/
private String uniCode;
/**
* 页面元素编码
*/

View File

@ -5,7 +5,6 @@ import cn.axzo.tyr.client.model.req.*;
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
import cn.axzo.tyr.client.model.res.PageElementResp;
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
import java.util.List;
@ -34,11 +33,11 @@ public interface SaasPageElementService {
/**
* 通过组件code查询页面元素
*
* @param terminal 组件所属端
* @param featureResourceUniCode 组件code
* @param terminal 组件所属端
* @param featureResourceUniCodes 组件code
* @return
*/
List<PageElementBasicDTO> getByTerminalAndUniCode(String terminal, String featureResourceUniCode);
List<PageElementBasicDTO> getByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes);
/**
* 新增页面组件与页面元素关系

View File

@ -195,7 +195,9 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
.sorted(Comparator.comparing(FeatureResourceDTO::getDisplayOrder))
.collect(Collectors.toList()));
FeatureResourceTreeNode featureResourceTreeNode = treeList.get(0);
fillPageElement2PageFeatureResource(featureResourceTreeNode);
List<String> allUniCodes = descendants.stream().map(SaasFeatureResource::getUniCode).filter(StringUtils::isNotBlank).collect(Collectors.toList());
fillPageElement2PageFeatureResource(treeList, allUniCodes);
return featureResourceTreeNode;
}
@ -574,12 +576,11 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
return parent.getPath();
}
private void fillPageElement2PageFeatureResource(FeatureResourceTreeNode featureResourceTreeNode) {
if (!FeatureResourceType.PAGE.getCode().equals(featureResourceTreeNode.getFeatureType())) {
return;
}
List<PageElementBasicDTO> saasPageElements = saasPageElementService.getByTerminalAndUniCode(featureResourceTreeNode.getTerminal(), featureResourceTreeNode.getUniCode());
featureResourceTreeNode.setPageElements(saasPageElements);
private void fillPageElement2PageFeatureResource(List<FeatureResourceTreeNode> featureResourceTreeNodes, List<String> allUniCodes) {
Map<String, List<PageElementBasicDTO>> uniCodeElementsMap = saasPageElementService.getByTerminalAndUniCodes(featureResourceTreeNodes.get(0).getTerminal(), allUniCodes)
.stream().collect(Collectors.groupingBy(PageElementBasicDTO::getUniCode));
recursiveSetPageElement(featureResourceTreeNodes, uniCodeElementsMap);
}
@Override
@ -637,4 +638,14 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
}
return true;
}
private void recursiveSetPageElement(List<FeatureResourceTreeNode> featureResourceTreeNodes, Map<String, List<PageElementBasicDTO>> uniCodeElementsMap) {
if (org.apache.commons.collections4.CollectionUtils.isEmpty(featureResourceTreeNodes)) {
return;
}
featureResourceTreeNodes.forEach(e -> {
e.setPageElements(uniCodeElementsMap.get(e.getUniCode()));
recursiveSetPageElement(e.getChildren(), uniCodeElementsMap);
});
}
}

View File

@ -115,8 +115,8 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
}
@Override
public List<PageElementBasicDTO> getByTerminalAndUniCode(String terminal, String featureResourceUniCode) {
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(Lists.newArrayList(featureResourceUniCode), terminal, null);
public List<PageElementBasicDTO> getByTerminalAndUniCodes(String terminal, List<String> featureResourceUniCodes) {
List<SaasPageElementFeatureResourceRelation> relations = saasPageElementFeatureResourceRelationDao.listByUniCodeAndTerminal(featureResourceUniCodes, terminal, null);
if (CollectionUtils.isEmpty(relations)) {
return Collections.emptyList();
}
@ -130,6 +130,7 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
}
return PageElementBasicDTO.builder()
.id(pageElement.getId())
.uniCode(e.getFeatureResourceUniCode())
.code(pageElement.getCode())
.name(pageElement.getName())
.relationType(e.getType())