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