增加售后相关的

This commit is contained in:
yml2213
2026-08-21 14:30:00 +08:00
parent 874b093a4b
commit f4d32a7c07
18 changed files with 1903 additions and 3 deletions
@@ -10,6 +10,7 @@ import {
unassignAdminWorkOrder,
creditAdminWorkerWallet,
createAdminMockWorkOrder,
createAdminAfterSalesCase,
deductAdminWorkOrderPendingDeposit,
deleteAdminWorkCategory,
deleteAdminWorkProductRule,
@@ -22,6 +23,7 @@ import {
getAdminWorkerPlatformNotificationConfig,
getAdminWorkerPlatformSummary,
getAdminWorkOrderEvents,
getAdminAfterSalesCaseEvents,
getAdminWorkOrderSharing,
listAdminWorkerFinanceRequests,
listAdminWorkerWithdrawalAccounts,
@@ -33,6 +35,7 @@ import {
listAdminWorkerLevels,
listAdminWorkerUsers,
listAdminWorkOrders,
listAdminAfterSalesCases,
listAdminWorkerCancelRequests,
listAdminWorkerOrderFeedbacks,
markAdminWorkOrderProblem,
@@ -44,6 +47,7 @@ import {
reviewAdminWorkerCancelRequest,
resolveAdminWorkerOrderFeedback,
resolveAdminProblemWorkOrder,
resolveAdminAfterSalesCase,
reviewAdminWorkerUser,
resetAdminWorkerPassword,
saveAdminWorkerFinanceConfig,
@@ -908,6 +912,74 @@ router.get(
}),
)
router.get(
'/worker-platform/after-sales-cases',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => listAdminAfterSalesCases(req.query), {
successMessage: 'ok',
errorMessage: '读取售后问题单失败',
scope: '[admin/worker-platform/after-sales-cases]',
}),
)
router.get(
'/worker-platform/after-sales-cases/:caseId/events',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler((req) => getAdminAfterSalesCaseEvents(String(req.params.caseId || '')), {
successMessage: 'ok',
errorMessage: '读取售后问题单记录失败',
scope: '[admin/worker-platform/after-sales-cases/:caseId/events]',
}),
)
router.post(
'/worker-platform/orders/:workOrderId/after-sales-cases',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
createAdminAfterSalesCase(
String(req.params.workOrderId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '售后问题单已创建',
errorMessage: '创建售后问题单失败',
scope: '[admin/worker-platform/orders/:workOrderId/after-sales-cases]',
audit: (req, data) => ({
action: 'after_sales_case_created',
targetType: 'work_order',
targetId: String(req.params.workOrderId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/after-sales-cases/:caseId/resolve',
requireAdminRoles(['admin', 'operator', 'support']),
createJsonHandler(
(req) =>
resolveAdminAfterSalesCase(
String(req.params.caseId || ''),
req.body || {},
req.adminSession?.username || '',
),
{
successMessage: '售后问题单已处置',
errorMessage: '处置售后问题单失败',
scope: '[admin/worker-platform/after-sales-cases/:caseId/resolve]',
audit: (req, data) => ({
action: 'after_sales_case_resolved',
targetType: 'after_sales_case',
targetId: String(req.params.caseId || ''),
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
}),
},
),
)
router.post(
'/worker-platform/orders/:workOrderId/sharing',
requireAdminRoles(['admin', 'operator']),
+30
View File
@@ -39,9 +39,11 @@ import {
supplementWorkerAcceptedOrderEvidence,
submitWorkerOrderAcceptance,
getWorkerCancelRequestSummary,
getWorkerAfterSalesCaseSummary,
getWorkerAnnouncement,
getWorkerOrderFeedbackSummary,
submitWorkerCancelRequest,
submitWorkerAfterSalesCaseResponse,
submitWorkerOrderFeedback,
} from '../services/worker-platform/index.js'
import { buildNotFoundPayload, createRouteHandler } from '../utils/http.js'
@@ -489,6 +491,34 @@ router.get(
}),
)
router.get(
'/orders/after-sales-cases',
requireActiveWorker,
createRouteHandler((req) => getWorkerAfterSalesCaseSummary(getRequiredWorkerSession(req)), {
successMessage: 'ok',
errorMessage: '读取售后问题单失败',
scope: '[worker/orders/after-sales-cases]',
}),
)
router.post(
'/orders/after-sales-cases/:caseId/response',
requireActiveWorker,
createRouteHandler(
(req) =>
submitWorkerAfterSalesCaseResponse(
String(req.params.caseId || ''),
req.body || {},
getRequiredWorkerSession(req),
),
{
successMessage: '售后说明已提交,等待客服处理',
errorMessage: '提交售后说明失败',
scope: '[worker/orders/after-sales-cases/:caseId/response]',
},
),
)
router.post(
'/orders/:workOrderId/feedbacks',
requireActiveWorker,