Files
OrpaonVision/OrpaonVision.Model/Security/UserModel.cs
2026-04-06 22:04:05 +08:00

257 lines
5.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace OrpaonVision.Model.Security;
/// <summary>
/// 用户模型。
/// </summary>
public sealed class UserModel
{
/// <summary>
/// 用户ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 用户名。
/// </summary>
public string Username { get; set; } = string.Empty;
/// <summary>
/// 显示名称。
/// </summary>
public string DisplayName { get; set; } = string.Empty;
/// <summary>
/// 邮箱。
/// </summary>
public string Email { get; set; } = string.Empty;
/// <summary>
/// 手机号。
/// </summary>
public string? PhoneNumber { get; set; }
/// <summary>
/// 密码哈希。
/// </summary>
public string PasswordHash { get; set; } = string.Empty;
/// <summary>
/// 密码盐。
/// </summary>
public string PasswordSalt { get; set; } = string.Empty;
/// <summary>
/// 用户状态。
/// </summary>
public UserStatus Status { get; set; }
/// <summary>
/// 最后登录时间UTC
/// </summary>
public DateTime? LastLoginAtUtc { get; set; }
/// <summary>
/// 最后登录IP。
/// </summary>
public string? LastLoginIp { get; set; }
/// <summary>
/// 登录失败次数。
/// </summary>
public int LoginFailedCount { get; set; }
/// <summary>
/// 账户锁定时间UTC
/// </summary>
public DateTime? LockedUntilUtc { get; set; }
/// <summary>
/// 是否首次登录。
/// </summary>
public bool IsFirstLogin { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime UpdatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 更新人。
/// </summary>
public string UpdatedBy { get; set; } = string.Empty;
/// <summary>
/// 备注。
/// </summary>
public string? Remark { get; set; }
}
/// <summary>
/// 用户状态枚举。
/// </summary>
public enum UserStatus
{
/// <summary>
/// 启用。
/// </summary>
Enabled = 0,
/// <summary>
/// 禁用。
/// </summary>
Disabled = 1,
/// <summary>
/// 已锁定。
/// </summary>
Locked = 2,
/// <summary>
/// 已删除。
/// </summary>
Deleted = 3
}
/// <summary>
/// 角色模型。
/// </summary>
public sealed class RoleModel
{
/// <summary>
/// 角色ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 角色名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 角色显示名称。
/// </summary>
public string DisplayName { get; set; } = string.Empty;
/// <summary>
/// 角色描述。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 角色状态。
/// </summary>
public RoleStatus Status { get; set; }
/// <summary>
/// 是否系统角色。
/// </summary>
public bool IsSystemRole { get; set; }
/// <summary>
/// 排序序号。
/// </summary>
public int SortOrder { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime UpdatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 更新人。
/// </summary>
public string UpdatedBy { get; set; } = string.Empty;
/// <summary>
/// 备注。
/// </summary>
public string? Remark { get; set; }
}
/// <summary>
/// 角色状态枚举。
/// </summary>
public enum RoleStatus
{
/// <summary>
/// 启用。
/// </summary>
Enabled = 0,
/// <summary>
/// 禁用。
/// </summary>
Disabled = 1
}
/// <summary>
/// 用户角色关联模型。
/// </summary>
public sealed class UserRoleModel
{
/// <summary>
/// 关联ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 用户ID。
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// 角色ID。
/// </summary>
public Guid RoleId { get; set; }
/// <summary>
/// 授权时间UTC
/// </summary>
public DateTime GrantedAtUtc { get; set; }
/// <summary>
/// 授权人。
/// </summary>
public string GrantedBy { get; set; } = string.Empty;
/// <summary>
/// 过期时间UTC
/// </summary>
public DateTime? ExpiresAtUtc { get; set; }
/// <summary>
/// 是否启用。
/// </summary>
public bool IsEnabled { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
}