using System; using System.Threading; using System.Threading.Tasks; using MediatR; using Microsoft.Extensions.Logging; using X1.Domain.Entities; using X1.Domain.Repositories.Identity; using X1.Domain.Common; namespace X1.Application.Features.Permissions.Commands.UpdatePermission; /// /// 更新权限命令处理器 /// public sealed class UpdatePermissionCommandHandler : IRequestHandler> { private readonly IPermissionRepository _permissionRepository; private readonly ILogger _logger; /// /// 初始化处理器 /// public UpdatePermissionCommandHandler( IPermissionRepository permissionRepository, ILogger logger) { _permissionRepository = permissionRepository; _logger = logger; } /// /// 处理更新权限请求 /// public async Task> Handle( UpdatePermissionCommand request, CancellationToken cancellationToken) { try { // 查找权限 var permission = await _permissionRepository.GetByIdAsync(request.Id, cancellationToken: cancellationToken); if (permission == null) { _logger.LogWarning("权限 {PermissionId} 不存在", request.Id); return OperationResult.CreateFailure("权限不存在"); } // 更新权限信息 permission.Name = request.Name; permission.Description = request.Description; permission.IsEnabled = request.IsEnabled ?? permission.IsEnabled; _permissionRepository.Update(permission); _logger.LogInformation("权限 {PermissionId} 更新成功", request.Id); return OperationResult.CreateSuccess( new UpdatePermissionResponse(request.Id, true)); } catch (Exception ex) { _logger.LogError(ex, "更新权限 {PermissionId} 失败", request.Id); return OperationResult.CreateFailure("更新权限失败,请稍后重试"); } } }