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