import '../../domain/entities/trade_order.dart'; class TradeOrderModel extends TradeOrder { const TradeOrderModel({ required super.id, required super.orderNo, required super.orderType, required super.status, required super.price, required super.quantity, required super.filledQuantity, required super.remainingQuantity, required super.averagePrice, required super.totalAmount, required super.createdAt, super.completedAt, super.cancelledAt, }); factory TradeOrderModel.fromJson(Map json) { return TradeOrderModel( id: json['id']?.toString() ?? '', orderNo: json['orderNo']?.toString() ?? '', orderType: _parseOrderType(json['type']), status: _parseStatus(json['status']), price: json['price']?.toString() ?? '0', quantity: json['quantity']?.toString() ?? '0', filledQuantity: json['filledQuantity']?.toString() ?? '0', remainingQuantity: json['remainingQuantity']?.toString() ?? '0', averagePrice: json['averagePrice']?.toString() ?? '0', totalAmount: json['totalAmount']?.toString() ?? '0', createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt'].toString()) : DateTime.now(), completedAt: json['completedAt'] != null ? DateTime.parse(json['completedAt'].toString()) : null, cancelledAt: json['cancelledAt'] != null ? DateTime.parse(json['cancelledAt'].toString()) : null, ); } static OrderType _parseOrderType(String? type) { switch (type) { case 'BUY': return OrderType.buy; case 'SELL': return OrderType.sell; default: return OrderType.buy; } } static OrderStatus _parseStatus(String? status) { switch (status) { case 'PENDING': return OrderStatus.pending; case 'PARTIAL': return OrderStatus.partial; case 'FILLED': return OrderStatus.filled; case 'CANCELLED': return OrderStatus.cancelled; default: return OrderStatus.pending; } } } /// 订单列表响应 class OrdersPageModel { final List data; final int total; const OrdersPageModel({ required this.data, required this.total, }); factory OrdersPageModel.fromJson(Map json) { final dataList = (json['data'] as List?) ?? []; return OrdersPageModel( data: dataList.map((e) => TradeOrderModel.fromJson(e)).toList(), total: json['total'] ?? 0, ); } }