using MediatR; using TakeoutSaaS.Application.Identity.Commands; using TakeoutSaaS.Domain.Identity.Repositories; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Application.Identity.Handlers; /// /// 用户角色分配处理器。 /// public sealed class AssignUserRolesCommandHandler( IUserRoleRepository userRoleRepository, ITenantProvider tenantProvider) : IRequestHandler { public async Task Handle(AssignUserRolesCommand request, CancellationToken cancellationToken) { // 1. 获取租户上下文 var tenantId = tenantProvider.GetCurrentTenantId(); // 2. 覆盖式绑定角色 await userRoleRepository.ReplaceUserRolesAsync(tenantId, request.UserId, request.RoleIds, cancellationToken); await userRoleRepository.SaveChangesAsync(cancellationToken); // 3. 返回执行结果 return true; } }