menu_badges.py 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. """运输管理 - 侧栏菜单角标"""
  2. from typing import Optional
  3. from fastapi import APIRouter, Depends, Query
  4. from sqlalchemy.orm import Session
  5. from app.core.database import get_db
  6. from app.core.db_auth import DbUserContext, get_db_current_user
  7. from app.core.tenant_context import get_tenant_no
  8. from app.schemas.pl.menu_badge import PlMenuBadgeStatsRead
  9. from app.services.pl_menu_badge_service import build_menu_badge_counts
  10. router = APIRouter(prefix="/menu-badges", tags=["运输计划-菜单角标"])
  11. @router.get("/stats", response_model=PlMenuBadgeStatsRead)
  12. def menu_badge_stats(
  13. codes: Optional[str] = Query(default=None, description="逗号分隔的 menuCode,不传则返回全部 PL 角标"),
  14. db: Session = Depends(get_db),
  15. user: DbUserContext = Depends(get_db_current_user),
  16. ) -> PlMenuBadgeStatsRead:
  17. tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
  18. menu_codes = [c.strip() for c in (codes or "").split(",") if c.strip()] or None
  19. counts = build_menu_badge_counts(
  20. db,
  21. tenant_no=tenant_no,
  22. user=user,
  23. user_id=user.id,
  24. menu_codes=menu_codes,
  25. )
  26. db.commit()
  27. return PlMenuBadgeStatsRead(counts=counts)