feat(douyin-mashida): 新增抖音券核销后台界面(列表/核销/冲正/同步/对账/作废)
抖音订单并非纯自动发货:内部 SKU 命中 AFFILIATE_DASH_SKU_MAPPING 才走自动通道, 未命中显式回落人工,且核销依赖买家自己到 /redeem 输订单号。此前核销侧在后台完全 不可见:自动核销是 void .catch(warn) 只落日志,cancelVerify 出网方法已就绪但没有入口。 照快手电子凭证的骨架做一套抖音版(两张表两套状态机,不复用): - 券码状态、平台侧状态、同步错误全部可视化,支持只看同步失败 - 核销/冲正/重新同步/平台对账/重发券码/作废,每个写操作都带审计 - 券码列显示「核销实际会用的券码」(platform_cert_no 优先),平台改过名时额外标注 - 冲正先打平台 cancelVerify 再回退本地,避免本地与平台状态漂移
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import { apiGet, apiPost } from '@/lib/http'
|
||||
import type {
|
||||
AdminDouyinMashidaCertificateActionPayload,
|
||||
AdminDouyinMashidaCertificateCheckResult,
|
||||
AdminDouyinMashidaCertificateInvalidateResult,
|
||||
AdminDouyinMashidaCertificateListPayload,
|
||||
AdminDouyinMashidaCertificateListResult,
|
||||
AdminDouyinMashidaCertificateResendResult,
|
||||
AdminDouyinMashidaCertificateSyncResult,
|
||||
AdminDouyinMashidaCertificateVerifyResult,
|
||||
AdminDouyinMashidaOrderDetailResult,
|
||||
} from '@/types/admin'
|
||||
|
||||
/** 后台「抖音券核销」接口。与快手电子凭证(kuaishou-industry)是两套独立的表与状态机。 */
|
||||
const BASE = '/api/v1/admin/douyin-mashida'
|
||||
|
||||
export function fetchAdminDouyinMashidaCertificates(
|
||||
params: AdminDouyinMashidaCertificateListPayload = {},
|
||||
) {
|
||||
return apiGet<AdminDouyinMashidaCertificateListResult>(
|
||||
`${BASE}/certificates`,
|
||||
params as Record<string, unknown>,
|
||||
)
|
||||
}
|
||||
|
||||
export function verifyAdminDouyinMashidaCertificate(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateVerifyResult>(`${BASE}/certificates/verify`, payload)
|
||||
}
|
||||
|
||||
export function cancelAdminDouyinMashidaCertificateVerify(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateVerifyResult>(
|
||||
`${BASE}/certificates/cancel-verify`,
|
||||
payload,
|
||||
)
|
||||
}
|
||||
|
||||
export function syncAdminDouyinMashidaCertificate(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateSyncResult>(`${BASE}/certificates/sync`, payload)
|
||||
}
|
||||
|
||||
export function checkAdminDouyinMashidaCertificate(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateCheckResult>(`${BASE}/certificates/check`, payload)
|
||||
}
|
||||
|
||||
export function resendAdminDouyinMashidaCertificate(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateResendResult>(`${BASE}/certificates/resend`, payload)
|
||||
}
|
||||
|
||||
export function invalidateAdminDouyinMashidaCertificate(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaCertificateInvalidateResult>(
|
||||
`${BASE}/certificates/invalidate`,
|
||||
payload,
|
||||
)
|
||||
}
|
||||
|
||||
export function fetchAdminDouyinMashidaOrderDetail(
|
||||
payload: AdminDouyinMashidaCertificateActionPayload,
|
||||
) {
|
||||
return apiPost<AdminDouyinMashidaOrderDetailResult>(`${BASE}/order-detail`, payload)
|
||||
}
|
||||
@@ -5,6 +5,7 @@ export * from './users'
|
||||
export * from './audit-logs'
|
||||
export * from './platform-config'
|
||||
export * from './kuaishou-industry'
|
||||
export * from './douyin-mashida-certificate'
|
||||
export * from './orders'
|
||||
export * from './tasks'
|
||||
export * from './dev-mock'
|
||||
|
||||
Reference in New Issue
Block a user