Files
monisuo/flutter_monisuo/lib/data/models/order_models.dart
2026-04-05 23:28:38 +08:00

240 lines
6.4 KiB
Dart

/// 交易订单模型
class OrderTrade {
final int id;
final String orderNo;
final int userId;
final String coinCode;
final int direction; // 1=买入, 2=卖出
final String price;
final String quantity;
final String amount;
final int status; // 1=待处理, 2=已完成, 3=已取消
final DateTime? createTime;
final DateTime? updateTime;
OrderTrade({
required this.id,
required this.orderNo,
required this.userId,
required this.coinCode,
required this.direction,
required this.price,
required this.quantity,
required this.amount,
required this.status,
this.createTime,
this.updateTime,
});
factory OrderTrade.fromJson(Map<String, dynamic> json) {
return OrderTrade(
id: json['id'] as int? ?? 0,
orderNo: json['orderNo'] as String? ?? '',
userId: json['userId'] as int? ?? 0,
coinCode: json['coinCode'] as String? ?? '',
direction: json['direction'] as int? ?? 1,
price: json['price']?.toString() ?? '0.00',
quantity: json['quantity']?.toString() ?? '0',
amount: json['amount']?.toString() ?? '0.00',
status: json['status'] as int? ?? 1,
createTime: json['createTime'] != null
? DateTime.tryParse(json['createTime'])
: null,
updateTime: json['updateTime'] != null
? DateTime.tryParse(json['updateTime'])
: null,
);
}
/// 方向文字
String get directionText => direction == 1 ? '买入' : '卖出';
/// 状态文字
String get statusText {
switch (status) {
case 1:
return '待处理';
case 2:
return '已完成';
case 3:
return '已取消';
default:
return '未知';
}
}
/// 是否为买入
bool get isBuy => direction == 1;
}
/// 充提订单模型
class OrderFund {
final int id;
final String orderNo;
final int userId;
final String username;
final int type; // 1=充值, 2=提现
final String amount;
final String? fee; // 手续费
final String? receivableAmount; // 应收款项
final int status;
// 充值状态: 1=待付款, 2=待确认, 3=已完成, 4=已驳回, 5=已取消
// 提现状态: 1=待审批, 2=已完成, 3=已驳回, 4=已取消, 5=待财务审核
final int? walletId; // 冷钱包ID(充值)
final String? walletAddress; // 钱包地址(充值/提现)
final String? network; // 提现网络类型
final String? withdrawContact; // 提现联系方式
final String remark;
final String? rejectReason;
final String? adminRemark;
final DateTime? createTime;
final DateTime? payTime; // 用户确认打款时间
final DateTime? confirmTime; // 管理员确认时间
OrderFund({
required this.id,
required this.orderNo,
required this.userId,
required this.username,
required this.type,
required this.amount,
this.fee,
this.receivableAmount,
required this.status,
this.walletId,
this.walletAddress,
this.network,
this.withdrawContact,
required this.remark,
this.rejectReason,
this.adminRemark,
this.createTime,
this.payTime,
this.confirmTime,
});
factory OrderFund.fromJson(Map<String, dynamic> json) {
return OrderFund(
id: json['id'] as int? ?? 0,
orderNo: json['orderNo'] as String? ?? '',
userId: json['userId'] as int? ?? 0,
username: json['username'] as String? ?? '',
type: json['type'] as int? ?? 1,
amount: json['amount']?.toString() ?? '0.00',
fee: json['fee']?.toString(),
receivableAmount: json['receivableAmount']?.toString(),
status: json['status'] as int? ?? 1,
walletId: json['walletId'] as int?,
walletAddress: json['walletAddress'] as String?,
network: json['network'] as String?,
withdrawContact: json['withdrawContact'] as String?,
remark: json['remark']?.toString() ?? '',
rejectReason: json['rejectReason'] as String?,
adminRemark: json['adminRemark'] as String?,
createTime: json['createTime'] != null
? DateTime.tryParse(json['createTime'])
: null,
payTime: json['payTime'] != null
? DateTime.tryParse(json['payTime'])
: null,
confirmTime: json['confirmTime'] != null
? DateTime.tryParse(json['confirmTime'])
: null,
);
}
/// 订单类型文字
String get typeText => type == 1 ? '充值' : '提现';
/// 状态文字 (根据类型区分)
String get statusText {
if (type == 1) {
// 充值状态
switch (status) {
case 1:
return '待付款';
case 2:
return '待确认';
case 3:
return '已完成';
case 4:
return '已驳回';
case 5:
return '已取消';
default:
return '未知';
}
} else {
// 提现状态
switch (status) {
case 1:
return '待审批';
case 2:
return '已出款';
case 3:
return '已驳回';
case 4:
return '已取消';
case 5:
return '待财务审核';
default:
return '未知';
}
}
}
/// 是否为充值
bool get isDeposit => type == 1;
/// 是否可取消
/// 充值: 仅待付款可取消
/// 提现: 仅待审批可取消
bool get canCancel {
if (type == 1) {
return status == 1; // 充值待付款
} else {
return status == 1; // 提现待审批
}
}
/// 是否可确认打款 (仅充值待付款)
bool get canConfirmPay => type == 1 && status == 1;
}
/// 冷钱包模型
class ColdWallet {
final int id;
final String name;
final String address;
final String network;
final bool isDefault;
final int status; // 0=禁用, 1=启用
final DateTime? createTime;
ColdWallet({
required this.id,
required this.name,
required this.address,
required this.network,
required this.isDefault,
required this.status,
this.createTime,
});
factory ColdWallet.fromJson(Map<String, dynamic> json) {
return ColdWallet(
id: json['id'] as int? ?? 0,
name: json['name'] as String? ?? '',
address: json['address'] as String? ?? '',
network: json['network'] as String? ?? 'TRC20',
isDefault: json['isDefault'] as bool? ?? false,
status: json['status'] as int? ?? 1,
createTime: json['createTime'] != null
? DateTime.tryParse(json['createTime'])
: null,
);
}
bool get isEnabled => status == 1;
}