From 9953f0eee51be30674410a7ce5b9162edcfd49bb Mon Sep 17 00:00:00 2001 From: hailin Date: Tue, 6 Jan 2026 20:23:54 -0800 Subject: [PATCH] =?UTF-8?q?fix(reporting-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=9D=A2=E5=AF=B9=E9=9D=A2=E7=BB=93=E7=AE=97=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A7=A3=E5=8C=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../wallet-service/wallet-service.client.ts | 109 +++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/backend/services/reporting-service/src/infrastructure/external/wallet-service/wallet-service.client.ts b/backend/services/reporting-service/src/infrastructure/external/wallet-service/wallet-service.client.ts index eb7d8e6c..5c8ba129 100644 --- a/backend/services/reporting-service/src/infrastructure/external/wallet-service/wallet-service.client.ts +++ b/backend/services/reporting-service/src/infrastructure/external/wallet-service/wallet-service.client.ts @@ -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() export class WalletServiceClient { 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?: { startDate?: string; @@ -125,10 +163,11 @@ export class WalletServiceClient { this.logger.debug(`[getOfflineSettlementSummary] 请求: ${url}`); const response = await firstValueFrom( - this.httpService.get(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) { this.logger.error(`[getOfflineSettlementSummary] 失败: ${error.message}`); // 返回默认值,不阻塞报表 @@ -220,4 +259,70 @@ export class WalletServiceClient { }; } } + + // [2026-01-06] 新增:获取手续费归集账户汇总统计 + /** + * 获取手续费归集账户汇总统计 + * 统计 S0000000006 账户收到的所有提现手续费 + */ + async getFeeCollectionSummary(): Promise { + try { + const url = `${this.baseUrl}/api/v1/wallets/statistics/fee-collection-summary`; + this.logger.debug(`[getFeeCollectionSummary] 请求: ${url}`); + + const response = await firstValueFrom( + this.httpService.get(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 { + 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(url), + ); + + return response.data; + } catch (error) { + this.logger.error(`[getFeeCollectionEntries] 失败: ${error.message}`); + return { + entries: [], + total: 0, + page: 1, + pageSize: params?.pageSize ?? 50, + totalPages: 0, + }; + } + } }