using LMS.Common.Extensions; using LMS.Repository.User; using Microsoft.AspNetCore.Identity; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json; namespace LMS.Repository.Models.DB { public class User : IdentityUser { [MaxLength(50)] public string NickName { get; set; } /// /// 允许使用的机器码数量 /// public long AllDeviceCount { get; set; } = 1; /// /// 代理分成比例 /// public double AgentPercent { get; set; } = 0.00; /// /// 免费修改机器码次数 /// public long FreeCount { get; set; } = 0; /// /// 用户的一些简单的操作 /// [Column(TypeName = "json")] public string? Options { get; set; } = "{}"; [Column(TypeName = "datetime")] public DateTime CreatedDate { get; set; } = BeijingTimeExtension.GetBeijingTime(); [Column(TypeName = "datetime")] public DateTime UpdatedDate { get; set; } = BeijingTimeExtension.GetBeijingTime(); [Column(TypeName = "datetime")] public DateTime LastLoginDate { get; set; } = BeijingTimeExtension.GetBeijingTime(); public string? LastLoginIp { get; set; } = ""; public string? LastLoginDevice { get; set; } = ""; /// /// 上级ID /// public long? ParentId { get; set; } /// /// 推广码 /// public string AffiliateCode { get; set; } = string.Empty; /// /// 用户微信号 /// public string? WXNumber { get; set; } /// /// 备注 /// public string? Remark { get; set; } /// /// 实际使用的Options /// [NotMapped] public UserPrivateOptions OptionsJson { get => JsonSerializer.Deserialize(Options ?? "{}") ?? new UserPrivateOptions(); set => Options = JsonSerializer.Serialize(value); } } }