拆分后台打手平台路由

This commit is contained in:
yml2213
2026-08-21 18:57:12 +08:00
parent cc7491ecd6
commit 2134e9dbc4
8 changed files with 1237 additions and 1162 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,156 @@
import { Router } from 'express'
import {
acceptAdminWorkOrder,
acceptAdminWorkOrderShare,
cancelAdminWorkOrderShare,
deductAdminWorkOrderPendingDeposit,
markAdminWorkOrderProblem,
resolveAdminProblemWorkOrder,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.post(
'/worker-platform/orders/:workOrderId/problem',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
markAdminWorkOrderProblem(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '订单已标记为问题单',
errorMessage: '标记问题单失败',
scope: '[admin/worker-platform/orders/:workOrderId/problem]',
audit: (req, data) => ({
action: 'work_order_marked_problem',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/problem/resolve',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
resolveAdminProblemWorkOrder(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '问题单已处置',
errorMessage: '处置问题单失败',
scope: '[admin/worker-platform/orders/:workOrderId/problem/resolve]',
audit: (req, data) => ({
action: 'work_order_problem_resolved',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/accept',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
acceptAdminWorkOrder(String(req.params.workOrderId || ''), req.adminSession?.username || ''),
{
successMessage: '订单已验收通过',
errorMessage: '验收接单订单失败',
scope: '[admin/worker-platform/orders/:workOrderId/accept]',
audit: (req, data) => ({
action: 'work_order_accepted',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/shares/:shareId/accept',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
acceptAdminWorkOrderShare(
String(req.params.workOrderId || ''),
String(req.params.shareId || ''),
req.adminSession?.username || '',
),
{
successMessage: '拼单份额已验收通过',
errorMessage: '验收拼单份额失败',
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/accept]',
audit: (req, data) => ({
action: 'work_order_share_accepted',
targetType: 'work_order_share',
targetId: String(req.params.shareId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/shares/:shareId/cancel',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
cancelAdminWorkOrderShare(
String(req.params.workOrderId || ''),
String(req.params.shareId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '拼单参与者已撤单,份数已退回大厅',
errorMessage: '撤销拼单参与者失败',
scope: '[admin/worker-platform/orders/:workOrderId/shares/:shareId/cancel]',
audit: (req, data) => ({
action: 'work_order_share_cancelled',
targetType: 'work_order_share',
targetId: String(req.params.shareId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/deduct-pending-deposit',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
deductAdminWorkOrderPendingDeposit(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '待解冻押金已扣减',
errorMessage: '扣减待解冻押金失败',
scope: '[admin/worker-platform/orders/:workOrderId/deduct-pending-deposit]',
audit: (req, data) => ({
action: 'work_order_pending_deposit_deducted',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
@@ -0,0 +1,81 @@
import { Router } from 'express'
import {
createAdminAfterSalesCase,
getAdminAfterSalesCaseEvents,
listAdminAfterSalesCases,
resolveAdminAfterSalesCase,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/after-sales-cases',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminAfterSalesCases(req.query), {
successMessage: 'ok',
errorMessage: '读取售后问题单失败',
scope: '[admin/worker-platform/after-sales-cases]',
}),
)
router.get(
'/worker-platform/after-sales-cases/:caseId/events',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => getAdminAfterSalesCaseEvents(String(req.params.caseId || '')), {
successMessage: 'ok',
errorMessage: '读取售后问题单记录失败',
scope: '[admin/worker-platform/after-sales-cases/:caseId/events]',
}),
)
router.post(
'/worker-platform/orders/:workOrderId/after-sales-cases',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
createAdminAfterSalesCase(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '售后问题单已创建',
errorMessage: '创建售后问题单失败',
scope: '[admin/worker-platform/orders/:workOrderId/after-sales-cases]',
audit: (req, data) => ({
action: 'after_sales_case_created',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/after-sales-cases/:caseId/resolve',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
resolveAdminAfterSalesCase(
String(req.params.caseId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '售后问题单已处置',
errorMessage: '处置售后问题单失败',
scope: '[admin/worker-platform/after-sales-cases/:caseId/resolve]',
audit: (req, data) => ({
action: 'after_sales_case_resolved',
targetType: 'after_sales_case',
targetId: String(req.params.caseId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
@@ -0,0 +1,395 @@
import { Router } from 'express'
import {
deleteAdminWorkCategory,
deleteAdminWorkProductRule,
deleteAdminWorkProductRuleMapping,
deleteAdminWorkerLevel,
getAdminWorkerAnnouncementConfig,
getAdminWorkerFinanceConfig,
getAdminWorkerHallConfig,
getAdminWorkerPlatformNotificationConfig,
getAdminWorkerPlatformSummary,
getAdminWorkerProductMatchConfig,
listAdminKuaishouMatchSources,
listAdminWorkCategories,
listAdminWorkProductMatchLogs,
listAdminWorkProductRuleMappings,
listAdminWorkProductRules,
listAdminWorkerLevels,
saveAdminWorkCategory,
saveAdminWorkProductRule,
saveAdminWorkProductRuleMapping,
saveAdminWorkerAnnouncementConfig,
saveAdminWorkerFinanceConfig,
saveAdminWorkerHallConfig,
saveAdminWorkerLevel,
saveAdminWorkerPlatformNotificationConfig,
saveAdminWorkerProductMatchConfig,
syncAdminWorkProductRulePrice,
testAdminKuaishouProductMatch,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/summary',
createJsonHandler(() => getAdminWorkerPlatformSummary(), {
successMessage: 'ok',
errorMessage: '读取接单平台概览失败',
scope: '[admin/worker-platform/summary]',
}),
)
router.get(
'/worker-platform/levels',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(() => listAdminWorkerLevels(), {
successMessage: 'ok',
errorMessage: '读取接单等级失败',
scope: '[admin/worker-platform/levels]',
}),
)
router.post(
'/worker-platform/levels',
requireAdminRoles(['admin']),
createJsonHandler((req) => saveAdminWorkerLevel(req.body || {}), {
successMessage: '接单等级已保存',
errorMessage: '保存接单等级失败',
scope: '[admin/worker-platform/levels]',
audit: (_req, data) => ({
action: 'worker_level_saved',
targetType: 'worker_level',
targetId: String((data as { level?: { levelKey?: string } })?.level?.levelKey || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.delete(
'/worker-platform/levels/:levelId',
requireAdminRoles(['admin']),
createJsonHandler((req) => deleteAdminWorkerLevel(String(req.params.levelId || '')), {
successMessage: '接单等级已删除',
errorMessage: '删除接单等级失败',
scope: '[admin/worker-platform/levels/:levelId]',
audit: (_req, data) => ({
action: 'worker_level_deleted',
targetType: 'worker_level',
targetId: String(_req.params.levelId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.get(
'/worker-platform/categories',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(() => listAdminWorkCategories(), {
successMessage: 'ok',
errorMessage: '读取接单分类失败',
scope: '[admin/worker-platform/categories]',
}),
)
router.post(
'/worker-platform/categories',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkCategory(req.body || {}), {
successMessage: '接单分类已保存',
errorMessage: '保存接单分类失败',
scope: '[admin/worker-platform/categories]',
audit: (_req, data) => ({
action: 'work_category_saved',
targetType: 'work_category',
targetId: String(
(data as { category?: { categoryKey?: string } })?.category?.categoryKey || '',
),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.delete(
'/worker-platform/categories/:categoryId',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => deleteAdminWorkCategory(String(req.params.categoryId || '')), {
successMessage: '接单分类已删除',
errorMessage: '删除接单分类失败',
scope: '[admin/worker-platform/categories/:categoryId]',
audit: (_req, data) => ({
action: 'work_category_deleted',
targetType: 'work_category',
targetId: String(_req.params.categoryId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.get(
'/worker-platform/product-rules',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkProductRules(req.query), {
successMessage: 'ok',
errorMessage: '读取接单物品规则失败',
scope: '[admin/worker-platform/product-rules]',
}),
)
router.post(
'/worker-platform/product-rules',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkProductRule(req.body || {}), {
successMessage: '接单物品规则已保存',
errorMessage: '保存接单物品规则失败',
scope: '[admin/worker-platform/product-rules]',
audit: (_req, data) => ({
action: 'work_product_rule_saved',
targetType: 'work_product_rule',
targetId: String((data as { rule?: { ruleKey?: string } })?.rule?.ruleKey || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/product-rules/:ruleId/sync-price',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
syncAdminWorkProductRulePrice(
String(req.params.ruleId || ''),
req.adminSession?.username || '',
),
{
successMessage: '模板价格已同步',
errorMessage: '同步模板价格失败',
scope: '[admin/worker-platform/product-rules/:ruleId/sync-price]',
audit: (req, data) => ({
action: 'work_product_rule_price_synced',
targetType: 'work_product_rule',
targetId: String(req.params.ruleId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.delete(
'/worker-platform/product-rules/:ruleId',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => deleteAdminWorkProductRule(String(req.params.ruleId || '')), {
successMessage: '接单物品规则已删除',
errorMessage: '删除接单物品规则失败',
scope: '[admin/worker-platform/product-rules/:ruleId]',
audit: (_req, data) => ({
action: 'work_product_rule_deleted',
targetType: 'work_product_rule',
targetId: String(_req.params.ruleId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.get(
'/worker-platform/product-mappings',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkProductRuleMappings(req.query), {
successMessage: 'ok',
errorMessage: '读取商品映射失败',
scope: '[admin/worker-platform/product-mappings]',
}),
)
router.post(
'/worker-platform/product-mappings',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkProductRuleMapping(req.body || {}), {
successMessage: '商品映射已保存',
errorMessage: '保存商品映射失败',
scope: '[admin/worker-platform/product-mappings]',
audit: (_req, data) => ({
action: 'work_product_mapping_saved',
targetType: 'work_product_mapping',
targetId: String((data as { mapping?: { mappingId?: number } })?.mapping?.mappingId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.delete(
'/worker-platform/product-mappings/:mappingId',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) => deleteAdminWorkProductRuleMapping(String(req.params.mappingId || '')),
{
successMessage: '商品映射已删除',
errorMessage: '删除商品映射失败',
scope: '[admin/worker-platform/product-mappings/:mappingId]',
},
),
)
router.get(
'/worker-platform/product-match-config',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(() => getAdminWorkerProductMatchConfig(), {
successMessage: 'ok',
errorMessage: '读取商品匹配配置失败',
scope: '[admin/worker-platform/product-match-config]',
}),
)
router.get(
'/worker-platform/announcement',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(() => getAdminWorkerAnnouncementConfig(), {
successMessage: 'ok',
errorMessage: '读取公告失败',
scope: '[admin/worker-platform/announcement]',
}),
)
router.get(
'/worker-platform/hall-config',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(() => getAdminWorkerHallConfig(), {
successMessage: 'ok',
errorMessage: '读取大厅配置失败',
scope: '[admin/worker-platform/hall-config]',
}),
)
router.post(
'/worker-platform/hall-config',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkerHallConfig(req.body || {}), {
successMessage: '大厅配置已保存',
errorMessage: '保存大厅配置失败',
scope: '[admin/worker-platform/hall-config]',
audit: (_req, data) => ({
action: 'worker_hall_config_saved',
targetType: 'worker_hall_config',
targetId: 'worker_hall',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/announcement',
requireAdminRoles(['admin']),
createJsonHandler((req) => saveAdminWorkerAnnouncementConfig(req.body || {}), {
successMessage: '公告已保存',
errorMessage: '保存公告失败',
scope: '[admin/worker-platform/announcement]',
audit: (_req, data) => ({
action: 'worker_announcement_saved',
targetType: 'worker_announcement',
targetId: 'worker_announcement',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/product-match-config',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkerProductMatchConfig(req.body || {}), {
successMessage: '商品匹配配置已保存',
errorMessage: '保存商品匹配配置失败',
scope: '[admin/worker-platform/product-match-config]',
audit: (_req, data) => ({
action: 'worker_product_match_config_saved',
targetType: 'worker_product_match_config',
targetId: 'worker_product_match',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.get(
'/worker-platform/product-match-sources',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminKuaishouMatchSources(req.query), {
successMessage: 'ok',
errorMessage: '读取快手匹配载荷失败',
scope: '[admin/worker-platform/product-match-sources]',
}),
)
router.post(
'/worker-platform/product-match-test',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => testAdminKuaishouProductMatch(req.body || {}), {
successMessage: '匹配测试完成',
errorMessage: '匹配测试失败',
scope: '[admin/worker-platform/product-match-test]',
}),
)
router.get(
'/worker-platform/product-match-logs',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkProductMatchLogs(req.query), {
successMessage: 'ok',
errorMessage: '读取匹配日志失败',
scope: '[admin/worker-platform/product-match-logs]',
}),
)
router.get(
'/worker-platform/finance-config',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(() => getAdminWorkerFinanceConfig(), {
successMessage: 'ok',
errorMessage: '读取资金配置失败',
scope: '[admin/worker-platform/finance-config]',
}),
)
router.post(
'/worker-platform/finance-config',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => saveAdminWorkerFinanceConfig(req.body || {}), {
successMessage: '资金配置已保存',
errorMessage: '保存资金配置失败',
scope: '[admin/worker-platform/finance-config]',
audit: (_req, data) => ({
action: 'worker_finance_config_saved',
targetType: 'worker_finance_config',
targetId: 'worker_finance',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.get(
'/worker-platform/notification-config',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(() => getAdminWorkerPlatformNotificationConfig(), {
successMessage: 'ok',
errorMessage: '读取通知配置失败',
scope: '[admin/worker-platform/notification-config]',
}),
)
router.post(
'/worker-platform/notification-config',
requireAdminRoles(['admin']),
createJsonHandler((req) => saveAdminWorkerPlatformNotificationConfig(req.body || {}), {
successMessage: '通知配置已保存',
errorMessage: '保存通知配置失败',
scope: '[admin/worker-platform/notification-config]',
audit: (_req, data) => ({
action: 'worker_platform_notification_config_saved',
targetType: 'worker_platform_notification_config',
targetId: 'worker_platform_notifications',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
export default router
@@ -0,0 +1,40 @@
import { Router } from 'express'
import {
listAdminWorkerFinanceRequests,
reviewAdminWorkerFinanceRequest,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/finance-requests',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkerFinanceRequests(req.query), {
successMessage: 'ok',
errorMessage: '读取资金申请失败',
scope: '[admin/worker-platform/finance-requests]',
}),
)
router.post(
'/worker-platform/finance-requests/:requestId/review',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) => reviewAdminWorkerFinanceRequest(String(req.params.requestId || ''), req.body || {}),
{
successMessage: '资金申请已处理',
errorMessage: '处理资金申请失败',
scope: '[admin/worker-platform/finance-requests/:requestId/review]',
audit: (req, data) => ({
action: 'worker_finance_request_reviewed',
targetType: 'worker_finance_request',
targetId: String(req.params.requestId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
@@ -0,0 +1,360 @@
import { Router } from 'express'
import {
acceptAdminWorkOrders,
assignAdminWorkOrderToWorker,
cancelAdminWorkOrder,
createAdminMockWorkOrder,
deleteAdminWorkOrder,
getAdminWorkOrderEvents,
getAdminWorkOrderSharing,
listAdminWorkOrders,
pinAdminWorkOrder,
publishAdminWorkOrder,
reopenAdminCancelledWorkOrder,
reprocessAdminKuaishouSendCodeWorkOrders,
submitAdminWorkOrderMaterial,
unassignAdminWorkOrder,
unpublishAdminWorkOrder,
updateAdminWorkOrder,
updateAdminWorkOrderSharing,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/orders',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkOrders(req.query), {
successMessage: 'ok',
errorMessage: '读取接单订单失败',
scope: '[admin/worker-platform/orders]',
}),
)
router.post(
'/worker-platform/orders/mock',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => createAdminMockWorkOrder(req.body || {}), {
successMessage: '接单工单 Mock 已生成',
errorMessage: '生成接单工单 Mock 失败',
scope: '[admin/worker-platform/orders/mock]',
audit: (_req, data) => ({
action: 'work_order_mock_created',
targetType: 'work_order',
targetId: String((data as { order?: { workOrderId?: number } })?.order?.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/orders/reprocess-matches',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => reprocessAdminKuaishouSendCodeWorkOrders(req.body || {}), {
successMessage: '快手订单重匹配完成',
errorMessage: '快手订单重匹配失败',
scope: '[admin/worker-platform/orders/reprocess-matches]',
audit: (_req, data) => ({
action: 'work_order_kuaishou_reprocessed',
targetType: 'work_order',
targetId: '',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/orders/:workOrderId/material',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
submitAdminWorkOrderMaterial(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '订单资料已保存',
errorMessage: '补充订单资料失败',
scope: '[admin/worker-platform/orders/:workOrderId/material]',
audit: (req, data) => ({
action: 'work_order_material_saved',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.put(
'/worker-platform/orders/:workOrderId',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
updateAdminWorkOrder(String(req.params.workOrderId || ''), req.body || {}, {
canEditRequirementFields: req.adminSession?.role !== 'support',
actorName: req.adminSession?.username || '',
}),
{
successMessage: '工单信息已保存',
errorMessage: '保存工单信息失败',
scope: '[admin/worker-platform/orders/:workOrderId]',
audit: (req, data) => ({
action: 'work_order_updated',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/assign',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
assignAdminWorkOrderToWorker(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '已指派打手',
errorMessage: '指派打手失败',
scope: '[admin/worker-platform/orders/:workOrderId/assign]',
audit: (req, data) => ({
action: 'work_order_worker_assigned',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/unassign',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
unassignAdminWorkOrder(
String(req.params.workOrderId || ''),
req.adminSession?.username || '',
),
{
successMessage: '已取消指派',
errorMessage: '取消指派失败',
scope: '[admin/worker-platform/orders/:workOrderId/unassign]',
audit: (req, data) => ({
action: 'work_order_worker_unassigned',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/cancel',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
cancelAdminWorkOrder(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '撤单处理完成,打手额度已恢复',
errorMessage: '撤单失败',
scope: '[admin/worker-platform/orders/:workOrderId/cancel]',
audit: (req, data) => ({
action:
String(req.body?.action || '').trim() === 'return_to_hall'
? 'work_order_returned_to_hall'
: 'work_order_cancelled',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.delete(
'/worker-platform/orders/:workOrderId',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => deleteAdminWorkOrder(String(req.params.workOrderId || '')), {
successMessage: '工单已删除',
errorMessage: '删除工单失败',
scope: '[admin/worker-platform/orders/:workOrderId]',
audit: (req, data) => ({
action: 'work_order_deleted',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/orders/:workOrderId/reopen',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
reopenAdminCancelledWorkOrder(
String(req.params.workOrderId || ''),
req.adminSession?.username || '',
),
{
successMessage: '订单已恢复为未分配状态',
errorMessage: '重新启用订单失败',
scope: '[admin/worker-platform/orders/:workOrderId/reopen]',
audit: (req, data) => ({
action: 'work_order_reopened',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/publish',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
publishAdminWorkOrder(String(req.params.workOrderId || ''), req.adminSession?.username || ''),
{
successMessage: '订单已进入大厅队列',
errorMessage: '发布接单订单失败',
scope: '[admin/worker-platform/orders/:workOrderId/publish]',
audit: (req, data) => ({
action: 'work_order_published',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/unpublish',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
unpublishAdminWorkOrder(
String(req.params.workOrderId || ''),
req.adminSession?.username || '',
),
{
successMessage: '订单已撤回到未分配',
errorMessage: '下架接单订单失败',
scope: '[admin/worker-platform/orders/:workOrderId/unpublish]',
audit: (req, data) => ({
action: 'work_order_unpublished',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/pin',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
pinAdminWorkOrder(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '置顶状态已更新',
errorMessage: '更新置顶状态失败',
scope: '[admin/worker-platform/orders/:workOrderId/pin]',
audit: (req, data) => ({
action: 'work_order_pin_toggled',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.get(
'/worker-platform/orders/:workOrderId/sharing',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => getAdminWorkOrderSharing(String(req.params.workOrderId || '')), {
successMessage: 'ok',
errorMessage: '读取拼单信息失败',
scope: '[admin/worker-platform/orders/:workOrderId/sharing]',
}),
)
router.get(
'/worker-platform/orders/:workOrderId/events',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => getAdminWorkOrderEvents(String(req.params.workOrderId || '')), {
successMessage: 'ok',
errorMessage: '读取工单流转记录失败',
scope: '[admin/worker-platform/orders/:workOrderId/events]',
}),
)
router.post(
'/worker-platform/orders/:workOrderId/sharing',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
updateAdminWorkOrderSharing(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '拼单配置已保存',
errorMessage: '保存拼单配置失败',
scope: '[admin/worker-platform/orders/:workOrderId/sharing]',
audit: (req, data) => ({
action: 'work_order_sharing_config_updated',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/accept-batch',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) => acceptAdminWorkOrders(req.body || {}, req.adminSession?.username || ''),
{
successMessage: '选中订单已验收通过',
errorMessage: '批量验收接单订单失败',
scope: '[admin/worker-platform/orders/accept-batch]',
audit: (req, data) => ({
action: 'work_orders_batch_accepted',
targetType: 'work_order',
targetId: Array.isArray(req.body?.workOrderIds)
? req.body.workOrderIds.map((item: unknown) => String(item)).join(',')
: '',
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
@@ -0,0 +1,75 @@
import { Router } from 'express'
import {
listAdminWorkerCancelRequests,
listAdminWorkerOrderFeedbacks,
resolveAdminWorkerOrderFeedback,
reviewAdminWorkerCancelRequest,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/cancel-requests',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkerCancelRequests(req.query), {
successMessage: 'ok',
errorMessage: '读取撤单申请失败',
scope: '[admin/worker-platform/cancel-requests]',
}),
)
router.get(
'/worker-platform/feedbacks',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkerOrderFeedbacks(req.query), {
successMessage: 'ok',
errorMessage: '读取问题反馈失败',
scope: '[admin/worker-platform/feedbacks]',
}),
)
router.post(
'/worker-platform/feedbacks/:feedbackId/resolve',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
resolveAdminWorkerOrderFeedback(
String(req.params.feedbackId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '问题反馈已处理',
errorMessage: '处理问题反馈失败',
scope: '[admin/worker-platform/feedbacks/:feedbackId/resolve]',
},
),
)
router.post(
'/worker-platform/cancel-requests/:requestId/review',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
reviewAdminWorkerCancelRequest(
String(req.params.requestId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '撤单申请已审核',
errorMessage: '审核撤单申请失败',
scope: '[admin/worker-platform/cancel-requests/:requestId/review]',
audit: (req, data) => ({
action: 'worker_cancel_request_reviewed',
targetType: 'worker_cancel_request',
targetId: String(req.params.requestId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
@@ -0,0 +1,116 @@
import { Router } from 'express'
import {
creditAdminWorkerWallet,
listAdminWorkerUsers,
listAdminWorkerWithdrawalAccounts,
resetAdminWorkerPassword,
reviewAdminWorkerUser,
saveAdminWorkerWithdrawalAccount,
} from '../../../services/worker-platform/index.js'
import { createJsonHandler, requireAdminRoles } from '../session.js'
const router = Router()
router.get(
'/worker-platform/workers',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminWorkerUsers(req.query), {
successMessage: 'ok',
errorMessage: '读取打手列表失败',
scope: '[admin/worker-platform/workers]',
}),
)
router.post(
'/worker-platform/workers/:workerId/review',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) => reviewAdminWorkerUser(String(req.params.workerId || ''), req.body || {}),
{
successMessage: '打手账号状态已更新',
errorMessage: '更新打手账号状态失败',
scope: '[admin/worker-platform/workers/:workerId/review]',
audit: (req, data) => ({
action: 'worker_reviewed',
targetType: 'worker',
targetId: String(req.params.workerId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/workers/:workerId/reset-password',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) => resetAdminWorkerPassword(String(req.params.workerId || ''), req.body || {}),
{
successMessage: '打手密码已重置',
errorMessage: '重置打手密码失败',
scope: '[admin/worker-platform/workers/:workerId/reset-password]',
audit: (req, data) => ({
action: 'worker_password_reset',
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']),
createJsonHandler(
(req) => creditAdminWorkerWallet(String(req.params.workerId || ''), req.body || {}),
{
successMessage: '打手余额已增加',
errorMessage: '人工充值失败',
scope: '[admin/worker-platform/workers/:workerId/wallet-credit]',
audit: (req, data) => ({
action: 'worker_wallet_credited',
targetType: 'worker',
targetId: String(req.params.workerId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.get(
'/worker-platform/workers/:workerId/withdrawal-accounts',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => listAdminWorkerWithdrawalAccounts(String(req.params.workerId || '')), {
successMessage: 'ok',
errorMessage: '读取打手提现信息失败',
scope: '[admin/worker-platform/workers/:workerId/withdrawal-accounts]',
}),
)
router.post(
'/worker-platform/workers/:workerId/withdrawal-accounts/:accountChannel',
requireAdminRoles(['admin', 'operator']),
createJsonHandler(
(req) =>
saveAdminWorkerWithdrawalAccount(
String(req.params.workerId || ''),
String(req.params.accountChannel || ''),
req.body || {},
),
{
successMessage: '打手提现信息已保存',
errorMessage: '保存打手提现信息失败',
scope: '[admin/worker-platform/workers/:workerId/withdrawal-accounts/:accountChannel]',
audit: (req) => ({
action: 'worker_withdrawal_account_saved',
targetType: 'worker',
targetId: String(req.params.workerId || ''),
data: { accountChannel: String(req.params.accountChannel || '') },
}),
},
),
)
export default router