106 lines
2.3 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace AmtScanner.Api.Models;
/// <summary>
/// 系统用户
/// </summary>
public class User
{
[Key]
public int Id { get; set; }
/// <summary>
/// 用户名(登录名)
/// </summary>
[Required]
[MaxLength(100)]
public string UserName { get; set; } = string.Empty;
/// <summary>
/// 密码哈希
/// </summary>
[Required]
[MaxLength(200)]
public string PasswordHash { get; set; } = string.Empty;
/// <summary>
/// 昵称
/// </summary>
[MaxLength(100)]
public string? NickName { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[MaxLength(200)]
public string? Email { get; set; }
/// <summary>
/// 手机号
/// </summary>
[MaxLength(20)]
public string? Phone { get; set; }
/// <summary>
/// 头像 URL
/// </summary>
[MaxLength(500)]
public string? Avatar { get; set; }
/// <summary>
/// 性别: 0-未知, 1-男, 2-女
/// </summary>
[MaxLength(1)]
public string Gender { get; set; } = "0";
/// <summary>
/// 状态: 1-启用, 2-禁用
/// </summary>
[MaxLength(1)]
public string Status { get; set; } = "1";
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdatedAt { get; set; }
/// <summary>
/// 创建人
/// </summary>
[MaxLength(100)]
public string? CreatedBy { get; set; }
/// <summary>
/// 更新人
/// </summary>
[MaxLength(100)]
public string? UpdatedBy { get; set; }
/// <summary>
/// 是否已删除(软删除)
/// </summary>
public bool IsDeleted { get; set; } = false;
/// <summary>
/// 刷新令牌
/// </summary>
[MaxLength(500)]
public string? RefreshToken { get; set; }
/// <summary>
/// 刷新令牌过期时间
/// </summary>
public DateTime? RefreshTokenExpiryTime { get; set; }
/// <summary>
/// 用户角色关联
/// </summary>
public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
}