Bladeren bron

250521-2代码。

baoyubo 3 maanden geleden
bovenliggende
commit
e6ca0cf774
1 gewijzigde bestanden met toevoegingen van 78 en 28 verwijderingen
  1. 78 28
      routers/api/layerConfiguration/__init__.py

+ 78 - 28
routers/api/layerConfiguration/__init__.py

@@ -60,11 +60,54 @@ class Router_frame(BaseModel):
 
 
 
-
+def get_video_routers(db:Session):
+    from utils.video_util import tag_get_video_tag_list
+    query = db.query(SysDictData)
+    query = query.filter(SysDictData.dict_type == 'video_type')
+    query = query.filter(SysDictData.del_flag != '2')
+    query = query.order_by(SysDictData.dict_sort)
+    # dict_data = db.query(SysDictData).filter_by(dict_type==dict_type and del_flag != '2').all()
+    dict_data = query.all()
+    # 将模型转换为字典
+    dict_data_list = [{
+                    "component": '4',
+                    "isVideo":False,
+                    "hidden": True,
+                    "name": '4',
+                    "path": '2',
+                    # "redirect":'noRedirect',
+                    # "alwaysShow":True,
+                    "meta": {
+                        "title": '附近视频',
+                        'icon': 'icon6',
+                        'noCache': False,
+
+                    }
+                }]
+    for d in dict_data:
+        li = tag_get_video_tag_list(db, d.dict_value)
+        if len(li) > 0:
+            dict_data_list.append({
+                    "component": d.dict_value or 'Layout',
+                    "isVideo":True,
+                    "hidden": True,
+                    "name": d.dict_value,
+                    "path": '2',
+                    # "redirect":'noRedirect',
+                    # "alwaysShow":True,
+                    "meta": {
+                        "title": d.dict_label,
+                        'icon': 'icon6',
+                        'noCache': False,
+
+                    }
+                })
+    return dict_data_list
 
 @router.get('/getRouters')
 async def getRouters(request: Request, db: Session = Depends(get_db),
     body = Depends(remove_xss_json),
+    ZT: str =  Query(None, max_length=100),
     user_id = Depends(valid_access_token)):
     try:
         # 查询数据库中的所有菜单项,根据 parent_id 排序以构建树形结构
