namespace LingAdmin.Shared.Models;
///
/// 用户实体模型
///
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 UserRoles { get; set; } = new List();
}
///
/// 角色实体模型
///
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 RolePermissions { get; set; } = new List();
public ICollection UserRoles { get; set; } = new List();
}
///
/// 权限实体模型
///
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 RolePermissions { get; set; } = new List();
}
///
/// 用户角色关联表
///
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; }
}
///
/// 角色权限关联表
///
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;
}
///
/// 刷新令牌实体
///
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;
}