/// 订单状态模型类 class KROrderStatus { /// 订单ID final int kr_id; /// 用户ID final int kr_userId; /// 订单编号 final String kr_orderNo; /// 订单类型 final int kr_type; /// 购买数量 final int kr_quantity; /// 单价 final double kr_price; /// 总金额 final double kr_amount; /// 赠送金额 final double kr_giftAmount; /// 折扣 final double kr_discount; /// 优惠券码 final String? kr_coupon; /// 优惠券折扣金额 final double kr_couponDiscount; /// 佣金 final double kr_commission; /// 支付方式 final String kr_method; /// 手续费 final double kr_feeAmount; /// 交易号 final String kr_tradeNo; /// 订单状态 final int kr_status; /// 订阅ID final int kr_subscribeId; /// 订阅信息 final KRSubscribe? kr_subscribe; /// 创建时间 final int kr_createdAt; /// 更新时间 final int kr_updatedAt; /// 订单状态枚举 static const int kr_statusPending = 0; // 待支付 static const int kr_statusPaid = 1; // 已支付 static const int kr_statusCancelled = 2; // 已取消 static const int kr_statusRefunded = 3; // 已退款 static const int kr_statusFailed = 4; // 支付失败 /// 获取订单状态描述 String get kr_statusText { switch (kr_status) { case kr_statusPending: return '待支付'; case kr_statusPaid: return '已支付'; case kr_statusCancelled: return '已取消'; case kr_statusRefunded: return '已退款'; case kr_statusFailed: return '支付失败'; default: return '未知状态'; } } /// 判断订单是否待支付 bool get kr_isPending => kr_status == kr_statusPending; /// 判断订单是否已支付 bool get kr_isPaid => kr_status == kr_statusPaid; /// 判断订单是否已取消 bool get kr_isCancelled => kr_status == kr_statusCancelled; /// 判断订单是否已退款 bool get kr_isRefunded => kr_status == kr_statusRefunded; /// 判断订单是否支付失败 bool get kr_isFailed => kr_status == kr_statusFailed; const KROrderStatus({ required this.kr_id, required this.kr_userId, required this.kr_orderNo, required this.kr_type, required this.kr_quantity, required this.kr_price, required this.kr_amount, required this.kr_giftAmount, required this.kr_discount, this.kr_coupon, required this.kr_couponDiscount, required this.kr_commission, required this.kr_method, required this.kr_feeAmount, required this.kr_tradeNo, required this.kr_status, required this.kr_subscribeId, this.kr_subscribe, required this.kr_createdAt, required this.kr_updatedAt, }); /// 从JSON映射创建订单状态实例 factory KROrderStatus.fromJson(Map json) { return KROrderStatus( kr_id: json['id'] as int? ?? 0, kr_userId: json['user_id'] as int? ?? 0, kr_orderNo: json['order_no'] as String? ?? '', kr_type: json['type'] as int? ?? 0, kr_quantity: json['quantity'] as int? ?? 0, kr_price: (json['price'] as num?)?.toDouble() ?? 0.0, kr_amount: (json['amount'] as num?)?.toDouble() ?? 0.0, kr_giftAmount: (json['gift_amount'] as num?)?.toDouble() ?? 0.0, kr_discount: (json['discount'] as num?)?.toDouble() ?? 0.0, kr_coupon: json['coupon'] as String?, kr_couponDiscount: (json['coupon_discount'] as num?)?.toDouble() ?? 0.0, kr_commission: (json['commission'] as num?)?.toDouble() ?? 0.0, kr_method: json['method'] as String? ?? '', kr_feeAmount: (json['fee_amount'] as num?)?.toDouble() ?? 0.0, kr_tradeNo: json['trade_no'] as String? ?? '', kr_status: json['status'] as int? ?? 0, kr_subscribeId: json['subscribe_id'] as int? ?? 0, kr_subscribe: json['subscribe'] != null ? KRSubscribe.fromJson(json['subscribe'] as Map) : null, kr_createdAt: json['created_at'] as int? ?? 0, kr_updatedAt: json['updated_at'] as int? ?? 0, ); } /// 转换为JSON映射 Map toJson() { return { 'id': kr_id, 'user_id': kr_userId, 'order_no': kr_orderNo, 'type': kr_type, 'quantity': kr_quantity, 'price': kr_price, 'amount': kr_amount, 'gift_amount': kr_giftAmount, 'discount': kr_discount, 'coupon': kr_coupon, 'coupon_discount': kr_couponDiscount, 'commission': kr_commission, 'method': kr_method, 'fee_amount': kr_feeAmount, 'trade_no': kr_tradeNo, 'status': kr_status, 'subscribe_id': kr_subscribeId, 'subscribe': kr_subscribe?.toJson(), 'created_at': kr_createdAt, 'updated_at': kr_updatedAt, }; } } /// 订阅信息模型类 class KRSubscribe { final int kr_id; final String kr_name; final String kr_description; final double kr_unitPrice; final String kr_unitTime; final List kr_discount; final int kr_replacement; final int kr_inventory; final int kr_traffic; final int kr_speedLimit; final int kr_deviceLimit; final int kr_quota; final int kr_groupId; final List kr_serverGroup; final List kr_server; final bool kr_show; final bool kr_sell; final int kr_sort; final double kr_deductionRatio; final bool kr_allowDeduction; final int kr_resetCycle; final bool kr_renewalReset; final int kr_createdAt; final int kr_updatedAt; const KRSubscribe({ required this.kr_id, required this.kr_name, required this.kr_description, required this.kr_unitPrice, required this.kr_unitTime, required this.kr_discount, required this.kr_replacement, required this.kr_inventory, required this.kr_traffic, required this.kr_speedLimit, required this.kr_deviceLimit, required this.kr_quota, required this.kr_groupId, required this.kr_serverGroup, required this.kr_server, required this.kr_show, required this.kr_sell, required this.kr_sort, required this.kr_deductionRatio, required this.kr_allowDeduction, required this.kr_resetCycle, required this.kr_renewalReset, required this.kr_createdAt, required this.kr_updatedAt, }); factory KRSubscribe.fromJson(Map json) { return KRSubscribe( kr_id: json['id'] as int? ?? 0, kr_name: json['name'] as String? ?? '', kr_description: json['description'] as String? ?? '', kr_unitPrice: (json['unit_price'] as num?)?.toDouble() ?? 0.0, kr_unitTime: json['unit_time'] as String? ?? '', kr_discount: (json['discount'] as List?) ?.map((e) => KRDiscount.fromJson(e as Map)) .toList() ?? [], kr_replacement: json['replacement'] as int? ?? 0, kr_inventory: json['inventory'] as int? ?? 0, kr_traffic: json['traffic'] as int? ?? 0, kr_speedLimit: json['speed_limit'] as int? ?? 0, kr_deviceLimit: json['device_limit'] as int? ?? 0, kr_quota: json['quota'] as int? ?? 0, kr_groupId: json['group_id'] as int? ?? 0, kr_serverGroup: (json['server_group'] as List?) ?.map((e) => e as int) .toList() ?? [], kr_server: (json['server'] as List?) ?.map((e) => e as int) .toList() ?? [], kr_show: json['show'] as bool? ?? false, kr_sell: json['sell'] as bool? ?? false, kr_sort: json['sort'] as int? ?? 0, kr_deductionRatio: (json['deduction_ratio'] as num?)?.toDouble() ?? 0.0, kr_allowDeduction: json['allow_deduction'] as bool? ?? false, kr_resetCycle: json['reset_cycle'] as int? ?? 0, kr_renewalReset: json['renewal_reset'] as bool? ?? false, kr_createdAt: json['created_at'] as int? ?? 0, kr_updatedAt: json['updated_at'] as int? ?? 0, ); } Map toJson() { return { 'id': kr_id, 'name': kr_name, 'description': kr_description, 'unit_price': kr_unitPrice, 'unit_time': kr_unitTime, 'discount': kr_discount.map((e) => e.toJson()).toList(), 'replacement': kr_replacement, 'inventory': kr_inventory, 'traffic': kr_traffic, 'speed_limit': kr_speedLimit, 'device_limit': kr_deviceLimit, 'quota': kr_quota, 'group_id': kr_groupId, 'server_group': kr_serverGroup, 'server': kr_server, 'show': kr_show, 'sell': kr_sell, 'sort': kr_sort, 'deduction_ratio': kr_deductionRatio, 'allow_deduction': kr_allowDeduction, 'reset_cycle': kr_resetCycle, 'renewal_reset': kr_renewalReset, 'created_at': kr_createdAt, 'updated_at': kr_updatedAt, }; } } /// 折扣信息模型类 class KRDiscount { final int kr_quantity; final double kr_discount; const KRDiscount({ required this.kr_quantity, required this.kr_discount, }); factory KRDiscount.fromJson(Map json) { return KRDiscount( kr_quantity: json['quantity'] as int? ?? 0, kr_discount: (json['discount'] as num?)?.toDouble() ?? 0.0, ); } Map toJson() { return { 'quantity': kr_quantity, 'discount': kr_discount, }; } }