user_entity.dart 1.94 KB
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<String, dynamic> json) => $UserEntityFromJson(json);

  Map<String, dynamic> toJson() => $UserEntityToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }

  Map<String, dynamic> toUpdateJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    data['name'] = name;
    data['age'] = age;
    data['gender'] = gender;
    data['avatarUrl'] = avatarUrl;
    return data;
  }

  String getGenderString() {
    return gender == null
        ? ''
        : gender == 0
            ? '男'
            : '女';
  }

  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;
  }
}