From 70b25718260b43f397291adca26ca8b45ceb0ab4 Mon Sep 17 00:00:00 2001
From: houzhongjian <houzhongyi@126.com>
Date: 星期四, 10 四月 2025 09:49:52 +0800
Subject: [PATCH] 1、移除wx、aliyun等第三方工具类 2、移除sms消息功能 3、移除iailab-framework框架依赖,将其单独提取出来 4、网关增加ansteel和shangangrizhao

---
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
index 446a341..a14b65d 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
@@ -2,8 +2,6 @@
 
 import cn.hutool.core.collection.CollUtil;
 import com.iailab.framework.common.util.object.BeanUtils;
-import com.iailab.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
-import com.iailab.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
 import com.iailab.module.system.api.social.dto.SocialUserBindReqDTO;
 import com.iailab.module.system.controller.admin.auth.vo.*;
 import com.iailab.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
@@ -161,20 +159,62 @@
                 parentNode.setChildren(new ArrayList<>());
             }
             parentNode.getChildren().add(childNode);
-
         });
         // 获得到所有的根节点
         List<AuthPermissionInfoRespVO.MenuVO> menuVOS = filterList(treeNodeMap.values(), node -> id.equals(node.getParentId()));
         menuVOS.stream().forEach(menuVO -> {
-            menuVO.setPath(parentPath + "/" + menuVO.getPath());
+            menuVO.setPath((parentPath + "/" + menuVO.getPath()).replace("//", "/"));
         });
         return menuVOS;
     }
 
+    /**
+     * 将菜单列表,构建成菜单树
+     *
+     * @param menuList 菜单列表
+     * @return 菜单树
+     */
+    default List<AuthPermissionInfoRespVO.MenuVO> buildMenuTree(List<MenuDO> menuList, Long id, String parentPath, Integer type) {
+        if (CollUtil.isEmpty(menuList)) {
+            return Collections.emptyList();
+        }
+        // 移除按钮
+        menuList.removeIf(menu -> menu.getType().equals(MenuTypeEnum.BUTTON.getType()));
+        // 排序,保证菜单的有序性
+        menuList.sort(Comparator.comparing(MenuDO::getSort));
+
+        // 构建菜单树
+        // 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。
+        Map<Long, AuthPermissionInfoRespVO.MenuVO> treeNodeMap = new LinkedHashMap<>();
+        menuList.forEach(menu -> treeNodeMap.put(menu.getId(), AuthConvert.INSTANCE.convertTreeNode(menu)));
+        // 处理父子关系
+        treeNodeMap.values().stream().filter(node -> !node.getParentId().equals(id)).forEach(childNode -> {
+            // 获得父节点
+            AuthPermissionInfoRespVO.MenuVO parentNode = treeNodeMap.get(childNode.getParentId());
+            if (parentNode == null) {
+                LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]",
+                        childNode.getId(), childNode.getParentId());
+                return;
+            }
+            // 将自己添加到父节点中
+            if (parentNode.getChildren() == null) {
+                parentNode.setChildren(new ArrayList<>());
+            }
+            parentNode.getChildren().add(childNode);
+        });
+        // 获得到所有的根节点
+        List<AuthPermissionInfoRespVO.MenuVO> menuVOS = filterList(treeNodeMap.values(), node -> id.equals(node.getParentId()));
+        if(type == 0) {
+            menuVOS.stream().forEach(menuVO -> {
+                // 不处理外链菜单path
+                if(!menuVO.getPath().contains("http:") && !menuVO.getPath().contains("https:")) {
+                    menuVO.setPath((parentPath + "/" + menuVO.getPath()).replace("//", "/"));
+                }
+            });
+        }
+        return menuVOS;
+    }
+
     SocialUserBindReqDTO convert(Long userId, Integer userType, AuthSocialLoginReqVO reqVO);
-
-    SmsCodeSendReqDTO convert(AuthSmsSendReqVO reqVO);
-
-    SmsCodeUseReqDTO convert(AuthSmsLoginReqVO reqVO, Integer scene, String usedIp);
 
 }

--
Gitblit v1.9.3