using MediatR; using TakeoutSaaS.Application.Identity.Commands; using TakeoutSaaS.Application.Identity.Contracts; using TakeoutSaaS.Domain.Identity.Entities; using TakeoutSaaS.Domain.Identity.Repositories; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Application.Identity.Handlers; /// /// 创建权限处理器。 /// public sealed class CreatePermissionCommandHandler( IPermissionRepository permissionRepository, ITenantProvider tenantProvider) : IRequestHandler { public async Task Handle(CreatePermissionCommand request, CancellationToken cancellationToken) { // 1. 获取租户上下文 var tenantId = tenantProvider.GetCurrentTenantId(); // 2. 构建权限实体 var permission = new Permission { TenantId = tenantId, Name = request.Name, Code = request.Code, Description = request.Description }; // 3. 持久化 await permissionRepository.AddAsync(permission, cancellationToken); await permissionRepository.SaveChangesAsync(cancellationToken); // 4. 返回 DTO return new PermissionDto { Id = permission.Id, TenantId = permission.TenantId, Name = permission.Name, Code = permission.Code, Description = permission.Description }; } }