fix(reporting-service): 修复面对面结算数据解包问题
wallet-service 返回 { success, data, timestamp } 包装格式,
getOfflineSettlementSummary 需要用 response.data.data 解包才能获取真正的数据。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
4df9895863
commit
9953f0eee5
|
|
@ -94,6 +94,43 @@ export interface AllSystemAccountsLedgerResponse {
|
||||||
}>;
|
}>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [2026-01-06] 新增:手续费归集账户汇总响应类型
|
||||||
|
export interface FeeCollectionSummaryResponse {
|
||||||
|
accountSequence: string;
|
||||||
|
accountBalance: number;
|
||||||
|
totalAmount: number;
|
||||||
|
totalCount: number;
|
||||||
|
breakdown: Array<{
|
||||||
|
feeType: string;
|
||||||
|
amount: number;
|
||||||
|
count: number;
|
||||||
|
}>;
|
||||||
|
byMonth: Array<{
|
||||||
|
month: string;
|
||||||
|
amount: number;
|
||||||
|
count: number;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
|
||||||
|
// [2026-01-06] 新增:手续费归集流水条目
|
||||||
|
export interface FeeCollectionEntryDTO {
|
||||||
|
id: string;
|
||||||
|
feeType: string;
|
||||||
|
amount: number;
|
||||||
|
refOrderId: string | null;
|
||||||
|
memo: string | null;
|
||||||
|
createdAt: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
// [2026-01-06] 新增:手续费归集流水列表响应
|
||||||
|
export interface FeeCollectionEntriesResponse {
|
||||||
|
entries: FeeCollectionEntryDTO[];
|
||||||
|
total: number;
|
||||||
|
page: number;
|
||||||
|
pageSize: number;
|
||||||
|
totalPages: number;
|
||||||
|
}
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class WalletServiceClient {
|
export class WalletServiceClient {
|
||||||
private readonly logger = new Logger(WalletServiceClient.name);
|
private readonly logger = new Logger(WalletServiceClient.name);
|
||||||
|
|
@ -111,6 +148,7 @@ export class WalletServiceClient {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取面对面结算统计汇总
|
* 获取面对面结算统计汇总
|
||||||
|
* [2026-01-06] 修复:wallet-service 返回 { success, data, timestamp } 包装格式,需要解包
|
||||||
*/
|
*/
|
||||||
async getOfflineSettlementSummary(params?: {
|
async getOfflineSettlementSummary(params?: {
|
||||||
startDate?: string;
|
startDate?: string;
|
||||||
|
|
@ -125,10 +163,11 @@ export class WalletServiceClient {
|
||||||
this.logger.debug(`[getOfflineSettlementSummary] 请求: ${url}`);
|
this.logger.debug(`[getOfflineSettlementSummary] 请求: ${url}`);
|
||||||
|
|
||||||
const response = await firstValueFrom(
|
const response = await firstValueFrom(
|
||||||
this.httpService.get<OfflineSettlementSummary>(url),
|
this.httpService.get<{ success: boolean; data: OfflineSettlementSummary; timestamp: string }>(url),
|
||||||
);
|
);
|
||||||
|
|
||||||
return response.data;
|
// wallet-service 返回 { success, data, timestamp } 包装格式
|
||||||
|
return response.data.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.error(`[getOfflineSettlementSummary] 失败: ${error.message}`);
|
this.logger.error(`[getOfflineSettlementSummary] 失败: ${error.message}`);
|
||||||
// 返回默认值,不阻塞报表
|
// 返回默认值,不阻塞报表
|
||||||
|
|
@ -220,4 +259,70 @@ export class WalletServiceClient {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [2026-01-06] 新增:获取手续费归集账户汇总统计
|
||||||
|
/**
|
||||||
|
* 获取手续费归集账户汇总统计
|
||||||
|
* 统计 S0000000006 账户收到的所有提现手续费
|
||||||
|
*/
|
||||||
|
async getFeeCollectionSummary(): Promise<FeeCollectionSummaryResponse> {
|
||||||
|
try {
|
||||||
|
const url = `${this.baseUrl}/api/v1/wallets/statistics/fee-collection-summary`;
|
||||||
|
this.logger.debug(`[getFeeCollectionSummary] 请求: ${url}`);
|
||||||
|
|
||||||
|
const response = await firstValueFrom(
|
||||||
|
this.httpService.get<FeeCollectionSummaryResponse>(url),
|
||||||
|
);
|
||||||
|
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.error(`[getFeeCollectionSummary] 失败: ${error.message}`);
|
||||||
|
return {
|
||||||
|
accountSequence: 'S0000000006',
|
||||||
|
accountBalance: 0,
|
||||||
|
totalAmount: 0,
|
||||||
|
totalCount: 0,
|
||||||
|
breakdown: [],
|
||||||
|
byMonth: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取手续费归集账户流水明细
|
||||||
|
*/
|
||||||
|
async getFeeCollectionEntries(params?: {
|
||||||
|
page?: number;
|
||||||
|
pageSize?: number;
|
||||||
|
feeType?: string;
|
||||||
|
startDate?: string;
|
||||||
|
endDate?: string;
|
||||||
|
}): Promise<FeeCollectionEntriesResponse> {
|
||||||
|
try {
|
||||||
|
const queryParams = new URLSearchParams();
|
||||||
|
if (params?.page) queryParams.append('page', params.page.toString());
|
||||||
|
if (params?.pageSize) queryParams.append('pageSize', params.pageSize.toString());
|
||||||
|
if (params?.feeType) queryParams.append('feeType', params.feeType);
|
||||||
|
if (params?.startDate) queryParams.append('startDate', params.startDate);
|
||||||
|
if (params?.endDate) queryParams.append('endDate', params.endDate);
|
||||||
|
|
||||||
|
const url = `${this.baseUrl}/api/v1/wallets/statistics/fee-collection-entries?${queryParams.toString()}`;
|
||||||
|
this.logger.debug(`[getFeeCollectionEntries] 请求: ${url}`);
|
||||||
|
|
||||||
|
const response = await firstValueFrom(
|
||||||
|
this.httpService.get<FeeCollectionEntriesResponse>(url),
|
||||||
|
);
|
||||||
|
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.error(`[getFeeCollectionEntries] 失败: ${error.message}`);
|
||||||
|
return {
|
||||||
|
entries: [],
|
||||||
|
total: 0,
|
||||||
|
page: 1,
|
||||||
|
pageSize: params?.pageSize ?? 50,
|
||||||
|
totalPages: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue