Files
order_site/apps/backend/src/routes/collect.ts
T

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