后端迁移后台人工兑换路由
This commit is contained in:
+36
-20
@@ -1,5 +1,3 @@
|
|||||||
// @ts-check
|
|
||||||
|
|
||||||
import { Router } from 'express'
|
import { Router } from 'express'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -15,10 +13,28 @@ import {
|
|||||||
} from '../../services/admin/admin-manual-redeem-service.js'
|
} from '../../services/admin/admin-manual-redeem-service.js'
|
||||||
import { getAdminInventorySkuSuggestions } from '../../services/admin/admin-read-service.js'
|
import { getAdminInventorySkuSuggestions } from '../../services/admin/admin-read-service.js'
|
||||||
import { createJsonHandler, requireAdminRoles } from './shared.js'
|
import { createJsonHandler, requireAdminRoles } from './shared.js'
|
||||||
|
import type {
|
||||||
|
AdminInventorySkuSuggestionRouteQuery,
|
||||||
|
AdminManualRedeemCreateRouteBody,
|
||||||
|
AdminManualRedeemRouteParams,
|
||||||
|
} from '../../types/admin-route-inputs.js'
|
||||||
|
|
||||||
/** @typedef {import('../../types/admin-route-inputs.js').AdminInventorySkuSuggestionRouteQuery} AdminInventorySkuSuggestionRouteQuery */
|
type AdminManualRedeemSessionRouteBody = {
|
||||||
/** @typedef {import('../../types/admin-route-inputs.js').AdminManualRedeemCreateRouteBody} AdminManualRedeemCreateRouteBody */
|
loginType?: string
|
||||||
/** @typedef {import('../../types/admin-route-inputs.js').AdminManualRedeemRouteParams} AdminManualRedeemRouteParams */
|
forceRecreate?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminManualRedeemMutationResult = {
|
||||||
|
task?: {
|
||||||
|
taskId?: number
|
||||||
|
taskNo?: string
|
||||||
|
status?: string
|
||||||
|
deliveryStatus?: string
|
||||||
|
}
|
||||||
|
manualRequest?: { proofValue?: string }
|
||||||
|
order?: { platformOrderId?: string }
|
||||||
|
orderItem?: { skuCode?: string }
|
||||||
|
}
|
||||||
|
|
||||||
const router = Router()
|
const router = Router()
|
||||||
|
|
||||||
@@ -26,7 +42,7 @@ router.use('/manual-redeem', requireAdminRoles(['admin', 'operator', 'support'])
|
|||||||
|
|
||||||
router.get('/manual-redeem/sku-suggestions', createJsonHandler(
|
router.get('/manual-redeem/sku-suggestions', createJsonHandler(
|
||||||
(req) => getAdminInventorySkuSuggestions(
|
(req) => getAdminInventorySkuSuggestions(
|
||||||
/** @type {AdminInventorySkuSuggestionRouteQuery} */ (req.query),
|
req.query as AdminInventorySkuSuggestionRouteQuery,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -38,7 +54,7 @@ router.get('/manual-redeem/sku-suggestions', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem', createJsonHandler(
|
router.post('/manual-redeem', createJsonHandler(
|
||||||
(req) => createAdminManualRedeemTask(
|
(req) => createAdminManualRedeemTask(
|
||||||
/** @type {AdminManualRedeemCreateRouteBody} */ (req.body),
|
req.body as AdminManualRedeemCreateRouteBody,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -46,7 +62,7 @@ router.post('/manual-redeem', createJsonHandler(
|
|||||||
errorMessage: '创建人工兑换任务失败',
|
errorMessage: '创建人工兑换任务失败',
|
||||||
scope: '[admin/manual-redeem]',
|
scope: '[admin/manual-redeem]',
|
||||||
audit: (req, data) => {
|
audit: (req, data) => {
|
||||||
const result = /** @type {{ task?: { taskId?: number, taskNo?: string }, manualRequest?: { proofValue?: string }, order?: { platformOrderId?: string }, orderItem?: { skuCode?: string } }} */ (data)
|
const result = data as AdminManualRedeemMutationResult
|
||||||
return {
|
return {
|
||||||
action: 'manual_redeem_created',
|
action: 'manual_redeem_created',
|
||||||
targetType: 'task',
|
targetType: 'task',
|
||||||
@@ -64,7 +80,7 @@ router.post('/manual-redeem', createJsonHandler(
|
|||||||
|
|
||||||
router.get('/manual-redeem/:taskId', createJsonHandler(
|
router.get('/manual-redeem/:taskId', createJsonHandler(
|
||||||
(req) => getAdminManualRedeemDetail(
|
(req) => getAdminManualRedeemDetail(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -76,8 +92,8 @@ router.get('/manual-redeem/:taskId', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem/:taskId/session', createJsonHandler(
|
router.post('/manual-redeem/:taskId/session', createJsonHandler(
|
||||||
(req) => createAdminManualRedeemSession(
|
(req) => createAdminManualRedeemSession(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
/** @type {{ loginType?: string, forceRecreate?: boolean }} */ (req.body),
|
req.body as AdminManualRedeemSessionRouteBody,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -89,7 +105,7 @@ router.post('/manual-redeem/:taskId/session', createJsonHandler(
|
|||||||
|
|
||||||
router.get('/manual-redeem/:taskId/session/summary', createJsonHandler(
|
router.get('/manual-redeem/:taskId/session/summary', createJsonHandler(
|
||||||
(req) => getAdminManualRedeemSessionSummary(
|
(req) => getAdminManualRedeemSessionSummary(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -101,7 +117,7 @@ router.get('/manual-redeem/:taskId/session/summary', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem/:taskId/session/refresh', createJsonHandler(
|
router.post('/manual-redeem/:taskId/session/refresh', createJsonHandler(
|
||||||
(req) => reloadAdminManualRedeemSession(
|
(req) => reloadAdminManualRedeemSession(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -113,7 +129,7 @@ router.post('/manual-redeem/:taskId/session/refresh', createJsonHandler(
|
|||||||
|
|
||||||
router.delete('/manual-redeem/:taskId/session', createJsonHandler(
|
router.delete('/manual-redeem/:taskId/session', createJsonHandler(
|
||||||
(req) => closeAdminManualRedeemSession(
|
(req) => closeAdminManualRedeemSession(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -125,7 +141,7 @@ router.delete('/manual-redeem/:taskId/session', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem/:taskId/confirm-role', createJsonHandler(
|
router.post('/manual-redeem/:taskId/confirm-role', createJsonHandler(
|
||||||
(req) => confirmAdminManualRedeemRole(
|
(req) => confirmAdminManualRedeemRole(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -133,7 +149,7 @@ router.post('/manual-redeem/:taskId/confirm-role', createJsonHandler(
|
|||||||
errorMessage: '确认人工兑换角色失败',
|
errorMessage: '确认人工兑换角色失败',
|
||||||
scope: '[admin/manual-redeem/:taskId/confirm-role]',
|
scope: '[admin/manual-redeem/:taskId/confirm-role]',
|
||||||
audit: (req, data) => {
|
audit: (req, data) => {
|
||||||
const result = /** @type {{ task?: { taskId?: number, taskNo?: string, status?: string } }} */ (data)
|
const result = data as AdminManualRedeemMutationResult
|
||||||
return {
|
return {
|
||||||
action: 'manual_redeem_role_confirmed',
|
action: 'manual_redeem_role_confirmed',
|
||||||
targetType: 'task',
|
targetType: 'task',
|
||||||
@@ -150,7 +166,7 @@ router.post('/manual-redeem/:taskId/confirm-role', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem/:taskId/redeem', createJsonHandler(
|
router.post('/manual-redeem/:taskId/redeem', createJsonHandler(
|
||||||
(req) => redeemAdminManualRedeemTask(
|
(req) => redeemAdminManualRedeemTask(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -158,7 +174,7 @@ router.post('/manual-redeem/:taskId/redeem', createJsonHandler(
|
|||||||
errorMessage: '执行人工兑换失败',
|
errorMessage: '执行人工兑换失败',
|
||||||
scope: '[admin/manual-redeem/:taskId/redeem]',
|
scope: '[admin/manual-redeem/:taskId/redeem]',
|
||||||
audit: (req, data) => {
|
audit: (req, data) => {
|
||||||
const result = /** @type {{ task?: { taskId?: number, taskNo?: string, status?: string, deliveryStatus?: string } }} */ (data)
|
const result = data as AdminManualRedeemMutationResult
|
||||||
return {
|
return {
|
||||||
action: 'manual_redeem_started',
|
action: 'manual_redeem_started',
|
||||||
targetType: 'task',
|
targetType: 'task',
|
||||||
@@ -176,7 +192,7 @@ router.post('/manual-redeem/:taskId/redeem', createJsonHandler(
|
|||||||
|
|
||||||
router.post('/manual-redeem/:taskId/close', createJsonHandler(
|
router.post('/manual-redeem/:taskId/close', createJsonHandler(
|
||||||
(req) => closeAdminManualRedeemTask(
|
(req) => closeAdminManualRedeemTask(
|
||||||
(/** @type {AdminManualRedeemRouteParams} */ (req.params)).taskId,
|
(req.params as AdminManualRedeemRouteParams).taskId,
|
||||||
req.adminSession || null,
|
req.adminSession || null,
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
@@ -184,7 +200,7 @@ router.post('/manual-redeem/:taskId/close', createJsonHandler(
|
|||||||
errorMessage: '关闭人工兑换任务失败',
|
errorMessage: '关闭人工兑换任务失败',
|
||||||
scope: '[admin/manual-redeem/:taskId/close]',
|
scope: '[admin/manual-redeem/:taskId/close]',
|
||||||
audit: (req, data) => {
|
audit: (req, data) => {
|
||||||
const result = /** @type {{ task?: { taskId?: number, taskNo?: string, status?: string } }} */ (data)
|
const result = data as AdminManualRedeemMutationResult
|
||||||
return {
|
return {
|
||||||
action: 'manual_redeem_closed',
|
action: 'manual_redeem_closed',
|
||||||
targetType: 'task',
|
targetType: 'task',
|
||||||
@@ -829,6 +829,13 @@
|
|||||||
- `npm run typecheck`
|
- `npm run typecheck`
|
||||||
- `npm run build`
|
- `npm run build`
|
||||||
- `npm test` 共 139 个用例通过
|
- `npm test` 共 139 个用例通过
|
||||||
|
215. 后台人工兑换路由迁移到 `.ts`:
|
||||||
|
- `src/routes/admin/manual-redeem.ts`
|
||||||
|
216. 人工兑换 SKU 建议、任务创建 / 详情、登录会话创建 / 摘要 / 刷新 / 关闭、确认角色、启动兑换和关闭任务路由已进入 TS 编译链路;route query、params、body、session body 与人工兑换 mutation audit result 补齐类型
|
||||||
|
217. Docker 内验证通过:
|
||||||
|
- `npm run typecheck`
|
||||||
|
- `npm run build`
|
||||||
|
- `npm test` 共 139 个用例通过
|
||||||
|
|
||||||
## 下一步建议
|
## 下一步建议
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user