|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新权限命令处理器
|
|
|
|
|
/// </summary>
|
|
|
|
|
public sealed class UpdatePermissionCommandHandler : IRequestHandler<UpdatePermissionCommand, OperationResult<UpdatePermissionResponse>>
|
|
|
|
|
{
|
|
|
|
|
private readonly IPermissionRepository _permissionRepository;
|
|
|
|
|
private readonly ILogger<UpdatePermissionCommandHandler> _logger;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化处理器
|
|
|
|
|
/// </summary>
|
|
|
|
|
public UpdatePermissionCommandHandler(
|
|
|
|
|
IPermissionRepository permissionRepository,
|
|
|
|
|
ILogger<UpdatePermissionCommandHandler> logger)
|
|
|
|
|
{
|
|
|
|
|
_permissionRepository = permissionRepository;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 处理更新权限请求
|
|
|
|
|
/// </summary>
|
|
|
|
|
public async Task<OperationResult<UpdatePermissionResponse>> 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<UpdatePermissionResponse>.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<UpdatePermissionResponse>.CreateSuccess(
|
|
|
|
|
new UpdatePermissionResponse(request.Id, true));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "更新权限 {PermissionId} 失败", request.Id);
|
|
|
|
|
return OperationResult<UpdatePermissionResponse>.CreateFailure("更新权限失败,请稍后重试");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|