修复退款复核与发布安全边界
补齐退款人工复核、刷新恢复、会话隔离和旧冷备导入兼容 强化真实微信退款对账开关、重复环境变量和生产发布门禁 优化公开作品资产授权查询并保持实时撤销语义 统一后台微信渠道、退款追回流水和画布正式资源测试契约 补齐生成与素材侧栏回归测试
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
executeAdminRechargeRefund,
|
||||
getAdminUserDetail,
|
||||
listAdminRechargeOrders,
|
||||
resolveAdminRechargeRefundManualReview,
|
||||
} from './adminApiClient';
|
||||
|
||||
afterEach(() => {
|
||||
@@ -89,3 +90,28 @@ test('退款执行使用独立 execute 管理员路由', async () => {
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
test('退款人工复核使用独立 resolve 管理员路由', async () => {
|
||||
const fetchMock = vi.fn().mockResolvedValue(
|
||||
new Response(JSON.stringify({outRefundNo: 'refund-1'}), {status: 200}),
|
||||
);
|
||||
vi.stubGlobal('fetch', fetchMock);
|
||||
|
||||
await resolveAdminRechargeRefundManualReview('token-1', {
|
||||
outRefundNo: 'refund-1',
|
||||
reason: '已核对微信商户平台原始账单',
|
||||
});
|
||||
|
||||
expect(String(fetchMock.mock.calls[0]?.[0])).toBe(
|
||||
'/admin/api/profile/recharge-refunds/manual-review/resolve',
|
||||
);
|
||||
expect(fetchMock.mock.calls[0]?.[1]).toEqual(
|
||||
expect.objectContaining({
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
outRefundNo: 'refund-1',
|
||||
reason: '已核对微信商户平台原始账单',
|
||||
}),
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -30,6 +30,7 @@ import type {
|
||||
AdminRechargeOrderListResponse,
|
||||
AdminRechargeRefundActionResponse,
|
||||
AdminRechargeRefundExecuteRequest,
|
||||
AdminRechargeRefundManualReviewResolveRequest,
|
||||
AdminRechargeRefundPreviewRequest,
|
||||
AdminRechargeRefundPreviewResponse,
|
||||
AdminRechargeRefundRegisterRequest,
|
||||
@@ -641,6 +642,16 @@ export function registerAdminRechargeRefund(
|
||||
);
|
||||
}
|
||||
|
||||
export function resolveAdminRechargeRefundManualReview(
|
||||
token: string,
|
||||
payload: AdminRechargeRefundManualReviewResolveRequest,
|
||||
) {
|
||||
return request<AdminRechargeRefundActionResponse>(
|
||||
'/admin/api/profile/recharge-refunds/manual-review/resolve',
|
||||
{method: 'POST', token, body: payload},
|
||||
);
|
||||
}
|
||||
|
||||
export function updateAdminWalletRestriction(
|
||||
token: string,
|
||||
payload: AdminWalletRestrictionRequest,
|
||||
|
||||
@@ -797,6 +797,9 @@ export interface AdminRechargeRefundPayload {
|
||||
unrecoveredPoints: number;
|
||||
recoveryStatus: string;
|
||||
lastErrorCode?: string | null;
|
||||
manualReviewResolvedByAdminUserId?: string | null;
|
||||
manualReviewResolutionReason?: string | null;
|
||||
manualReviewResolvedAtMicros?: number | null;
|
||||
}
|
||||
|
||||
export interface AdminRechargeRefundHoldPayload {
|
||||
@@ -876,6 +879,11 @@ export interface AdminRechargeRefundRegisterRequest {
|
||||
outRefundNo: string;
|
||||
}
|
||||
|
||||
export interface AdminRechargeRefundManualReviewResolveRequest {
|
||||
outRefundNo: string;
|
||||
reason: string;
|
||||
}
|
||||
|
||||
export interface AdminWalletRestrictionRequest {
|
||||
userId: string;
|
||||
frozen: boolean;
|
||||
|
||||
Reference in New Issue
Block a user