| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from fastapi import APIRouter, Depends, Query
- from sqlalchemy.ext.asyncio import AsyncSession
- from app.database import get_db
- from app.services.monitoring import get_dashboard, get_consumption_details, get_daily_stats
- router = APIRouter(prefix="/api/public/monitoring", tags=["监控大屏"])
- @router.get("/dashboard")
- async def get_monitoring_dashboard(
- db: AsyncSession = Depends(get_db),
- start_date: str | None = Query(None, description="查询开始日期,格式 YYYY-MM-DD,不传则查全部"),
- end_date: str | None = Query(None, description="查询结束日期,格式 YYYY-MM-DD,不传则查全部"),
- super_admin_id: int | None = Query(None, description="指定某个超级管理员ID,不传则查全部"),
- super_admin_name: str | None = Query(None, description="按超级管理员名称模糊匹配,不传则查全部"),
- ):
- """
- 获取监控大屏数据
- 层级结构:平台 → 超级管理员 → 租户 → 用户
- """
- return await get_dashboard(
- db,
- start_date=start_date,
- end_date=end_date,
- super_admin_id=super_admin_id,
- super_admin_name=super_admin_name,
- )
- @router.get("/consumption-details")
- async def list_consumption_details(
- db: AsyncSession = Depends(get_db),
- start_date: str | None = Query(None, description="查询开始日期,格式 YYYY-MM-DD"),
- end_date: str | None = Query(None, description="查询结束日期,格式 YYYY-MM-DD"),
- super_admin_name: str | None = Query(None, description="按超级管理员名称筛选"),
- tenant_name: str | None = Query(None, description="按租户名称筛选"),
- ):
- """
- 获取原始消费明细列表(每条记录一行,不聚合)
- 用于对账场景
- """
- return await get_consumption_details(
- db,
- start_date=start_date,
- end_date=end_date,
- super_admin_name=super_admin_name,
- tenant_name=tenant_name,
- )
- @router.get("/daily-stats")
- async def get_daily_consumption_stats(
- db: AsyncSession = Depends(get_db),
- start_date: str = Query(..., description="开始日期,格式 YYYY-MM-DD"),
- end_date: str = Query(..., description="结束日期,格式 YYYY-MM-DD"),
- super_admin_name: str | None = Query(None, description="按超级管理员名称筛选"),
- tenant_name: str | None = Query(None, description="按租户名称筛选"),
- ):
- """
- 获取按日聚合的消费统计
- 当筛选了日期范围时,展示每日的消费汇总(超级管理员 → 租户 → 每日金额)
- """
- return await get_daily_stats(
- db,
- start_date=start_date,
- end_date=end_date,
- super_admin_name=super_admin_name,
- tenant_name=tenant_name,
- )
|