Procházet zdrojové kódy

fix: _transform_external_menus 移到模块级避免顺序问题

alphah před 2 týdny
rodič
revize
f17f7287d2
1 změnil soubory, kde provedl 14 přidání a 17 odebrání
  1. 14 17
      backend/app/api/v1/module_system/menu/service.py

+ 14 - 17
backend/app/api/v1/module_system/menu/service.py

@@ -19,6 +19,19 @@ from .schema import (
     MenuUpdateSchema,
 )
 
+def _transform_external_menus(items: list[dict]) -> None:
+    """递归转换外链菜单的路由和组件路径"""
+    for item in items:
+        if item.get("type") == 4:
+            original_url = item.get("route_path", "")
+            route_name = item.get("route_name") or "external"
+            item["route_path"] = f"/{route_name}"
+            item["component_path"] = "module_system/menu/ExternalLink"
+            # 把原始 URL 存入 params,供 ExternalLink 组件读取
+            item["params"] = [{"key": "url", "value": original_url}]
+        if item.get("children"):
+            _transform_external_menus(item["children"])
+
 
 class MenuService:
     """
@@ -99,25 +112,9 @@ class MenuService:
         # 使用traversal_to_tree构建树形结构
         tree = traversal_to_tree(menu_dict_list)
         # 对外链菜单(type=4)转换路由数据
-        MenuService._transform_external_menus(tree)
+        _transform_external_menus(tree)
         return tree
 
-
-
-        @staticmethod
-        def _transform_external_menus(items: list[dict]) -> None:
-            """递归转换外链菜单的路由和组件路径"""
-            for item in items:
-                if item.get("type") == 4:
-                    original_url = item.get("route_path", "")
-                    route_name = item.get("route_name") or "external"
-                    item["route_path"] = f"/{route_name}"
-                    item["component_path"] = "module_system/menu/ExternalLink"
-                    # 把原始 URL 存入 params,供 ExternalLink 组件读取
-                    item["params"] = [{"key": "url", "value": original_url}]
-                if item.get("children"):
-                    MenuService._transform_external_menus(item["children"])
-
     @classmethod
     async def create_menu_service(cls, auth: AuthSchema, data: MenuCreateSchema) -> dict:
         """