Files
shanxia2.0/backend/app/api/pl/menu_badges.py
T
2026-07-05 21:31:07 +08:00

33 lines
1.2 KiB
Python

"""运输管理 - 侧栏菜单角标"""
from typing import Optional
from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.core.db_auth import DbUserContext, get_db_current_user
from app.core.tenant_context import get_tenant_no
from app.schemas.pl.menu_badge import PlMenuBadgeStatsRead
from app.services.pl_menu_badge_service import build_menu_badge_counts
router = APIRouter(prefix="/menu-badges", tags=["运输计划-菜单角标"])
@router.get("/stats", response_model=PlMenuBadgeStatsRead)
def menu_badge_stats(
codes: Optional[str] = Query(default=None, description="逗号分隔的 menuCode,不传则返回全部 PL 角标"),
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> PlMenuBadgeStatsRead:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
menu_codes = [c.strip() for c in (codes or "").split(",") if c.strip()] or None
counts = build_menu_badge_counts(
db,
tenant_no=tenant_no,
user=user,
user_id=user.id,
menu_codes=menu_codes,
)
db.commit()
return PlMenuBadgeStatsRead(counts=counts)