版本260406

This commit is contained in:
2026-04-06 22:04:05 +08:00
parent 7dc5e73af7
commit 0b150470be
216 changed files with 98993 additions and 33 deletions

View File

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