Files
TakeoutSaaS.AdminApi/src/Domain/TakeoutSaaS.Domain/Identity/Entities/IdentityUser.cs

86 lines
2.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.
using TakeoutSaaS.Domain.Identity.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Identity.Entities;
/// <summary>
/// 后台账户实体(按 Portal 区分平台管理员与租户后台账号)。
/// </summary>
public sealed class IdentityUser : AuditableEntityBase
{
/// <summary>
/// 账号所属 Portal。
/// </summary>
public PortalType Portal { get; set; }
/// <summary>
/// 所属租户 IDPortal=Tenant 时必填Portal=Admin 时必须为空)。
/// </summary>
public long? TenantId { get; set; }
/// <summary>
/// 登录账号。
/// </summary>
public string Account { get; set; } = string.Empty;
/// <summary>
/// 展示名称。
/// </summary>
public string DisplayName { get; set; } = string.Empty;
/// <summary>
/// 密码哈希。
/// </summary>
public string PasswordHash { get; set; } = string.Empty;
/// <summary>
/// 手机号(租户内唯一)。
/// </summary>
public string? Phone { get; set; }
/// <summary>
/// 邮箱(租户内唯一)。
/// </summary>
public string? Email { get; set; }
/// <summary>
/// 账号状态。
/// </summary>
public IdentityUserStatus Status { get; set; } = IdentityUserStatus.Active;
/// <summary>
/// 登录失败次数。
/// </summary>
public int FailedLoginCount { get; set; }
/// <summary>
/// 锁定截止时间UTC
/// </summary>
public DateTime? LockedUntil { get; set; }
/// <summary>
/// 最近登录时间UTC
/// </summary>
public DateTime? LastLoginAt { get; set; }
/// <summary>
/// 是否强制修改密码。
/// </summary>
public bool MustChangePassword { get; set; }
/// <summary>
/// 所属商户(平台管理员为空)。
/// </summary>
public long? MerchantId { get; set; }
/// <summary>
/// 头像地址。
/// </summary>
public string? Avatar { get; set; }
/// <summary>
/// 并发控制字段。
/// </summary>
public byte[] RowVersion { get; set; } = Array.Empty<byte>();
}