91 lines
3.2 KiB
Python
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)
|