coupon_model.dart 5.01 KB
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:one_key/models/filter_btn_model.dart';


import 'dart:convert' as convert;

part 'coupon_model.g.dart';

@JsonSerializable()
class CouponModel extends Object {
  @JsonKey(name: 'ret')
  int? ret;

  @JsonKey(name: 'data')
  List<CouponSunModel?>? data;

  @JsonKey(name: 'msg')
  String? msg;

  CouponModel(
    this.ret,
    this.data,
    this.msg,
  );

  factory CouponModel.fromJson(Map<dynamic, dynamic> srcJson) =>
      _$CouponModelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$CouponModelToJson(this);
}

@JsonSerializable()
class CouponSunModel extends Object {
  @JsonKey(name: 'id')
  String? id;

  @JsonKey(name: 'uid')
  String? uid;

  @JsonKey(name: 'aname')
  String? aname;

  @JsonKey(name: 'desc')
  String? desc;

  @JsonKey(name: 'stime')
  String? stime;

  @JsonKey(name: 'etime')
  String? etime;

  @JsonKey(name: 'explain')
  String? explain;

  @JsonKey(name: 'status')
  String? status;

  @JsonKey(name: 'cdate')
  String? cdate;

  @JsonKey(name: 'receive_num')
  String? receiveNum;

  @JsonKey(name: 'use_num')
  String? useNum;

  @JsonKey(name: 'nickname')
  String? nickname;

  @JsonKey(name: 'uid_list')
  String? uidList;
  @JsonKey(name: 'is_examine')
  String? isExamine;
  @JsonKey(name: 'is_type')
  String? isType;

  @JsonKey(name: 'is_open')
  String? isOpen;

  @JsonKey(name: 'is_open')
  bool isOpenBool = false;

  @JsonKey(name: 'price')
  dynamic price;

  @JsonKey(name: 'use')
  CouponUse? use;

  @JsonKey(name: 'arule')
  Arule? arule;

  @JsonKey(name: 'exp_date')
  ExpDate? expDate;

  @JsonKey(name: 'nick_name')
  String? nickNameShow;

  @JsonKey(name: 'grant_num')
  String? grantNum;

  @JsonKey(name: 'urllink')
  String? urllink;

  @JsonKey(name: 'lite_qrcode')
  String? liteQrcode;

  @JsonKey(name: 'aexpiration')
  String? aexpiration;

  @JsonKey(name: 'number')
  int number;

  // arule 券使用和分享规则   领取后有效天数

  bool isCheck = false;
  bool showText = false;
  bool isMarking = false;

  TextEditingController numberC = TextEditingController(text: '1');

  CouponSunModel(
      this.id,
      this.uid,
      this.aname,
      this.desc,
      this.stime,
      this.etime,
      this.explain,
      this.status,
      this.cdate,
      this.receiveNum,
      this.useNum,
      this.nickname,
      this.uidList,
      this.isExamine,
      this.isType,
      this.isOpen,
      this.isOpenBool,
      this.price,
      this.use,
      this.arule,
      this.expDate,
      this.nickNameShow,
      this.grantNum,
      this.urllink,
      this.liteQrcode,
      this.aexpiration,
      this.number);

  factory CouponSunModel.fromJson(Map<String, dynamic> srcJson) =>
      _$CouponSunModelFromJson(srcJson);

  Map<String, dynamic> toJson() => _$CouponSunModelToJson(this);
}

@JsonSerializable()
class CouponUse extends Object {
  @JsonKey(name: 'is_cash')
  bool isCash;

  @JsonKey(name: 'is_discount')
  bool isDiscount;

  @JsonKey(name: 'is_dish')
  bool isDish;

  @JsonKey(name: 'cash')
  String? cash;

  @JsonKey(name: 'discount')
  String? discount;

  @JsonKey(name: 'dish')
  String? dish;

  @JsonKey(name: 'images')
  List<String> images;

  CouponUse(this.isCash, this.isDiscount, this.isDish, this.cash, this.discount,
      this.dish, this.images);

  factory CouponUse.fromJson(Map<String, dynamic> srcJson) =>
      _$CouponUseFromJson(srcJson);

  Map<String, dynamic> toJson() => _$CouponUseToJson(this);
}

@JsonSerializable()
class Arule extends Object {
  @JsonKey(name: 'is_same_day')
  bool isSameDay;

  @JsonKey(name: 'is_accumulation')
  bool isAccumulation;

  @JsonKey(name: 'is_compartment')
  bool isCompartment;

  @JsonKey(name: 'is_eatin')
  bool isEatin;

  @JsonKey(name: 'is_takeout')
  bool isTakeout;

  @JsonKey(name: 'is_appointment')
  bool isAppointment;

  @JsonKey(name: 'is_share_lose')
  bool isShareLose;

  @JsonKey(name: 'is_share_have')
  bool isShareHave;

  @JsonKey(name: 'is_commission')
  bool isCommission;

  @JsonKey(name: 'commission')
  String commission;

  Arule(
      this.isSameDay,
      this.isAccumulation,
      this.isCompartment,
      this.isEatin,
      this.isTakeout,
      this.isAppointment,
      this.isShareLose,
      this.isShareHave,
      this.isCommission,
      this.commission);

  factory Arule.fromJson(Map<String, dynamic> srcJson) =>
      _$AruleFromJson(srcJson);

  Map<String, dynamic> toJson() => _$AruleToJson(this);
}

@JsonSerializable()
class ExpDate extends Object {
  @JsonKey(name: 'is_none')
  bool isNone;

  @JsonKey(name: 'is_week')
  bool isWeek;

  @JsonKey(name: 'is_birthday')
  bool isBirthday;

  @JsonKey(name: 'week_show')
  String? weekShow;

  @JsonKey(name: 'week_data')
  List<FilterBtnModel> weekData;

  ExpDate(
      this.isNone, this.isWeek, this.isBirthday, this.weekShow, this.weekData);

  factory ExpDate.fromJson(Map<String, dynamic> srcJson) =>
      _$ExpDateFromJson(srcJson);

  Map<String, dynamic> toJson() => _$ExpDateToJson(this);
}