|
@@ -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()
|