import '../../core/constants/api_endpoints.dart'; import '../../core/network/api_response.dart'; import '../../core/network/dio_client.dart'; import '../models/account_models.dart'; /// 资产服务 class AssetService { final DioClient _client; AssetService(this._client); /// 获取资产总览 Future> getOverview() async { final response = await _client.get>( ApiEndpoints.assetOverview, ); if (response.success && response.data != null) { return ApiResponse.success( AssetOverview.fromJson(response.data!), response.message, ); } return ApiResponse.fail(response.message ?? '获取资产总览失败'); } /// 获取资金账户 Future> getFundAccount() async { final response = await _client.get>( ApiEndpoints.fundAccount, ); if (response.success && response.data != null) { // 后端返回格式: {"fund": {...}} final fundData = response.data!['fund'] as Map?; if (fundData != null) { return ApiResponse.success( AccountFund.fromJson(fundData), response.message, ); } } return ApiResponse.fail(response.message ?? '获取资金账户失败'); } /// 获取交易账户 Future>> getTradeAccount() async { final response = await _client.get>( ApiEndpoints.tradeAccount, ); if (response.success && response.data != null) { // 后端返回格式: {"positions": [...]} final list = response.data!['positions'] as List?; final accounts = list?.map((e) => AccountTrade.fromJson(e as Map)).toList() ?? []; return ApiResponse.success(accounts, response.message); } return ApiResponse.fail(response.message ?? '获取交易账户失败'); } /// 资金划转 Future> transfer({ required int direction, required String amount, }) async { return _client.post( ApiEndpoints.transfer, data: { 'direction': direction, 'amount': amount, }, ); } /// 获取资金流水 Future>> getFlow({ int? flowType, int pageNum = 1, int pageSize = 20, }) async { final params = { 'pageNum': pageNum, 'pageSize': pageSize, }; if (flowType != null) params['flowType'] = flowType; return _client.get>( ApiEndpoints.assetFlow, queryParameters: params, ); } }