diff --git a/pom.xml b/pom.xml index c247a1b..baf2955 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,9 @@ yh-platform 高校门户 CMS(管理端 API + Thymeleaf 门户 SSR) 1.8 + + true @@ -120,6 +123,14 @@ org.apache.maven.plugins maven-surefire-plugin + + ${skip.tests} **/*Test.java **/*IT.java diff --git a/src/main/java/com/yunhai/cms/service/impl/CmsUserCenterService.java b/src/main/java/com/yunhai/cms/service/impl/CmsUserCenterService.java index 7f0b914..862ba08 100644 --- a/src/main/java/com/yunhai/cms/service/impl/CmsUserCenterService.java +++ b/src/main/java/com/yunhai/cms/service/impl/CmsUserCenterService.java @@ -12,11 +12,11 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * 用户中心代理(Notice UserCenterService 同款逻辑平移): - * 模块菜单树来自基础平台 SDK(YschBaseOpenApi.getUserModule),扁平转树对齐前端 layout 契约。 + * 模块菜单树来自基础平台 SDK(YschBaseOpenApi.getUserModule),层级由用户中心 {@code BoaModule.children} + * 直接下发,本侧仅映射为前端 layout 契约(modId/page/children)。 */ @Slf4j @Service @@ -40,18 +40,18 @@ public class CmsUserCenterService { if (modules == null || modules.isEmpty()) { return Collections.emptyList(); } - return buildModuleTree(modules); + return toFrontendTree(modules); } /** - * 扁平 BoaModule → 树结构(modId/page/children),对齐前端 layout 期望。 - * 顶层取 parentId=0 或父节点不在列表中的节点,保持 SDK 返回顺序。 + * BoaModule 树 → 前端 layout 期望的字段形状(递归,只改名不组树;Notice/svc-hall 同款口径)。
+ * 层级与兄弟顺序均由用户中心决定(customId 升序),本侧不重排;叶子 children 为空列表。 */ - private List> buildModuleTree(List modules) { - Map moduleMap = modules.stream() - .collect(Collectors.toMap(BoaModule::getId, m -> m, (a, b) -> a)); - - Map> nodeMap = new LinkedHashMap<>(); + private List> toFrontendTree(List modules) { + List> result = new ArrayList<>(); + if (modules == null || modules.isEmpty()) { + return result; + } for (BoaModule m : modules) { Map node = new LinkedHashMap<>(); node.put("id", m.getId()); @@ -63,22 +63,9 @@ public class CmsUserCenterService { node.put("icon", m.getIcon() != null ? m.getIcon() : ""); node.put("orderNumber", m.getSortNo() != null ? m.getSortNo() : 0); node.put("usable", true); - node.put("children", new ArrayList<>()); - nodeMap.put(m.getId(), node); + node.put("children", toFrontendTree(m.getChildren())); + result.add(node); } - - List> roots = new ArrayList<>(); - for (BoaModule m : modules) { - Map node = nodeMap.get(m.getId()); - int parentId = m.getParentId() != null ? m.getParentId() : 0; - if (parentId == 0 || !moduleMap.containsKey(parentId)) { - roots.add(node); - } else { - @SuppressWarnings("unchecked") - List> children = (List>) nodeMap.get(parentId).get("children"); - children.add(node); - } - } - return roots; + return result; } }