67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { Router } from 'express'
|
|
|
|
import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../middleware/rate-limit.js'
|
|
import {
|
|
collectLookupWorkOrder,
|
|
collectSubmitWorkOrder,
|
|
} from '../services/worker-platform/index.js'
|
|
import { uploadFileAsset } from '../services/file-storage/file-storage-service.js'
|
|
import { buildNotFoundPayload, createRouteHandler } from '../utils/http.js'
|
|
import { uploadSingleFile } from './file-upload.js'
|
|
|
|
const router = Router()
|
|
|
|
const collectRateLimit = createRateLimitMiddleware({
|
|
scope: 'collect',
|
|
windowMs: 60_000,
|
|
max: 60,
|
|
key: getBodyFieldRateLimitKey('orderNo'),
|
|
})
|
|
|
|
router.post(
|
|
'/lookup',
|
|
collectRateLimit,
|
|
createRouteHandler((req) => collectLookupWorkOrder(req.body || {}), {
|
|
successMessage: 'ok',
|
|
errorMessage: '查询待完善订单失败',
|
|
scope: '[collect/lookup]',
|
|
}),
|
|
)
|
|
|
|
router.post(
|
|
'/submit',
|
|
collectRateLimit,
|
|
createRouteHandler((req) => collectSubmitWorkOrder(req.body || {}), {
|
|
successMessage: '资料已提交',
|
|
errorMessage: '提交补充资料失败',
|
|
scope: '[collect/submit]',
|
|
}),
|
|
)
|
|
|
|
router.post(
|
|
'/upload',
|
|
collectRateLimit,
|
|
uploadSingleFile,
|
|
createRouteHandler(
|
|
(req) => {
|
|
return uploadFileAsset({
|
|
file: req.file,
|
|
scene: req.body?.scene || 'collect-material',
|
|
uploaderType: 'collect',
|
|
uploaderId: String(req.body?.orderNo || 'anonymous'),
|
|
})
|
|
},
|
|
{
|
|
successMessage: '文件已上传',
|
|
errorMessage: '文件上传失败',
|
|
scope: '[collect/upload]',
|
|
},
|
|
),
|
|
)
|
|
|
|
router.use((req, res) => {
|
|
res.status(404).json(buildNotFoundPayload(req))
|
|
})
|
|
|
|
export default router
|