修复接单平台并发、分页与补资料
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
listAdminWorkOrders,
|
||||
markAdminWorkOrderProblem,
|
||||
publishAdminWorkOrder,
|
||||
resolveAdminProblemWorkOrder,
|
||||
reviewAdminWorkerUser,
|
||||
saveAdminWorkCategory,
|
||||
saveAdminWorkProductRule,
|
||||
@@ -117,7 +118,7 @@ router.get(
|
||||
requireAdminRoles(['admin', 'operator', 'support']),
|
||||
createJsonHandler((req) => listAdminWorkerUsers(req.query), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取接单员列表失败',
|
||||
errorMessage: '读取打手列表失败',
|
||||
scope: '[admin/worker-platform/workers]',
|
||||
}),
|
||||
)
|
||||
@@ -128,8 +129,8 @@ router.post(
|
||||
createJsonHandler(
|
||||
(req) => reviewAdminWorkerUser(String(req.params.workerId || ''), req.body || {}),
|
||||
{
|
||||
successMessage: '接单员审核状态已更新',
|
||||
errorMessage: '审核接单员失败',
|
||||
successMessage: '打手审核状态已更新',
|
||||
errorMessage: '审核打手失败',
|
||||
scope: '[admin/worker-platform/workers/:workerId/review]',
|
||||
audit: (req, data) => ({
|
||||
action: 'worker_reviewed',
|
||||
@@ -147,7 +148,7 @@ router.post(
|
||||
createJsonHandler(
|
||||
(req) => creditAdminWorkerWallet(String(req.params.workerId || ''), req.body || {}),
|
||||
{
|
||||
successMessage: '接单员余额已增加',
|
||||
successMessage: '打手余额已增加',
|
||||
errorMessage: '人工充值失败',
|
||||
scope: '[admin/worker-platform/workers/:workerId/wallet-credit]',
|
||||
audit: (req, data) => ({
|
||||
@@ -256,6 +257,25 @@ router.post(
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/problem/resolve',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) => resolveAdminProblemWorkOrder(String(req.params.workOrderId || ''), req.body || {}),
|
||||
{
|
||||
successMessage: '问题单已处置',
|
||||
errorMessage: '处置问题单失败',
|
||||
scope: '[admin/worker-platform/orders/:workOrderId/problem/resolve]',
|
||||
audit: (req, data) => ({
|
||||
action: 'work_order_problem_resolved',
|
||||
targetType: 'work_order',
|
||||
targetId: String(req.params.workOrderId || ''),
|
||||
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/worker-platform/orders/:workOrderId/accept',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
|
||||
@@ -7,7 +7,10 @@ const router = Router()
|
||||
|
||||
router.get('/object', async (req, res) => {
|
||||
try {
|
||||
const object = await getStoredFileObject(req.query.key, req.query.variant)
|
||||
const object = await getStoredFileObject(req.query.key, req.query.variant, {
|
||||
expires: req.query.expires,
|
||||
signature: req.query.signature,
|
||||
})
|
||||
res.setHeader('Content-Type', object.contentType || 'application/octet-stream')
|
||||
res.setHeader('Cache-Control', 'private, max-age=300')
|
||||
res.setHeader('X-Content-Type-Options', 'nosniff')
|
||||
|
||||
@@ -10,11 +10,13 @@ import {
|
||||
listWorkerHallOrders,
|
||||
listWorkerMyOrders,
|
||||
loginWorker,
|
||||
logoutWorkerSession,
|
||||
registerWorker,
|
||||
submitWorkerOrderAcceptance,
|
||||
} from '../services/worker-platform/worker-platform-service.js'
|
||||
import { buildNotFoundPayload, createRouteHandler } from '../utils/http.js'
|
||||
import {
|
||||
extractOptionalWorkerBearerToken,
|
||||
extractWorkerBearerToken,
|
||||
getRequiredWorkerSession,
|
||||
requireActiveWorker,
|
||||
@@ -64,7 +66,7 @@ router.get(
|
||||
|
||||
router.post(
|
||||
'/auth/logout',
|
||||
createRouteHandler(() => ({ success: true }), {
|
||||
createRouteHandler((req) => logoutWorkerSession(extractOptionalWorkerBearerToken(req)), {
|
||||
successMessage: '已退出登录',
|
||||
errorMessage: '退出失败',
|
||||
scope: '[worker/auth/logout]',
|
||||
@@ -77,7 +79,7 @@ router.get(
|
||||
'/profile',
|
||||
createRouteHandler((req) => getWorkerProfile(getRequiredWorkerSession(req)), {
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取接单员信息失败',
|
||||
errorMessage: '读取打手信息失败',
|
||||
scope: '[worker/profile]',
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -37,14 +37,19 @@ export function getRequiredWorkerSession(req: Request): WorkerSession {
|
||||
}
|
||||
|
||||
export function extractWorkerBearerToken(req: Request): string {
|
||||
const authorization = String(req.headers.authorization || '').trim()
|
||||
const matched = authorization.match(/^Bearer\s+(.+)$/i)
|
||||
if (!matched?.[1]) {
|
||||
throw createHttpError('未登录或登录已失效', {
|
||||
statusCode: 401,
|
||||
errorCode: 'worker_auth_required',
|
||||
})
|
||||
const token = extractOptionalWorkerBearerToken(req)
|
||||
if (token) {
|
||||
return token
|
||||
}
|
||||
|
||||
return matched[1].trim()
|
||||
throw createHttpError('未登录或登录已失效', {
|
||||
statusCode: 401,
|
||||
errorCode: 'worker_auth_required',
|
||||
})
|
||||
}
|
||||
|
||||
export function extractOptionalWorkerBearerToken(req: Request): string {
|
||||
const authorization = String(req.headers.authorization || '').trim()
|
||||
const matched = authorization.match(/^Bearer\s+(.+)$/i)
|
||||
return matched?.[1]?.trim() || ''
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user