From 11317801864e51be7bf7dbf6a3bf3245c2b54e70 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 15 Aug 2026 11:16:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=A9=E5=93=81=E8=A7=84=E5=88=99?= =?UTF-8?q?=E6=8E=A5=E5=8D=95=E9=87=91=E9=A2=9D=E5=8F=AF=E5=A1=AB0?= =?UTF-8?q?=E5=B9=B6=E9=99=90=E5=88=B6=E9=9B=B6=E5=85=83=E5=8F=91=E5=B8=83?= =?UTF-8?q?=EF=BC=8C=E5=AE=A2=E6=9C=8D=E5=A2=9E=E5=8A=A0=E5=8F=91=E5=8D=95?= =?UTF-8?q?=E6=8C=87=E6=B4=BE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 物品规则接单金额允许填 0(按数量计价不受影响) - 接单金额为 0 的工单禁止发布:前端发布按钮置灰 + 后端 409 拦截 - 客服(support)获得发布工单与指派打手权限 --- apps/backend/src/routes/admin/worker-platform.ts | 4 ++-- .../src/services/worker-platform/admin-service.ts | 11 ++++++----- .../src/pages/admin/panels/ProductRulesPanel.tsx | 8 ++++++-- .../src/pages/admin/panels/WorkOrdersPanel.tsx | 6 ++++++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/apps/backend/src/routes/admin/worker-platform.ts b/apps/backend/src/routes/admin/worker-platform.ts index 92ada148..54e9b877 100644 --- a/apps/backend/src/routes/admin/worker-platform.ts +++ b/apps/backend/src/routes/admin/worker-platform.ts @@ -344,7 +344,7 @@ router.put( router.post( '/worker-platform/orders/:workOrderId/assign', - requireAdminRoles(['admin', 'operator']), + requireAdminRoles(['admin', 'operator', 'support']), createJsonHandler( (req) => assignAdminWorkOrderToWorker(String(req.params.workOrderId || ''), req.body || {}), { @@ -379,7 +379,7 @@ router.delete( router.post( '/worker-platform/orders/:workOrderId/publish', - requireAdminRoles(['admin', 'operator']), + requireAdminRoles(['admin', 'operator', 'support']), createJsonHandler((req) => publishAdminWorkOrder(String(req.params.workOrderId || '')), { successMessage: '订单已发布到抢单大厅', errorMessage: '发布接单订单失败', diff --git a/apps/backend/src/services/worker-platform/admin-service.ts b/apps/backend/src/services/worker-platform/admin-service.ts index 2a3175db..1a51f999 100644 --- a/apps/backend/src/services/worker-platform/admin-service.ts +++ b/apps/backend/src/services/worker-platform/admin-service.ts @@ -247,11 +247,6 @@ export async function saveAdminWorkProductRule(payload: JsonObject = {}) { errorCode: 'work_product_rule_sharing_amount_invalid', }) } - } else if (rewardAmount <= 0 && unitPriceFen <= 0) { - throw createHttpError('接单金额必须大于 0', { - statusCode: 400, - errorCode: 'work_product_rule_reward_invalid', - }) } const finalRewardAmount = sharingEnabled ? resolvedSharingTotalAmount : rewardAmount @@ -1001,6 +996,12 @@ export async function publishAdminWorkOrder(workOrderId: number | string) { errorCode: 'work_order_publish_status_invalid', }) } + if (Number(workOrder.reward_amount || 0) <= 0) { + throw createHttpError('接单金额为 0,无法发布到大厅', { + statusCode: 409, + errorCode: 'work_order_publish_reward_invalid', + }) + } const now = nowIso() const updated = await updateWorkOrder(workOrder.id, { status: WORK_ORDER_STATUS.OPEN, diff --git a/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx b/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx index 5dc0d057..670d0a23 100644 --- a/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx @@ -454,9 +454,13 @@ export default function ProductRulesPanel() { /> ) : ( - + } + disabled={Number(row.rewardAmount || 0) <= 0} + title={ + Number(row.rewardAmount || 0) <= 0 + ? '接单金额为 0,不能发布到大厅' + : undefined + } onClick={() => runAction( () => publishAdminWorkOrder(row.workOrderId),