import '../../core/constants/api_endpoints.dart'; import '../../core/network/api_response.dart'; import '../../core/network/dio_client.dart'; import '../models/order_models.dart'; /// 交易服務 class TradeService { final DioClient _client; TradeService(this._client); /// 買入 Future>> buy({ required String coinCode, required String price, required String quantity, }) async { return _client.post>( ApiEndpoints.buy, data: { 'coinCode': coinCode, 'price': price, 'quantity': quantity, }, ); } /// 賣出 Future>> sell({ required String coinCode, required String price, required String quantity, }) async { return _client.post>( ApiEndpoints.sell, data: { 'coinCode': coinCode, 'price': price, 'quantity': quantity, }, ); } /// 獲取交易記錄 Future>> getOrders({ String? coinCode, int? direction, int pageNum = 1, int pageSize = 20, }) async { final params = { 'pageNum': pageNum, 'pageSize': pageSize, }; if (coinCode != null) params['coinCode'] = coinCode; if (direction != null) params['direction'] = direction; return _client.get>( ApiEndpoints.tradeOrders, queryParameters: params, ); } /// 獲取訂單詳情 Future> getOrderDetail(String orderNo) async { final response = await _client.get>( ApiEndpoints.tradeOrderDetail, queryParameters: {'orderNo': orderNo}, ); if (response.success && response.data != null) { return ApiResponse.success( OrderTrade.fromJson(response.data!), response.message, ); } return ApiResponse.fail(response.message ?? '獲取訂單詳情失敗'); } }