xuguoyang 7 月之前
父節點
當前提交
296c7b06c5
共有 2 個文件被更改,包括 97 次插入1 次删除
  1. 27 0
      models/ry_sys_base.py
  2. 70 1
      routers/prod_api/system/menu/__init__.py

+ 27 - 0
models/ry_sys_base.py

@@ -285,7 +285,34 @@ class SysUserPost(Base):
 
 
 
+'''菜单权限表'''
+class SysMenuLayer(Base):
+    __tablename__ = 'sys_menu_layer'
 
+    menu_id = Column(BigInteger, primary_key=True,autoincrement=True, comment='菜单ID')
+    menu_name = Column(String(50), nullable=False, comment='菜单名称')
+    parent_id = Column(BigInteger, default=0, comment='父菜单ID')
+    order_num = Column(Integer, default=0, comment='显示顺序')
+    path = Column(String(200), default='', comment='路由地址')
+    component = Column(String(255), default=None, comment='组件路径')
+    query_param = Column(String(255), default=None, comment='路由参数')
+    is_frame = Column(Integer, default=1, comment='是否为外链(0是 1否)')
+    is_cache = Column(Integer, default=0, comment='是否缓存(0缓存 1不缓存)')
+    menu_type = Column(String(1), default='', comment='菜单类型(M目录 C菜单 F按钮)')
+    visible = Column(String(1), default='0', comment='显示状态(0显示 1隐藏)')
+    status = Column(String(1), default='0', comment='菜单状态(0正常 1停用)')
+    perms = Column(String(100), default=None, comment='权限标识')
+    icon = Column(String(100), default='#', comment='菜单图标')
+    create_dept = Column(BigInteger, default=None, comment='创建部门')
+    create_by = Column(BigInteger, default=None, comment='创建者')
+    create_time = Column(DateTime, default=datetime.now, comment='创建时间')
+    update_by = Column(BigInteger, default=None, comment='更新者')
+    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
+    remark = Column(String(500), default='', comment='备注')
+    del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
+
+    class Config:
+        orm_mode = True
 
 
 

+ 70 - 1
routers/prod_api/system/menu/__init__.py

@@ -533,4 +533,73 @@ async def delete(
         db.rollback()
         if str(e)=='':
             e = detail
-        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e))
+        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e))
+
+
+@router.get('/layer_list')
+async def get_list(
+    # request: Request,
+    menuName: str = Query(None, max_length=100),
+    status: str =  Query(None, max_length=100),
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    query = db.query(SysMenuLayer)
+    query = query.filter(SysMenuLayer   .del_flag != '2')
+    if menuName:
+        query = query.filter(SysMenuLayer.menu_name.like(f'%{menuName}%'))
+    if status:
+        query = query.filter(SysMenuLayer.status.like(f'%{status}%'))
+    # 应用查询
+    # menu_list = db.query(SysMenu).filter(
+    #     (SysMenu.menu_name.like(f'%{menu_name}%')) ,
+    #     (SysMenu.status.like(f'%{status}%'))
+    # ).all()
+    menu_list = query.all()
+    # 将模型实例转换为字典
+    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,
+            "visible": menu.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": []  # 递归调用以获取子菜单
+        } for menu in menu_list]
+
+    # 构建分页响应
+    # pagination_info = {
+    #     "total": total_count,
+    #     "page_num": page_num,
+    #     "page_size": page_size,
+    #     "total_pages": (total_count + page_size - 1) // page_size  # 计算总页数
+    # }
+
+    return {
+        "code": 200,
+        "data": menu_list_dict,
+        # 'pages': page_num,  # 总页数
+        # 'currentPage': page_num,  # 当前页数
+        # # 'current':current,
+        # # 'total' : total,
+        # 'total': total_count,  # 总数据量
+        # # 'size':size,
+        # 'pageSize': page_size,  # 页码
+        #        {
+        #     "items": menu_list_dict,
+        #     "pagination": pagination_info
+        # },
+        "msg": "操作成功"
+    }