33 lines
1.2 KiB
Python
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)
|