@@ -72,6 +115,8 @@ async def getRouters(request: Request, db: Session = Depends(get_db),
         query = query.filter_by(parent_id=0)
         query = query.filter(SysMenuLayer.del_flag != '2')
         query = query.filter(SysMenuLayer.status != '1')
+        if ZT:
+            query = query.filter(SysMenuLayer.layer_template.like(f"%;{ZT};%"))
         query = query.order_by(SysMenuLayer.order_num)
 
         menus =query.all()  # 顶级菜单
@@ -109,10 +154,16 @@ async def getRouters(request: Request, db: Session = Depends(get_db),
                     )
                 # 如果菜单有子菜单,则递归构建子菜单
                 if menu.menu_type == 'D' or menu.menu_type == 'Z':  # 假设 'M' 表示目录类型
+                    if menu.menu_id==11684:
+                        menu_data.children = get_video_routers(db)
+                        menu_tree.append(menu_data)
+                        continue
                     query = db.query(SysMenuLayer)
                     query = query.filter_by(parent_id=menu.menu_id)
                     query = query.filter(SysMenuLayer.del_flag != '2')
                     query = query.filter(SysMenuLayer.status != '1')
+                    if ZT:
+                         query = query.filter(SysMenuLayer.layer_template.like(f"%;{ZT};%"))
                     query = query.order_by(SysMenuLayer.order_num)
                     # children_menus = db.query(SysMenu).filter_by(parent_id=menu.menu_id).all()
                     children_menus = query.all()
@@ -132,11 +183,12 @@ async def getRouters(request: Request, db: Session = Depends(get_db),
         for router in routers:
             router_info = router.dict()
             print(router_info)
-            if len(router_info['children'])==0:
-                del router_info['children']
-                del router_info['redirect']
-                del router_info['alwaysShow']
-                router_info['path'] = router_info['path'][1:]
+            if 'children' in router_info:
+                if len(router_info['children'])==0:
+                    del router_info['children']
+                    del router_info['redirect']
+                    del router_info['alwaysShow']
+                    router_info['path'] = router_info['path'][1:]
 
             routers_dict.append(router_info)
         # 返回构建好的路由数据
@@ -157,6 +209,7 @@ async def get_list(
     # request: Request,
     menuName: str = Query(None, max_length=100),
     status: str =  Query(None, max_length=100),
+    ZT: str =  Query(None, max_length=100),
     db: Session = Depends(get_db),
     body = Depends(remove_xss_json),
     user_id = Depends(valid_access_token)
@@ -165,9 +218,10 @@ async def get_list(
     query = query.filter(SysMenuLayer.del_flag != '2')
     if menuName:
         query = query.filter(SysMenuLayer.menu_name.like(f'%{menuName}%'))
-        query = query.filter(SysMenuLayer.menu_type=='T')
     if status:
         query = query.filter(SysMenuLayer.status==status)
+    if ZT:
+        query = query.filter(SysMenuLayer.layer_template.like(f"%;{ZT};%"))
     query = query.order_by(SysMenuLayer.order_num)
     # 应用查询
     # menu_list = db.query(SysMenu).filter(
@@ -175,34 +229,29 @@ async def get_list(
     #     (SysMenu.status.like(f'%{status}%'))
     # ).all()
     menu_list = query.all()
-    def menu_parent_life(menu_id):
-        query = db.query(SysMenuLayer)
-        query = query.filter(SysMenuLayer.menu_id==menu_id)
-        data = query.filter(SysMenuLayer.del_flag != '2').first()
-        if data is None:
-            return False
-        if data.parent_id==0 or data.parent_id=='0':
-            return True
-        else:
-            return menu_parent_life(data.parent_id)
     # 将模型实例转换为字典
-    menu_list_dict = []
-    for menu in menu_list:
-        if menu_parent_life(menu.menu_id):
-            menu_list_dict.append({
+    menu_list_dict = [{
             "menuId": menu.menu_id,
             "menuName": menu.menu_name,
             "parentId": menu.parent_id,
             "orderNum": menu.order_num,
             "path": menu.path,
             "component": menu.component,
+            # "queryParam": menu.query_param,
+            # "isFrame": str(menu.is_frame),
+            # "isCache": str(menu.is_cache),
             "menuType": menu.menu_type,
+            # "layerVisible": menu.layer_visible,
             "status": menu.status,
+            # "perms": menu.perms,
             "icon": menu.icon,
+            # "createDept": menu.create_dept,
             "remark": menu.remark,
             "createTime": menu.create_time.strftime('%Y-%m-%d %H:%M:%S') if menu.create_time else '',
-            "children": []  # 递归调用以获取子菜单
-            })
+            "children": [] , # 递归调用以获取子菜单
+            "ZT":[i for i in menu.layer_template.split(';') if i != '']  if menu.layer_template else []
+        } for menu in menu_list]
+
 
 
     return {
@@ -247,7 +296,7 @@ async def get_list(
             "remark": menu.remark,
             "createTime": menu.create_time.strftime('%Y-%m-%d %H:%M:%S') if menu.create_time else '',
             "children": [],  # 递归调用以获取子菜单
-            # "layer_template":menu.layer_template
+            "ZT":[i for i in menu.layer_template.split(';') if i != '']  if menu.layer_template else []
         }
 
     return {
@@ -271,7 +320,7 @@ async def create(
         # 开始事务
         # db.begin()
 
-
+        layer_template = ';'+';'.join(body['ZT'])+';'
         # 创建新的菜单层,此时还不能使用new_menu.menu_id,因为它还没有被赋值
         new_menu_layer = SysMenuLayer(
             menu_name=body['menuName'],
@@ -288,7 +337,7 @@ async def create(
             # perms=body['perms'],
             # query_param=body['queryParam'],
             create_by=user_id,
-            # layer_template=body['layer_template']
+            layer_template=layer_template
         )
         db.add(new_menu_layer)
 
@@ -361,8 +410,9 @@ async def update(
             menu.status = body['status']
         # if 'layer_visible' in body:
         #     menu.layer_visible = body['layerVisible']
-        # if 'layer_template' in body:
-        #     menu.layer_template = body['layer_template']
+        if 'ZT' in body:
+            layer_template = ';' + ';'.join(body['ZT']) + ';'
+            menu.layer_template = layer_template
         
         menu.update_by = user_id
         menu.update_time = datetime.now()