Files
shanxia2.0/backend/app/api/menu.py
T
2026-05-12 22:07:53 +08:00

108 lines
3.7 KiB
Python

"""运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,供后端菜单模式联调)"""
from fastapi import APIRouter, Depends
from app.core.menu_guard import require_admin_or_super_admin
from app.core.response import success_response
router = APIRouter(prefix="/web/menu", tags=["菜单管理"])
# 与 web-admin/src/router/modules/sqxp.ts 一致:「Demo」参考页 +「系统管理」
STATIC_MENU_TREE = [
{
"id": "10000000000000000000000000000002",
"name": "Demo",
"path": "/demo",
"component": "/index/index",
"meta": {
"title": "Demo",
"icon": "ri:layout-grid-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "10000000000000000000000000000001_child",
"name": "Console",
"path": "console",
"component": "/dashboard/console/index",
"meta": {
"title": "工作台",
"icon": "ri:home-smile-2-line",
"keepAlive": True,
"fixedTab": True,
"menuCode": "dashboard",
},
},
{
"id": "10000000000000000000000000000005",
"name": "Unit",
"path": "unit",
"component": "/system/unit/index",
"meta": {"title": "商品单位", "keepAlive": True},
},
{
"id": "10000000000000000000000000000021",
"name": "OrderList",
"path": "order",
"component": "/system/order/index",
"meta": {"title": "订单列表", "keepAlive": True},
},
{
"id": "10000000000000000000000000000006",
"name": "Product",
"path": "product",
"component": "/system/product/index",
"meta": {"title": "商品管理", "keepAlive": True},
},
{
"id": "10000000000000000000000000000004",
"name": "Category",
"path": "category",
"component": "/system/category/index",
"meta": {"title": "商品分类", "keepAlive": True},
},
{
"id": "10000000000000000000000000000007",
"name": "User",
"path": "user",
"component": "/system/user/index",
"meta": {"title": "用户管理", "keepAlive": True},
},
{
"id": "10000000000000000000000000000008",
"name": "UserDetail",
"path": "user/detail",
"component": "/system/user/detail",
"meta": {"title": "用户详情", "isHide": True, "keepAlive": True},
},
],
},
{
"id": "20000000000000000000000000000001",
"name": "System",
"path": "/system",
"component": "/index/index",
"meta": {
"title": "系统管理",
"icon": "ri:settings-3-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "20000000000000000000000000000002",
"name": "Tenant",
"path": "tenant",
"component": "/system/tenant/index",
"meta": {"title": "租户管理", "keepAlive": True},
},
],
},
]
@router.get("/list")
async def get_menu_list(_user: dict = Depends(require_admin_or_super_admin)):
"""获取菜单列表(与当前前端路由一致)"""
return success_response({"menuList": STATIC_MENU_TREE})