Files
Mutual_Fund/api/routers/work_order.py
T
2026-09-13 22:21:49 +08:00

68 lines
2.1 KiB
Python

"""业务工单路由:列表 / 详情 / 认领 / 提交审核 / 复核(仅风控专员)。"""
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from api.deps import require_risk_officer
from config.deps import get_db
from model.sys_user import SysUser
from schemas.work_order import WorkOrderIdReq, WorkOrderReviewReq
from service import work_order as work_order_service
from utils.response import success
router = APIRouter(prefix="/work-order", tags=["工单"])
@router.get("/list", summary="工单列表")
async def list_work_orders(
status: str | None = None,
page: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=10),
user: SysUser = Depends(require_risk_officer),
db: AsyncSession = Depends(get_db),
):
return success(
await work_order_service.list_work_orders(
db, status, page=page, page_size=page_size
)
)
@router.get("/{work_order_id}", summary="工单详情")
async def get_work_order(
work_order_id: int,
user: SysUser = Depends(require_risk_officer),
db: AsyncSession = Depends(get_db),
):
wo = await work_order_service.get_work_order(db, work_order_id)
return success(wo.model_dump(mode="json"))
@router.post("/claim", summary="认领")
async def claim(
req: WorkOrderIdReq,
user: SysUser = Depends(require_risk_officer),
db: AsyncSession = Depends(get_db),
):
result = await work_order_service.claim(db, user, req.work_order_id)
return success(result)
@router.post("/submit-review", summary="提交审核")
async def submit_review(
req: WorkOrderIdReq,
user: SysUser = Depends(require_risk_officer),
db: AsyncSession = Depends(get_db),
):
result = await work_order_service.submit_review(db, user, req.work_order_id)
return success(result)
@router.post("/review", summary="复核")
async def review(
req: WorkOrderReviewReq,
user: SysUser = Depends(require_risk_officer),
db: AsyncSession = Depends(get_db),
):
result = await work_order_service.review(db, user, req.work_order_id, req.approve, req.comment)
return success(result)