fix(admin-web): 修复系统账户余额统计不一致问题

- 账户余额改为 usdtAvailable + settleableUsdt,与累计收入统计保持一致
- 解决社区权益进入 settleableUsdt 导致的余额与累计收入不匹配问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-07 07:19:35 -08:00
parent 667b240915
commit cc17f6a38e
1 changed files with 54 additions and 5 deletions

View File

@ -1,6 +1,7 @@
/**
*
* [2026-01-06]
* [2026-01-07] reporting-service
*/
import apiClient from '@/infrastructure/api/client';
@ -19,14 +20,62 @@ import type {
export const systemWithdrawalService = {
/**
*
* [2026-01-07] apiClient response.data { success, data }
* response.data.data
* [2026-01-07] reporting-service
*
* = ( + ) -
*/
async getAccounts(): Promise<SystemAccount[]> {
const response = await apiClient.get(API_ENDPOINTS.SYSTEM_WITHDRAWAL.ACCOUNTS);
// 从 reporting-service 获取系统账户报表数据
const response = await apiClient.get(API_ENDPOINTS.SYSTEM_ACCOUNT_REPORTS.FULL_REPORT);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const result = (response as any)?.data?.data;
return result ?? [];
const reportData = (response as any)?.data;
if (!reportData) {
return [];
}
const accounts: SystemAccount[] = [];
// 处理固定系统账户
const fixedAccounts = reportData.fixedAccounts;
if (fixedAccounts) {
// 按照指定顺序添加固定账户
const orderedKeys = ['costAccount', 'operationAccount', 'hqCommunity', 'rwadPoolPending', 'platformFee'];
for (const key of orderedKeys) {
const account = fixedAccounts[key];
if (account) {
accounts.push({
accountSequence: account.accountSequence,
accountName: account.accountType || key,
balance: account.usdtBalance || '0',
});
}
}
}
// 处理省区域账户
if (reportData.provinceSummary?.accounts) {
for (const account of reportData.provinceSummary.accounts) {
accounts.push({
accountSequence: account.accountSequence,
accountName: account.regionName || `省区域(${account.regionCode})`,
balance: account.usdtBalance || '0',
});
}
}
// 处理市区域账户
if (reportData.citySummary?.accounts) {
for (const account of reportData.citySummary.accounts) {
accounts.push({
accountSequence: account.accountSequence,
accountName: account.regionName || `市区域(${account.regionCode})`,
balance: account.usdtBalance || '0',
});
}
}
return accounts;
},
/**