import 'dart:convert'; import 'package:wow_english/generated/json/base/json_field.dart'; import 'package:wow_english/generated/json/user_entity.g.dart'; @JsonSerializable() class UserEntity { late int id; late String name; /// 一定有也必须要有 String? token; //late int expireTime; int? age; /// 性别:0男, 1女 int? gender; String? avatarUrl; late String phoneNum; /// 用户信息是否填写 0.未填写 1.已经填写 int? fillUserInfo; /// 当前模块Id int? nowCourseModuleId; /// 有效时间,VIP,为null没有 String? effectiveDate; /// 有效天数 int? validDay; /// 游戏权限 bool? valid; UserEntity(); factory UserEntity.fromJson(Map json) => $UserEntityFromJson(json); Map toJson() => $UserEntityToJson(this); @override String toString() { return jsonEncode(this); } Map toUpdateJson() { final Map data = {}; data['name'] = name; data['age'] = age; data['gender'] = gender; data['avatarUrl'] = avatarUrl; return data; } String getGenderString() { return gender == null ? '' : gender == 0 ? '男' : '女'; } // 是否有游戏权限 bool hasGamePermission() { return valid ?? false; } // 计算用户vip到期日 String? getEffectiveDate() { if (effectiveDate == null) { return null; } DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(int.parse(effectiveDate!)); // 获取年、月、日 String year = dateTime.year.toString(); String month = dateTime.month.toString().padLeft(2, '0'); // 如果月份是个位数,则在前面加上0,使其两位数 String day = dateTime.day.toString().padLeft(2, '0'); // 如果日期是个位数,则在前面加上0,使其两位数 // 拼接成日期字符串 String formattedDate = '$year-$month-$day'; return formattedDate; } UserEntity copyWith({ int? id, String? name, String? token, int? age, int? gender, String? avatarUrl, String? phoneNum, int? fillUserInfo, int? nowCourseModuleId, String? effectiveDate, }) { return UserEntity() ..id = id ?? this.id ..name = name ?? this.name ..token = token ?? this.token ..age = age ?? this.age ..gender = gender ?? this.gender ..avatarUrl = avatarUrl ?? this.avatarUrl ..phoneNum = phoneNum ?? this.phoneNum ..fillUserInfo = fillUserInfo ?? this.fillUserInfo ..nowCourseModuleId = nowCourseModuleId ?? this.nowCourseModuleId ..effectiveDate = effectiveDate ?? this.effectiveDate; } }