彻底重构-4

This commit is contained in:
yml
2026-04-09 15:51:24 +08:00
parent 60054adcc4
commit 4c395103a9
28 changed files with 1917 additions and 404 deletions
@@ -9,7 +9,11 @@ import { findClaimTokenByToken, updateClaimToken } from '../../repositories/clai
import { getOrderById } from '../../repositories/order-repo.js'
import { getOrderItemById } from '../../repositories/order-item-repo.js'
import { findTaskByClaimTokenId, updateTask } from '../../repositories/task-repo.js'
import { getCdkById, markCdkDelivered, releaseReservedCdk } from '../../repositories/cdk-repo.js'
import {
getInventoryItemById,
markInventoryItemDelivered,
releaseReservedInventoryItem,
} from '../../repositories/inventory-repo.js'
import { buildClaimUrl } from './claim-service.js'
import { createHttpError } from '../../utils/http.js'
import { formatFenToAmount, normalizeFen } from '../../utils/money.js'
@@ -151,12 +155,14 @@ export async function redeemClaimTask(token) {
})
}
const cdk = context.task.primary_inventory_item_id ? await getCdkById(context.task.primary_inventory_item_id) : null
const inventoryItem = context.task.primary_inventory_item_id
? await getInventoryItemById(context.task.primary_inventory_item_id)
: null
if (!cdk || !String(cdk.cdk_code || '').trim()) {
throw createHttpError('当前任务没有可用的预占 CDK', {
if (!inventoryItem || !String(inventoryItem.display_value || '').trim()) {
throw createHttpError('当前任务没有可用的预占库存凭据', {
statusCode: 409,
errorCode: 'claim_cdk_not_reserved',
errorCode: 'claim_inventory_not_reserved',
})
}
@@ -169,7 +175,7 @@ export async function redeemClaimTask(token) {
try {
const session = await redeemTencentBrowserSession(context.task.browser_session_id, {
code: cdk.cdk_code,
code: inventoryItem.display_value,
})
const finalRedeem = session.redeem?.final?.redeem || null
const updatedTask = await updateTask(context.task.id, {
@@ -185,7 +191,7 @@ export async function redeemClaimTask(token) {
last_error: '',
})
await markCdkDelivered(cdk.id, nowIso())
await markInventoryItemDelivered(inventoryItem.id, nowIso())
return buildClaimDetailPayload({
claimToken: context.claimToken,
@@ -312,14 +318,14 @@ async function expireClaimContext(claimToken, task) {
if (!CLAIM_TERMINAL_STATUSES.has(String(task.task_status || '')) && task.task_status !== 'redeemed') {
if (task.primary_inventory_item_id) {
await releaseReservedCdk(task.primary_inventory_item_id, now)
await releaseReservedInventoryItem(task.primary_inventory_item_id, now)
}
nextTask = await updateTask(task.id, {
task_status: 'expired',
inventory_status: 'pending',
user_action_status: 'expired',
last_error: '领取链接已过期,预占 CDK 已释放',
last_error: '领取链接已过期,预占库存项已释放',
updated_at: now,
})
}