彻底重构-4
This commit is contained in:
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user