diff --git a/frontend/mining-app/lib/data/datasources/remote/mining_remote_datasource.dart b/frontend/mining-app/lib/data/datasources/remote/mining_remote_datasource.dart index 77b3aa5e..40c8c8a5 100644 --- a/frontend/mining-app/lib/data/datasources/remote/mining_remote_datasource.dart +++ b/frontend/mining-app/lib/data/datasources/remote/mining_remote_datasource.dart @@ -49,16 +49,24 @@ class MiningRemoteDataSourceImpl implements MiningRemoteDataSource { queryParameters: {'page': page, 'pageSize': pageSize}, ); final data = response.data; - final items = (data['items'] as List? ?? data['records'] as List? ?? []) - .map((json) => MiningRecordModel.fromJson(json)) - .toList(); - final pagination = data['pagination'] ?? {}; + // mining-service 返回格式: { data: [...], total: ... } + final rawItems = data['data'] as List? ?? data['items'] as List? ?? data['records'] as List? ?? []; + final items = rawItems.map((json) => MiningRecordModel.fromJson({ + 'id': json['id']?.toString() ?? '', + 'accountSequence': accountSequence, + 'distributionMinute': json['miningMinute']?.toString() ?? json['distributionMinute'] ?? '', + 'contributionRatio': json['contributionRatio']?.toString() ?? '0', + 'shareAmount': json['minedAmount']?.toString() ?? json['shareAmount'] ?? '0', + 'priceSnapshot': json['secondDistribution']?.toString() ?? json['priceSnapshot'] ?? '0', + 'createdAt': json['createdAt'], + })).toList(); + final total = data['total'] ?? items.length; return MiningRecordsPage( items: items, - total: pagination['total'] ?? items.length, - page: pagination['page'] ?? page, - pageSize: pagination['pageSize'] ?? pageSize, - totalPages: pagination['totalPages'] ?? 1, + total: total, + page: page, + pageSize: pageSize, + totalPages: (total / pageSize).ceil(), ); } catch (e) { throw ServerException(e.toString());