import 'dart:convert'; T? asT(dynamic value) { if (value is T) { return value; } return null; } class UserProfileModel { UserProfileModel({ required this.nickname, this.description, this.birthday, this.sex, this.cover, this.blood, this.constellation, this.bindPhone, this.email, this.channel, this.channelid, this.isVerify, this.status, this.reason, this.submitLogout, this.userDelInfo, this.ip, this.ipRegion, this.isModifyName, this.data, this.amount, this.isSetPwd, this.bind, this.userfeeinfo, this.userLevel, this.cookieVal, this.isBbsAdmin, }); factory UserProfileModel.fromJson(Map json) { final List? data = json['data'] is List ? [] : null; if (data != null) { for (final dynamic item in json['data']!) { if (item != null) { data.add(asT(item)!); } } } final List? bind = json['bind'] is List ? [] : null; if (bind != null) { for (final dynamic item in json['bind']!) { if (item != null) { bind.add( UserPorfileBindModel.fromJson(asT>(item)!)); } } } return UserProfileModel( nickname: asT(json['nickname'])!, description: asT(json['description']), birthday: asT(json['birthday']), sex: asT(json['sex']), cover: asT(json['cover']), blood: asT(json['blood']), constellation: asT(json['constellation']), bindPhone: asT(json['bind_phone']), email: asT(json['email']), channel: asT(json['channel']), channelid: asT(json['channelid']), isVerify: asT(json['is_verify']), status: asT(json['status']), reason: asT(json['reason']), submitLogout: asT(json['submit_logout']), userDelInfo: json['user_del_info'] == null ? null : UserDelInfoModel.fromJson( asT>(json['user_del_info'])!), ip: asT(json['ip']), ipRegion: json['ip_region'] == null ? null : UserIpRegionModel.fromJson( asT>(json['ip_region'])!), isModifyName: asT(json['is_modify_name']), data: data, amount: asT(json['amount']), isSetPwd: asT(json['is_set_pwd']), bind: bind, userfeeinfo: json['userFeeInfo'] == null ? null : UserfeeInfo.fromJson( asT>(json['userFeeInfo'])!), userLevel: asT(json['user_level']), cookieVal: asT(json['cookie_val']), isBbsAdmin: asT(json['is_bbs_admin']), ); } String nickname; String? description; String? birthday; int? sex; String? cover; int? blood; String? constellation; String? bindPhone; String? email; String? channel; String? channelid; int? isVerify; int? status; String? reason; bool? submitLogout; UserDelInfoModel? userDelInfo; String? ip; UserIpRegionModel? ipRegion; int? isModifyName; List? data; int? amount; int? isSetPwd; List? bind; UserfeeInfo? userfeeinfo; String? userLevel; String? cookieVal; int? isBbsAdmin; @override String toString() { return jsonEncode(this); } Map toJson() => { 'nickname': nickname, 'description': description, 'birthday': birthday, 'sex': sex, 'cover': cover, 'blood': blood, 'constellation': constellation, 'bind_phone': bindPhone, 'email': email, 'channel': channel, 'channelid': channelid, 'is_verify': isVerify, 'status': status, 'reason': reason, 'submit_logout': submitLogout, 'user_del_info': userDelInfo, 'ip': ip, 'ip_region': ipRegion, 'is_modify_name': isModifyName, 'data': data, 'amount': amount, 'is_set_pwd': isSetPwd, 'bind': bind, 'userFeeInfo': userfeeinfo, 'user_level': userLevel, 'cookie_val': cookieVal, 'is_bbs_admin': isBbsAdmin, }; } class UserDelInfoModel { UserDelInfoModel({ this.uid, this.logoutId, this.status, this.subTime, this.cancelTime, this.cancelUserType, this.currentTime, }); factory UserDelInfoModel.fromJson(Map json) => UserDelInfoModel( uid: asT(json['uid']), logoutId: asT(json['logout_id']), status: asT(json['status']), subTime: asT(json['sub_time']), cancelTime: asT(json['cancel_time']), cancelUserType: asT(json['cancel_user_type']), currentTime: asT(json['current_time']), ); int? uid; int? logoutId; int? status; int? subTime; int? cancelTime; int? cancelUserType; int? currentTime; @override String toString() { return jsonEncode(this); } Map toJson() => { 'uid': uid, 'logout_id': logoutId, 'status': status, 'sub_time': subTime, 'cancel_time': cancelTime, 'cancel_user_type': cancelUserType, 'current_time': currentTime, }; } class UserIpRegionModel { UserIpRegionModel({ this.country, this.province, this.city, this.provider, }); factory UserIpRegionModel.fromJson(Map json) => UserIpRegionModel( country: asT(json['country']), province: asT(json['province']), city: asT(json['city']), provider: asT(json['provider']), ); String? country; String? province; String? city; String? provider; @override String toString() { return jsonEncode(this); } Map toJson() => { 'country': country, 'province': province, 'city': city, 'provider': provider, }; } class UserPorfileBindModel { UserPorfileBindModel({ this.type, this.name, }); factory UserPorfileBindModel.fromJson(Map json) => UserPorfileBindModel( type: asT(json['type']), name: asT(json['name']), ); String? type; String? name; @override String toString() { return jsonEncode(this); } Map toJson() => { 'type': type, 'name': name, }; } class UserfeeInfo { UserfeeInfo({ this.mCate, this.mPeriod, }); factory UserfeeInfo.fromJson(Map json) => UserfeeInfo( mCate: asT(json['m_cate']), mPeriod: asT(json['m_period']), ); int? mCate; int? mPeriod; bool get isVip => (mCate ?? 0) > 0; DateTime get expiresTime => DateTime.fromMillisecondsSinceEpoch((mPeriod ?? 0) * 1000); @override String toString() { return jsonEncode(this); } Map toJson() => { 'm_cate': mCate, 'm_period': mPeriod, }; }