using OrpaonVision.Core.Results;
using OrpaonVision.Model.Security;
namespace OrpaonVision.ConfigApp.Infrastructure.Services;
///
/// 用户管理服务接口。
///
public interface IUserService
{
///
/// 创建用户。
///
Result CreateUser(UserModel user);
///
/// 更新用户。
///
Result UpdateUser(UserModel user);
///
/// 删除用户。
///
Result DeleteUser(Guid userId);
///
/// 获取用户详情。
///
Result GetUserById(Guid userId);
///
/// 根据用户名获取用户。
///
Result GetUserByUsername(string username);
///
/// 获取用户分页列表。
///
Result> GetUserPagedList(int pageIndex = 1, int pageSize = 20, UserStatus? status = null, string? keyword = null);
///
/// 启用用户。
///
Result EnableUser(Guid userId, string enabledBy);
///
/// 禁用用户。
///
Result DisableUser(Guid userId, string disabledBy);
///
/// 重置用户密码。
///
Result ResetPassword(Guid userId, string newPassword, string resetBy);
///
/// 解锁用户账户。
///
Result UnlockUser(Guid userId, string unlockedBy);
///
/// 验证用户密码。
///
Result VerifyPassword(string username, string password);
///
/// 更新用户最后登录信息。
///
Result UpdateLastLogin(Guid userId, string ipAddress, string userAgent);
///
/// 获取用户统计信息。
///
Result GetUserStatistics();
}
///
/// 角色管理服务接口。
///
public interface IRoleService
{
///
/// 创建角色。
///
Result CreateRole(RoleModel role);
///
/// 更新角色。
///
Result UpdateRole(RoleModel role);
///
/// 删除角色。
///
Result DeleteRole(Guid roleId);
///
/// 获取角色详情。
///
Result GetRoleById(Guid roleId);
///
/// 获取角色分页列表。
///
Result> GetRolePagedList(int pageIndex = 1, int pageSize = 20, RoleStatus? status = null, string? keyword = null);
///
/// 启用角色。
///
Result EnableRole(Guid roleId, string enabledBy);
///
/// 禁用角色。
///
Result DisableRole(Guid roleId, string disabledBy);
///
/// 获取所有启用的角色。
///
Result> GetEnabledRoles();
///
/// 检查角色名称是否存在。
///
Result CheckRoleNameExists(string name, Guid? excludeRoleId = null);
}
///
/// 权限管理服务接口。
///
public interface IPermissionService
{
///
/// 创建权限。
///
Result CreatePermission(PermissionModel permission);
///
/// 更新权限。
///
Result UpdatePermission(PermissionModel permission);
///
/// 删除权限。
///
Result DeletePermission(Guid permissionId);
///
/// 获取权限详情。
///
Result GetPermissionById(Guid permissionId);
///
/// 获取权限分页列表。
///
Result> GetPermissionPagedList(int pageIndex = 1, int pageSize = 20, PermissionStatus? status = null, string? keyword = null);
///
/// 获取所有启用的权限。
///
Result> GetEnabledPermissions();
///
/// 根据模块获取权限。
///
Result> GetPermissionsByModule(string module);
///
/// 检查权限编码是否存在。
///
Result CheckPermissionCodeExists(string code, Guid? excludePermissionId = null);
}
///
/// 用户角色管理服务接口。
///
public interface IUserRoleService
{
///
/// 分配角色给用户。
///
Task AssignRoleToUser(Guid userId, Guid roleId, string assignedBy);
///
/// 取消用户角色。
///
Task RemoveRoleFromUser(Guid userId, Guid roleId, string removedBy);
///
/// 获取用户的角色列表。
///
Task>> GetUserRoles(Guid userId);
///
/// 获取角色的用户列表。
///
Task>> GetRoleUsers(Guid roleId);
///
/// 批量分配角色给用户。
///
Task AssignRolesToUser(Guid userId, List roleIds, string assignedBy);
///
/// 批量取消用户角色。
///
Task RemoveRolesFromUser(Guid userId, List roleIds, string removedBy);
///
/// 检查用户是否拥有指定角色。
///
Task> CheckUserHasRole(Guid userId, Guid roleId);
///
/// 检查用户是否拥有指定角色名称。
///
Task> CheckUserHasRole(Guid userId, string roleName);
}
///
/// 角色权限管理服务接口。
///
public interface IRolePermissionService
{
///
/// 分配权限给角色。
///
Task AssignPermissionToRole(Guid roleId, Guid permissionId, string assignedBy);
///
/// 取消角色权限。
///
Task RemovePermissionFromRole(Guid roleId, Guid permissionId, string removedBy);
///
/// 获取角色的权限列表。
///
Task>> GetRolePermissions(Guid roleId);
///
/// 获取权限的角色列表。
///
Task>> GetPermissionRoles(Guid permissionId);
///
/// 批量分配权限给角色。
///
Task AssignPermissionsToRole(Guid roleId, List permissionIds, string assignedBy);
///
/// 批量取消角色权限。
///
Task RemovePermissionsFromRole(Guid roleId, List permissionIds, string removedBy);
///
/// 检查角色是否拥有指定权限。
///
Task> CheckRoleHasPermission(Guid roleId, Guid permissionId);
///
/// 检查角色是否拥有指定权限编码。
///
Task> CheckRoleHasPermission(Guid roleId, string permissionCode);
}
///
/// 权限验证服务接口。
///
public interface IAuthorizationService
{
///
/// 检查用户是否拥有指定权限。
///
Result CheckUserHasPermission(Guid userId, string permissionCode);
///
/// 检查用户是否拥有指定权限。
///
Result CheckUserHasPermission(Guid userId, Guid permissionId);
///
/// 检查用户是否拥有指定角色。
///
Result CheckUserHasRole(Guid userId, string roleName);
///
/// 获取用户的所有权限。
///
Result> GetUserPermissions(Guid userId);
///
/// 获取用户的所有角色。
///
Result> GetUserRoles(Guid userId);
///
/// 验证用户是否有权限执行指定操作。
///
Result Authorize(Guid userId, string module, string action);
///
/// 批量权限检查。
///
Result> BatchCheckPermissions(Guid userId, List permissionCodes);
}
///
/// 用户统计信息。
///
public sealed class UserStatistics
{
///
/// 总用户数。
///
public int TotalUsers { get; set; }
///
/// 启用用户数。
///
public int EnabledUsers { get; set; }
///
/// 禁用用户数。
///
public int DisabledUsers { get; set; }
///
/// 已锁定用户数。
///
public int LockedUsers { get; set; }
///
/// 今日登录用户数。
///
public int TodayLoginUsers { get; set; }
///
/// 本周登录用户数。
///
public int ThisWeekLoginUsers { get; set; }
///
/// 本月登录用户数。
///
public int ThisMonthLoginUsers { get; set; }
///
/// 总角色数。
///
public int TotalRoles { get; set; }
///
/// 总权限数。
///
public int TotalPermissions { get; set; }
///
/// 平均每个用户的角色数。
///
public double AverageRolesPerUser { get; set; }
///
/// 平均每个角色的权限数。
///
public double AveragePermissionsPerRole { get; set; }
}