优化下架和撤单功能

This commit is contained in:
yml2213
2026-08-15 15:25:56 +08:00
parent 3b562b4824
commit cd3b48eef5
5 changed files with 160 additions and 9 deletions
@@ -6,6 +6,7 @@ import {
acceptWorkOrderAndSettle,
addWorkerWalletCredit,
assignWorkOrderToWorker,
cancelAssignedWorkOrder,
unassignWorkOrder,
countWorkerAcceptedOrders,
countWorkerActiveOrders,
@@ -1240,6 +1241,42 @@ export async function unassignAdminWorkOrder(workOrderId: number | string) {
return { order: mapWorkOrderAdmin(updated) }
}
export async function cancelAdminWorkOrder(workOrderId: number | string) {
const workOrder = await getRequiredWorkOrder(workOrderId)
if (
workOrder.status !== WORK_ORDER_STATUS.IN_PROGRESS ||
!workOrder.assigned_worker_id
) {
throw createHttpError('只有代练中且已接单的订单可以撤单', {
statusCode: 409,
errorCode: 'work_order_cancel_status_invalid',
})
}
const { order: updated, failureReason } = await cancelAssignedWorkOrder({
workOrderId: workOrder.id,
now: nowIso(),
})
if (failureReason === 'work_order_not_in_progress') {
throw createHttpError('订单状态已变化,无法撤单', {
statusCode: 409,
errorCode: 'work_order_cancel_status_invalid',
})
}
if (failureReason === 'work_order_no_worker') {
throw createHttpError('该订单尚未被打手接取', {
statusCode: 409,
errorCode: 'work_order_cancel_no_worker',
})
}
if (!updated) {
throw createHttpError('撤单失败,订单状态可能已变化', {
statusCode: 409,
errorCode: 'work_order_cancel_conflict',
})
}
return { order: mapWorkOrderAdmin(updated) }
}
export async function getAdminWorkerPlatformSummary() {
const [pendingWorkers, pendingMaterial, openOrders, inProgressOrders] = await Promise.all([
listWorkerUsers({ page: 1, pageSize: 1, status: 'pending_review' }),