using MediatR; using TakeoutSaaS.Application.Identity.Contracts; using TakeoutSaaS.Application.Identity.Queries; using TakeoutSaaS.Domain.Identity.Repositories; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Application.Identity.Handlers; /// /// 菜单列表查询处理器。 /// public sealed class ListMenusQueryHandler( IMenuRepository menuRepository, ITenantProvider tenantProvider) : IRequestHandler> { /// public async Task> Handle(ListMenusQuery request, CancellationToken cancellationToken) { // 1. 获取租户 var tenantId = tenantProvider.GetCurrentTenantId(); // 2. 查询列表 var entities = await menuRepository.GetByTenantAsync(tenantId, cancellationToken); // 3. 映射 DTO var items = entities.Select(MenuMapper.ToDto).ToList(); // 4. 返回结果 return items; } }