diff --git a/frontend/mining-admin-web/src/features/users/api/users.api.ts b/frontend/mining-admin-web/src/features/users/api/users.api.ts index 05e5ac7b..79f1ad12 100644 --- a/frontend/mining-admin-web/src/features/users/api/users.api.ts +++ b/frontend/mining-admin-web/src/features/users/api/users.api.ts @@ -11,15 +11,76 @@ import type { } from '@/types/user'; import type { PaginatedResponse, PaginationParams } from '@/types/api'; +// 转换后端用户数据到前端 UserOverview 格式 +function transformUserOverview(backendUser: any): UserOverview { + return { + accountSequence: backendUser.accountSequence, + nickname: backendUser.realName || backendUser.nickname || '', + phone: backendUser.phone || '', + phoneNumberMasked: backendUser.phone, + avatar: null, + hasAdopted: backendUser.contribution?.hasAdopted || false, + totalContribution: backendUser.contribution?.totalContribution || '0', + effectiveContribution: backendUser.contribution?.effectiveContribution || '0', + miningBalance: backendUser.mining?.availableBalance || '0', + tradingBalance: backendUser.trading?.shareBalance || '0', + frozenBalance: '0', + personalAdoptions: 0, + teamAdoptions: 0, + referrerId: null, + status: backendUser.status?.toLowerCase() as 'active' | 'frozen' | 'deactivated', + isOnline: false, + createdAt: backendUser.createdAt, + }; +} + +// 转换后端用户详情到前端 UserDetail 格式 +function transformUserDetail(backendUser: any): UserDetail { + return { + ...transformUserOverview(backendUser), + referrerAccountSequence: null, + directReferralCount: backendUser.contribution?.directReferralCount || 0, + directReferralAdoptedCount: 0, + teamSize: 0, + teamAdoptedCount: 0, + contributions: { + personal: backendUser.contribution?.personalContribution || '0', + systemOperation: '0', + systemProvince: '0', + systemCity: '0', + teamLevel: backendUser.contribution?.teamLevelContribution || '0', + teamBonus: backendUser.contribution?.teamBonusContribution || '0', + total: backendUser.contribution?.totalContribution || '0', + }, + kycStatus: backendUser.kycStatus, + registeredAt: backendUser.createdAt, + }; +} + export const usersApi = { getList: async (params: PaginationParams & { keyword?: string }): Promise> => { - const response = await apiClient.get('/users', { params }); - return response.data.data; + // 转换参数名: keyword -> search + const apiParams = { + page: params.page, + pageSize: params.pageSize, + search: params.keyword, + }; + const response = await apiClient.get('/users', { params: apiParams }); + // 后端返回格式: { data: [...], pagination: { page, pageSize, total, totalPages } } + // 前端期望格式: { items: [...], total, page, pageSize, totalPages } + const result = response.data.data; + return { + items: (result.data || []).map((user: any) => transformUserOverview(user)), + total: result.pagination?.total || 0, + page: result.pagination?.page || 1, + pageSize: result.pagination?.pageSize || 20, + totalPages: result.pagination?.totalPages || 0, + }; }, getDetail: async (accountSequence: string): Promise => { const response = await apiClient.get(`/users/${accountSequence}`); - return response.data.data; + return transformUserDetail(response.data.data); }, getContributionRecords: async (