"""运输管理 - 侧栏菜单角标""" 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)