feat: 支持取消指派打手,可重新指派他人
- 后台可取消进行中订单的指派:订单回未分配,冻结押金全额退还,记录事件与审计 - 工单列表新增「取消指派」按钮(带确认弹窗),客服/管理员/运营可用 - 取消后可重新指派给其他打手
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
acceptWorkOrderAndSettle,
|
||||
addWorkerWalletCredit,
|
||||
assignWorkOrderToWorker,
|
||||
unassignWorkOrder,
|
||||
countWorkerAcceptedOrders,
|
||||
countWorkerActiveOrders,
|
||||
countWorkCategoryUsages,
|
||||
@@ -1146,6 +1147,43 @@ export async function acceptAdminWorkOrder(workOrderId: number | string) {
|
||||
return { order: mapWorkOrderAdmin(updated || workOrder) }
|
||||
}
|
||||
|
||||
export async function unassignAdminWorkOrder(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_unassign_status_invalid',
|
||||
})
|
||||
}
|
||||
const now = nowIso()
|
||||
const { order: updated, failureReason } = await unassignWorkOrder({
|
||||
workOrderId: workOrder.id,
|
||||
now,
|
||||
})
|
||||
if (failureReason === 'work_order_not_in_progress') {
|
||||
throw createHttpError('订单状态已变化,无法取消指派', {
|
||||
statusCode: 409,
|
||||
errorCode: 'work_order_unassign_status_invalid',
|
||||
})
|
||||
}
|
||||
if (failureReason === 'work_order_no_worker') {
|
||||
throw createHttpError('该订单未指派打手', {
|
||||
statusCode: 409,
|
||||
errorCode: 'work_order_unassign_no_worker',
|
||||
})
|
||||
}
|
||||
if (!updated) {
|
||||
throw createHttpError('取消指派失败,订单状态可能已变化', {
|
||||
statusCode: 409,
|
||||
errorCode: 'work_order_unassign_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' }),
|
||||
|
||||
Reference in New Issue
Block a user