新增接单平台第一期闭环
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
import { Router } from 'express'
|
||||
|
||||
import { createRateLimitMiddleware, getBodyFieldRateLimitKey } from '../middleware/rate-limit.js'
|
||||
import {
|
||||
getWorkerProfile,
|
||||
getWorkerSessionSummary,
|
||||
grabWorkerHallOrder,
|
||||
listWorkerHallOrders,
|
||||
listWorkerMyOrders,
|
||||
loginWorker,
|
||||
registerWorker,
|
||||
submitWorkerOrderAcceptance,
|
||||
} from '../services/worker-platform/worker-platform-service.js'
|
||||
import { buildNotFoundPayload, createRouteHandler } from '../utils/http.js'
|
||||
import {
|
||||
extractWorkerBearerToken,
|
||||
getRequiredWorkerSession,
|
||||
requireActiveWorker,
|
||||
requireWorkerSession,
|
||||
} from './worker/session.js'
|
||||
|
||||
const router = Router()
|
||||
|
||||
router.post(
|
||||
'/auth/register',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:register',
|
||||
windowMs: 60_000,
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('username'),
|
||||
}),
|
||||
createRouteHandler((req) => registerWorker(req.body || {}), {
|
||||
successMessage: '注册成功,等待后台审核',
|
||||
errorMessage: '接单账号注册失败',
|
||||
scope: '[worker/auth/register]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/login',
|
||||
createRateLimitMiddleware({
|
||||
scope: 'worker:login',
|
||||
windowMs: 60_000,
|
||||
max: 10,
|
||||
key: getBodyFieldRateLimitKey('username'),
|
||||
}),
|
||||
createRouteHandler((req) => loginWorker(req.body?.username, req.body?.password), {
|
||||
successMessage: '登录成功',
|
||||
errorMessage: '接单端登录失败',
|
||||
scope: '[worker/auth/login]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/auth/session',
|
||||
createRouteHandler((req) => getWorkerSessionSummary(extractWorkerBearerToken(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取接单登录态失败',
|
||||
scope: '[worker/auth/session]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/auth/logout',
|
||||
createRouteHandler(() => ({ success: true }), {
|
||||
successMessage: '已退出登录',
|
||||
errorMessage: '退出失败',
|
||||
scope: '[worker/auth/logout]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.use(requireWorkerSession)
|
||||
|
||||
router.get(
|
||||
'/profile',
|
||||
createRouteHandler((req) => getWorkerProfile(getRequiredWorkerSession(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取接单员信息失败',
|
||||
scope: '[worker/profile]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/hall/orders',
|
||||
requireActiveWorker,
|
||||
createRouteHandler((req) => listWorkerHallOrders(req.query, getRequiredWorkerSession(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取抢单大厅失败',
|
||||
scope: '[worker/hall/orders]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/hall/orders/:workOrderId/grab',
|
||||
requireActiveWorker,
|
||||
createRouteHandler((req) => grabWorkerHallOrder(String(req.params.workOrderId || ''), getRequiredWorkerSession(req)), {
|
||||
successMessage: '抢单成功',
|
||||
errorMessage: '抢单失败',
|
||||
scope: '[worker/hall/orders/:workOrderId/grab]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/orders',
|
||||
requireActiveWorker,
|
||||
createRouteHandler((req) => listWorkerMyOrders(req.query, getRequiredWorkerSession(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取我的订单失败',
|
||||
scope: '[worker/orders]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/orders/:workOrderId/submit-acceptance',
|
||||
requireActiveWorker,
|
||||
createRouteHandler(
|
||||
(req) => submitWorkerOrderAcceptance(String(req.params.workOrderId || ''), req.body || {}, getRequiredWorkerSession(req)),
|
||||
{
|
||||
successMessage: '验收资料已提交',
|
||||
errorMessage: '提交验收资料失败',
|
||||
scope: '[worker/orders/:workOrderId/submit-acceptance]',
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.use((req, res) => {
|
||||
res.status(404).json(buildNotFoundPayload(req))
|
||||
})
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user