增加卡券销毁冻结状态校验
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { asJsonObject, type JsonObject } from '../../types/json.js'
|
||||
import { asJsonObject, type JsonObject } from '../../types/json.js'
|
||||
import {
|
||||
findKuaishouIndustryVoucherByCode,
|
||||
listKuaishouIndustryVouchersByOid,
|
||||
@@ -12,7 +12,12 @@ import { getOrderById } from '../../repositories/order-repo.js'
|
||||
import { getTaskById } from '../../repositories/task-repo.js'
|
||||
import { createHttpError } from '../../utils/http.js'
|
||||
import { maskSecret } from '../../utils/masking.js'
|
||||
import { checkKuaishouIndustryEticketAvailable } from '../platforms/kuaishou-industry/check-available-service.js'
|
||||
import {
|
||||
checkKuaishouIndustryEticketAvailable,
|
||||
isKuaishouIndustryEticketDestroyableStatus,
|
||||
KUAISHOU_INDUSTRY_DESTROYABLE_DISPLAY_STATUS,
|
||||
resolveKuaishouIndustryEticketDisplayStatus,
|
||||
} from '../platforms/kuaishou-industry/check-available-service.js'
|
||||
import {
|
||||
getKuaishouIndustrySourceConfig,
|
||||
listKuaishouIndustryShopConfigs,
|
||||
@@ -108,7 +113,10 @@ export async function checkAdminKuaishouIndustryVoucherAvailable(input: JsonObje
|
||||
const payload = buildVoucherOpenApiPayload(input, voucher)
|
||||
|
||||
assertRequired(payload.sellerId, '卖家编号未填写')
|
||||
assertRequired(payload.eticketType || payload.bizTypeCode, '电子凭证类型未填写(请选择券码或手动填写类型)')
|
||||
assertRequired(
|
||||
payload.eticketType || payload.bizTypeCode,
|
||||
'电子凭证类型未填写(请选择券码或手动填写类型)',
|
||||
)
|
||||
assertEtickets(payload.etickets, '电子凭证列表未填写')
|
||||
|
||||
const result = mapOpenApiResult(await checkKuaishouIndustryEticketAvailable(payload))
|
||||
@@ -200,6 +208,45 @@ export async function resendAdminKuaishouIndustryVoucherCode(input: JsonObject =
|
||||
|
||||
export async function destroyAdminKuaishouIndustryVoucherByCode(input: JsonObject = {}) {
|
||||
const voucher = await resolveRequiredVoucher(input)
|
||||
const checkPayload = buildVoucherOpenApiPayload(input, voucher)
|
||||
|
||||
assertRequired(checkPayload.sellerId, '卖家编号未填写,无法在销毁前查询卡券状态')
|
||||
assertRequired(
|
||||
checkPayload.eticketType || checkPayload.bizTypeCode,
|
||||
'电子凭证类型未填写,无法在销毁前查询卡券状态',
|
||||
)
|
||||
assertEtickets(checkPayload.etickets, '电子凭证列表未填写,无法在销毁前查询卡券状态')
|
||||
|
||||
const checkResult = await checkKuaishouIndustryEticketAvailable(checkPayload)
|
||||
if (!checkResult.success || checkResult.skippedReason) {
|
||||
const platformMessage = String(
|
||||
checkResult.error || checkResult.response?.error_msg || checkResult.response?.msg || '',
|
||||
).trim()
|
||||
throw createHttpError(
|
||||
`销毁前查询卡券状态失败,已取消销毁${platformMessage ? `:${platformMessage}` : ''}`,
|
||||
{
|
||||
statusCode: 409,
|
||||
errorCode: 'admin_kuaishou_industry_destroy_status_check_failed',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const displayStatus = resolveKuaishouIndustryEticketDisplayStatus(
|
||||
checkResult.response,
|
||||
voucher.voucher_code,
|
||||
)
|
||||
if (!isKuaishouIndustryEticketDestroyableStatus(displayStatus)) {
|
||||
throw createHttpError(
|
||||
displayStatus
|
||||
? `卡券当前展示状态为 ${displayStatus},仅 ${KUAISHOU_INDUSTRY_DESTROYABLE_DISPLAY_STATUS}(冻结)状态可以销毁`
|
||||
: `未获取到卡券展示状态,仅 ${KUAISHOU_INDUSTRY_DESTROYABLE_DISPLAY_STATUS}(冻结)状态可以销毁`,
|
||||
{
|
||||
statusCode: 409,
|
||||
errorCode: 'admin_kuaishou_industry_voucher_not_frozen',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const task = voucher.task_id ? await getTaskById(voucher.task_id) : null
|
||||
const destroyInput: Parameters<typeof destroyKuaishouIndustryVoucher>[1] = {
|
||||
source: 'admin_tool_manual_destroy',
|
||||
|
||||
Reference in New Issue
Block a user