using System.Threading; using System.Threading.Tasks; using MediatR; using Microsoft.Extensions.Logging; using CellularManagement.Application.Common; using CellularManagement.Domain.Entities; using CellularManagement.Domain.Repositories; using CellularManagement.Domain.Common; using System; namespace CellularManagement.Application.Features.Permissions.Commands.CreatePermission; /// /// 创建权限命令处理器 /// public sealed class CreatePermissionCommandHandler : IRequestHandler> { private readonly IPermissionRepository _permissionRepository; private readonly ILogger _logger; /// /// 初始化处理器 /// public CreatePermissionCommandHandler( IPermissionRepository permissionRepository, ILogger logger) { _permissionRepository = permissionRepository; _logger = logger; } /// /// 处理创建权限请求 /// public async Task> Handle( CreatePermissionCommand request, CancellationToken cancellationToken) { try { // 检查权限是否已存在 var existingPermission = await _permissionRepository.GetByNameAsync(request.Name, cancellationToken); if (existingPermission != null) { _logger.LogWarning("权限 {PermissionName} 已存在", request.Name); return OperationResult.CreateFailure("权限已存在"); } // 创建权限 var permission = Permission.Create(request.Name, request.Description); var createdPermission = await _permissionRepository.AddAsync(permission, cancellationToken); _logger.LogInformation("权限 {PermissionName} 创建成功", request.Name); return OperationResult.CreateSuccess( new CreatePermissionResponse(createdPermission.Id)); } catch (Exception ex) { _logger.LogError(ex, "创建权限 {PermissionName} 失败", request.Name); return OperationResult.CreateFailure("创建权限失败,请稍后重试"); } } }