fix(pl): 将证书齐备改为独立菜单权限,避免取消授权后仍随计划段次用证显示。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-11-06 17:39:18 +08:00
1 parent 421332cad4
commit 13ed7f5be0
8 files changed
+129 -7

No files matched your search

+6 -1
View File
@@ -14,10 +14,15 @@ from app.api.pl.vehicle_fuel_card import router as vehicle_fuel_card_router
from app.api.pl.dispatch_calendar import router as dispatch_calendar_router
from app.api.pl.site_dispatch_calendar import router as site_dispatch_calendar_router
from app.api.wechat_notices import router as wechat_notices_router
from app.api.pl.quota_cert import router as quota_cert_router, legal_router as legal_use_document_router
from app.api.pl.quota_cert import (
router as quota_cert_router,
legal_router as legal_use_document_router,
cert_ready_router,
)
__all__ = [
"quota_cert_router",
"cert_ready_router",
"legal_use_document_router",
"wechat_notices_router",
"public_router",
+23 -3
View File
@@ -11,7 +11,7 @@ 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.menu_guard import require_menu_code
from app.core.menu_guard import get_user_menu_codes, require_admin_or_super_admin, require_menu_code
from app.core.oper_log_decorator import oper_log
from app.core.tenant_context import get_tenant_no
from app.schemas.pl.quota_cert import InputBody, CertConfirmBody, CertVerifyBody, CertTotalAdjustBody
@@ -36,6 +36,26 @@ router = APIRouter(prefix='/transport/quota-certs', tags=['购买证与运输证
dependencies=[Depends(require_menu_code('pl:quota-cert:list'))])
legal_router = APIRouter(prefix='/transport/legal-use-documents', tags=['合法使用证明'],
dependencies=[Depends(require_menu_code('pl:legal-use-document:list'))])
def _require_cert_ready_menu(
current_user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
"""证书齐备页面权限。小程序运输证件仍走原入口,不要求单独的 Web 菜单。"""
if current_user.get("role") == "super_admin":
return current_user
codes = get_user_menu_codes(db, current_user.get("user_id"))
if "pl:cert-ready:list" in codes or "mini:pl:plan-cert:list" in codes:
return current_user
raise HTTPException(status_code=403, detail="无菜单访问权限")
cert_ready_router = APIRouter(
prefix='/transport/quota-certs',
tags=['证书齐备'],
dependencies=[Depends(_require_cert_ready_menu)],
)
CertType = Literal['purchase', 'transport']
@@ -86,7 +106,7 @@ def plan_overview(keyword: str = '', status: Optional[str] = None,
conversion_only=conversion_only))
@router.get('/plans/cert-ready')
@cert_ready_router.get('/plans/cert-ready')
def list_cert_ready(keyword: str = '', waived: Optional[str] = Query(None, max_length=1),
plan_no: Optional[str] = Query(None, alias='planNo', max_length=200),
license_plate: Optional[str] = Query(None, alias='licensePlate', max_length=100),
@@ -111,7 +131,7 @@ def list_cert_ready(keyword: str = '', waived: Optional[str] = Query(None, max_l
waived_time_to=waived_time_to))
@router.post('/plans/{plan_id}/cert-ready')
@cert_ready_router.post('/plans/{plan_id}/cert-ready')
def mark_cert_ready(plan_id: str, db: Session = Depends(get_db), user: DbUserContext = Depends(current_user)):
from app.services.pl_quota_waiver import mark_ready
return _write(db, lambda: mark_ready(db, user, plan_id))