完善接单平台上传与物品规则

This commit is contained in:
yml2213
2026-07-25 15:56:18 +08:00
parent f6d3f00f21
commit a2587eda01
40 changed files with 4978 additions and 1008 deletions
+37
View File
@@ -0,0 +1,37 @@
import { Router } from 'express'
import { uploadSingleFile } from '../file-upload.js'
import { uploadFileAsset } from '../../services/file-storage/file-storage-service.js'
import { createJsonHandler, getRequiredAdminSession, requireAdminRoles } from './session.js'
const router = Router()
router.post(
'/files/upload',
requireAdminRoles(['admin', 'operator', 'support']),
uploadSingleFile,
createJsonHandler(
(req) => {
const session = getRequiredAdminSession(req)
return uploadFileAsset({
file: req.file,
scene: req.body?.scene,
uploaderType: 'admin',
uploaderId: String(session.userId || session.username || ''),
})
},
{
successMessage: '文件已上传',
errorMessage: '文件上传失败',
scope: '[admin/files/upload]',
audit: (_req, data) => ({
action: 'file_uploaded',
targetType: 'file',
targetId: String((data as { file?: { objectKey?: string } })?.file?.objectKey || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
export default router
+141 -37
View File
@@ -5,13 +5,19 @@ import {
creditAdminWorkerWallet,
createAdminMockWorkOrder,
getAdminWorkerPlatformSummary,
listAdminWorkCategories,
listAdminWorkProductRules,
listAdminWorkerLevels,
listAdminWorkerUsers,
listAdminWorkOrders,
markAdminWorkOrderProblem,
publishAdminWorkOrder,
reviewAdminWorkerUser,
saveAdminWorkCategory,
saveAdminWorkProductRule,
saveAdminWorkerLevel,
submitAdminWorkOrderMaterial,
syncAdminWorkerOrdersFromSource,
} from '../../services/worker-platform/worker-platform-service.js'
import { createJsonHandler, requireAdminRoles } from './session.js'
@@ -47,7 +53,61 @@ router.post(
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> : {},
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.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>) : {},
}),
}),
)
@@ -65,33 +125,39 @@ router.get(
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> : {},
}),
}),
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/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> : {},
}),
}),
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(
@@ -115,11 +181,46 @@ router.post(
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> : {},
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
router.post(
'/worker-platform/source-orders/sync',
requireAdminRoles(['admin', 'operator']),
createJsonHandler((req) => syncAdminWorkerOrdersFromSource(req.body || {}), {
successMessage: '源订单同步完成',
errorMessage: '同步源订单失败',
scope: '[admin/worker-platform/source-orders/sync]',
audit: (_req, data) => ({
action: 'work_order_source_synced',
targetType: 'source_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 || {}),
{
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.post(
'/worker-platform/orders/:workOrderId/publish',
requireAdminRoles(['admin', 'operator']),
@@ -131,7 +232,7 @@ router.post(
action: 'work_order_published',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? data as Record<string, unknown> : {},
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)
@@ -139,17 +240,20 @@ router.post(
router.post(
'/worker-platform/orders/:workOrderId/problem',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => markAdminWorkOrderProblem(String(req.params.workOrderId || ''), req.body || {}), {
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> : {},
}),
}),
createJsonHandler(
(req) => markAdminWorkOrderProblem(String(req.params.workOrderId || ''), req.body || {}),
{
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(
@@ -163,7 +267,7 @@ router.post(
action: 'work_order_accepted',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? data as Record<string, unknown> : {},
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
}),
)