LingAdmin/Backend/Services/Shared/LingAdmin.Shared/Models/User.cs

104 lines
3.0 KiB
C#

namespace LingAdmin.Shared.Models;
/// <summary>
/// 用户实体模型
/// </summary>
public class User
{
public int Id { get; set; }
public required string Name { get; set; }
public required string Email { get; set; }
public required string PasswordHash { get; set; }
public required string Status { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? LastLoginAt { get; set; }
public DateTime? UpdatedAt { get; set; }
// 关联角色
public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
}
/// <summary>
/// 角色实体模型
/// </summary>
public class Role
{
public int Id { get; set; }
public required string Name { get; set; }
public required string Code { get; set; }
public string? Description { get; set; }
public bool IsSystem { get; set; } = false;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? UpdatedAt { get; set; }
// 关联权限
public ICollection<RolePermission> RolePermissions { get; set; } = new List<RolePermission>();
public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
}
/// <summary>
/// 权限实体模型
/// </summary>
public class Permission
{
public int Id { get; set; }
public required string Name { get; set; }
public required string Code { get; set; }
public string? Description { get; set; }
public required string Resource { get; set; }
public required string Action { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public ICollection<RolePermission> RolePermissions { get; set; } = new List<RolePermission>();
}
/// <summary>
/// 用户角色关联表
/// </summary>
public class UserRole
{
public int UserId { get; set; }
public User User { get; set; } = null!;
public int RoleId { get; set; }
public Role Role { get; set; } = null!;
public DateTime AssignedAt { get; set; } = DateTime.UtcNow;
public int? AssignedBy { get; set; }
}
/// <summary>
/// 角色权限关联表
/// </summary>
public class RolePermission
{
public int RoleId { get; set; }
public Role Role { get; set; } = null!;
public int PermissionId { get; set; }
public Permission Permission { get; set; } = null!;
public DateTime AssignedAt { get; set; } = DateTime.UtcNow;
}
/// <summary>
/// 刷新令牌实体
/// </summary>
public class RefreshToken
{
public int Id { get; set; }
public int UserId { get; set; }
public User User { get; set; } = null!;
public required string Token { get; set; }
public DateTime ExpiresAt { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public string? CreatedByIp { get; set; }
public DateTime? RevokedAt { get; set; }
public string? RevokedByIp { get; set; }
public string? ReplacedByToken { get; set; }
public bool IsExpired => DateTime.UtcNow >= ExpiresAt;
public bool IsRevoked => RevokedAt != null;
public bool IsActive => !IsRevoked && !IsExpired;
}