feat(worker-platform): 实现打手寄卖白名单权限控制与存量发布打手平滑过渡

1. 新增数据库迁移 082_worker_consignment_whitelist.sql,worker_users 表增加 can_consign 与 consignment_activated_at 字段,存量在 consignment_submissions 提报过的打手默认自动开启;
2. 打手端提报接口 publishWorkerConsignment 增加白名单权限服务端强校验拦截(403 consignment_permission_required);
3. 管理后台打手管理表格增加「寄卖权限」实时 Switch 开关列与打手详情抽屉权限展示,支持客服即时开通或关闭打手寄卖权限;
4. 打手端我要寄卖页面在未开通权限时展示专属白名单引导卡片,一键呼起联系客服开通寄卖弹窗;
5. 补充寄卖权限拦截与路由单测,前端59项单测与后端507项单测全部通过。
This commit is contained in:
yml2213
2026-09-21 13:30:33 +08:00
parent 0df5c9f34e
commit cb8b249e57
15 changed files with 295 additions and 1 deletions
@@ -12,6 +12,7 @@ import {
saveAdminWorkerWithdrawalAccount,
setAdminWorkerPersonalDepositFreeAmount,
updateAdminWorkerWithdrawalBlacklist,
updateAdminWorkerConsignmentPermission,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
@@ -141,6 +142,26 @@ router.post(
),
)
router.post(
'/worker-platform/workers/:workerId/consignment-permission',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
updateAdminWorkerConsignmentPermission(String(req.params.workerId || ''), req.body || {}),
{
successMessage: '打手寄卖权限已更新',
errorMessage: '更新打手寄卖权限失败',
scope: '[admin/worker-platform/workers/:workerId/consignment-permission]',
audit: (req, data) => ({
action: 'worker_consignment_permission_updated',
targetType: 'worker',
targetId: String(req.params.workerId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/workers/:workerId/wallet-credit',
requireAdminRoles(['admin', 'operator']),