Files
shanxia2.0/backend/app/api/pl/vehicle_recharge_approval.py
T

91 lines
3.2 KiB
Python

"""车辆充值审批 API"""
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.vehicle_recharge import (
VehicleRechargeApplyListResponse,
VehicleRechargeApplyRead,
VehicleRechargeOpinionBody,
VehicleRechargeRecordCreate,
)
from app.services import pl_vehicle_recharge_approval_service as approval_svc
approval_router = APIRouter(
prefix="/vehicle-recharge-approval", tags=["运输计划-ETC加油充值审批"]
)
@approval_router.get("/pending", response_model=VehicleRechargeApplyListResponse)
def list_pending(
page: int = Query(default=1, ge=1),
page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> VehicleRechargeApplyListResponse:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
items, total = approval_svc.list_pending(
db, tenant_no, user, page=page, page_size=page_size
)
return VehicleRechargeApplyListResponse(
items=items, total=total, page=page, pageSize=page_size
)
@approval_router.get("/done", response_model=VehicleRechargeApplyListResponse)
def list_done(
page: int = Query(default=1, ge=1),
page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> VehicleRechargeApplyListResponse:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
items, total = approval_svc.list_done(
db, tenant_no, user, page=page, page_size=page_size
)
return VehicleRechargeApplyListResponse(
items=items, total=total, page=page, pageSize=page_size
)
@approval_router.post("/{apply_id}/approve", response_model=VehicleRechargeApplyRead)
def approve_apply(
apply_id: str,
body: Optional[VehicleRechargeOpinionBody] = None,
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> VehicleRechargeApplyRead:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
opinion = body.opinion if body else None
return approval_svc.approve_apply(
db, tenant_no, user, apply_id, opinion=opinion
)
@approval_router.post("/{apply_id}/reject", response_model=VehicleRechargeApplyRead)
def reject_apply(
apply_id: str,
body: VehicleRechargeOpinionBody,
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> VehicleRechargeApplyRead:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
return approval_svc.reject_apply(
db, tenant_no, user, apply_id, opinion=body.opinion
)
@approval_router.post("/{apply_id}/disburse", response_model=VehicleRechargeApplyRead)
def disburse_apply(
apply_id: str,
payload: VehicleRechargeRecordCreate,
db: Session = Depends(get_db),
user: DbUserContext = Depends(get_db_current_user),
) -> VehicleRechargeApplyRead:
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
return approval_svc.disburse_apply(db, tenant_no, user, apply_id, payload)