2026-09-12 21:08:20 +08:00
|
|
|
"""业务工单路由:列表 / 详情 / 认领 / 提交审核 / 复核(仅风控专员)。"""
|
2026-09-13 22:21:49 +08:00
|
|
|
from fastapi import APIRouter, Depends, Query
|
2026-09-12 21:08:20 +08:00
|
|
|
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,
|
2026-09-13 22:21:49 +08:00
|
|
|
page: int = Query(1, ge=1),
|
|
|
|
|
page_size: int = Query(10, ge=1, le=10),
|
2026-09-12 21:08:20 +08:00
|
|
|
user: SysUser = Depends(require_risk_officer),
|
|
|
|
|
db: AsyncSession = Depends(get_db),
|
|
|
|
|
):
|
2026-09-13 22:21:49 +08:00
|
|
|
return success(
|
|
|
|
|
await work_order_service.list_work_orders(
|
|
|
|
|
db, status, page=page, page_size=page_size
|
|
|
|
|
)
|
|
|
|
|
)
|
2026-09-12 21:08:20 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@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)
|