pay_models.dart 7.05 KB
class PayProductListResponse {
  const PayProductListResponse({this.productList});

  final List<PayProduct>? productList;

  factory PayProductListResponse.fromJson(Map<String, dynamic> json) {
    return PayProductListResponse(
      productList: (json['product_list'] as List<dynamic>?)
          ?.map((e) => PayProduct.fromJson(e as Map<String, dynamic>))
          .toList(),
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (productList != null) {
      val['product_list'] = productList!.map((e) => e.toJson()).toList();
    }
    return val;
  }
}

class PayProduct {
  const PayProduct({
    this.id,
    this.name,
    this.profile,
    this.content,
    this.price,
    this.servePeriod,
    this.discountPrice,
    this.discountStartTime,
    this.discountEndTime,
  });

  final int? id;
  final String? name;
  final String? profile;
  final PayProductContent? content;
  final int? price;
  final int? servePeriod;
  final int? discountPrice;
  final int? discountStartTime;
  final int? discountEndTime;

  factory PayProduct.fromJson(Map<String, dynamic> json) {
    return PayProduct(
      id: json['id'] as int?,
      name: json['name'] as String?,
      profile: json['profile'] as String?,
      content: json['content'] == null
          ? null
          : PayProductContent.fromJson(json['content'] as Map<String, dynamic>),
      price: json['price'] as int?,
      servePeriod: json['serve_period'] as int?,
      discountPrice: json['discount_price'] as int?,
      discountStartTime: json['discount_start_time'] as int?,
      discountEndTime: json['discount_end_time'] as int?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (id != null) val['id'] = id;
    if (name != null) val['name'] = name;
    if (profile != null) val['profile'] = profile;
    if (content != null) val['content'] = content!.toJson();
    if (price != null) val['price'] = price;
    if (servePeriod != null) val['serve_period'] = servePeriod;
    if (discountPrice != null) val['discount_price'] = discountPrice;
    if (discountStartTime != null) val['discount_start_time'] = discountStartTime;
    if (discountEndTime != null) val['discount_end_time'] = discountEndTime;
    return val;
  }
}

class PayProductContent {
  const PayProductContent({
    this.type,
    this.vipDays,
    this.label,
    this.description,
    this.isForever,
    this.share,
  });

  final int? type;
  final int? vipDays;
  final String? label;
  final String? description;
  final int? isForever;
  final int? share;

  factory PayProductContent.fromJson(Map<String, dynamic> json) {
    return PayProductContent(
      type: json['type'] as int?,
      vipDays: json['vip_days'] as int?,
      label: json['label'] as String?,
      description: json['description'] as String?,
      isForever: json['is_forever'] as int?,
      share: json['share'] as int?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (type != null) val['type'] = type;
    if (vipDays != null) val['vip_days'] = vipDays;
    if (label != null) val['label'] = label;
    if (description != null) val['description'] = description;
    if (isForever != null) val['is_forever'] = isForever;
    if (share != null) val['share'] = share;
    return val;
  }
}

class CreatePayOrderRequest {
  const CreatePayOrderRequest({
    required this.productId,
    this.productChannel = 1,
    this.paymentChannel = 2,
  });

  final int productId;
  final int productChannel;
  final int paymentChannel;

  factory CreatePayOrderRequest.fromJson(Map<String, dynamic> json) {
    return CreatePayOrderRequest(
      productId: json['product_id'] as int,
      productChannel: (json['product_channel'] as int?) ?? 1,
      paymentChannel: (json['payment_channel'] as int?) ?? 2,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'product_id': productId,
      'product_channel': productChannel,
      'payment_channel': paymentChannel,
    };
  }
}

class CreatePayOrderResponse {
  const CreatePayOrderResponse({this.prepayData});

  final String? prepayData;

  factory CreatePayOrderResponse.fromJson(Map<String, dynamic> json) {
    return CreatePayOrderResponse(
      prepayData: json['prepay_data'] as String?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (prepayData != null) val['prepay_data'] = prepayData;
    return val;
  }
}

class SubscriptionProductListResponse {
  const SubscriptionProductListResponse({this.productList});

  final List<SubscriptionProduct>? productList;

  factory SubscriptionProductListResponse.fromJson(Map<String, dynamic> json) {
    return SubscriptionProductListResponse(
      productList: (json['subscription_list'] as List<dynamic>?)
          ?.map((e) => SubscriptionProduct.fromJson(e as Map<String, dynamic>))
          .toList(),
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (productList != null) {
      val['subscription_list'] = productList!.map((e) => e.toJson()).toList();
    }
    return val;
  }
}

class SubscriptionProduct {
  const SubscriptionProduct({
    this.agreementNo,
    this.startTime,
    this.endTime,
    this.nextPayPrice,
    this.productInfo,
  });

  final String? agreementNo;
  final int? startTime;
  final int? endTime;
  final int? nextPayPrice;
  final SubscriptionProductInfo? productInfo;

  factory SubscriptionProduct.fromJson(Map<String, dynamic> json) {
    return SubscriptionProduct(
      agreementNo: json['agreement_no'] as String?,
      startTime: json['last_execute_timestamp'] as int?,
      endTime: json['next_execute_timestamp'] as int?,
      nextPayPrice: json['single_amount'] as int?,
      productInfo: json['product_info'] == null
          ? null
          : SubscriptionProductInfo.fromJson(
              json['product_info'] as Map<String, dynamic>),
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (agreementNo != null) val['agreement_no'] = agreementNo;
    if (startTime != null) val['last_execute_timestamp'] = startTime;
    if (endTime != null) val['next_execute_timestamp'] = endTime;
    if (nextPayPrice != null) val['single_amount'] = nextPayPrice;
    if (productInfo != null) val['product_info'] = productInfo!.toJson();
    return val;
  }
}

class SubscriptionProductInfo {
  const SubscriptionProductInfo({this.name});

  final String? name;

  factory SubscriptionProductInfo.fromJson(Map<String, dynamic> json) {
    return SubscriptionProductInfo(
      name: json['name'] as String?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (name != null) val['name'] = name;
    return val;
  }
}

class SubscriptionCancelRequest {
  const SubscriptionCancelRequest({required this.agreementNo});

  final String agreementNo;

  factory SubscriptionCancelRequest.fromJson(Map<String, dynamic> json) {
    return SubscriptionCancelRequest(
      agreementNo: json['agreement_no'] as String,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'agreement_no': agreementNo,
    };
  }
}