using FlexJobApi.Core; using Furion.DatabaseAccessor; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.User.Application { /// /// 查询所有菜单 /// public class MenuListQueryHandler( IRepository menuRep) : IRequestHandler { private readonly IRepository menuRep = menuRep; /// public async Task Handle(MenuListQuery request, CancellationToken cancellationToken) { var config = new TypeAdapterConfig(); config.Default.MaxDepth(10); var callback = new MenuListCallback(); callback.Items = await menuRep.AsQueryable() .Include(it => it.Childrens.Where(c => c.Type == EnumMenuType.Menu || c.Type == EnumMenuType.Page || c.Type == EnumMenuType.Modal)) .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime) .Where(it => it.Type == EnumMenuType.Menu || it.Type == EnumMenuType.Page || it.Type == EnumMenuType.Modal) .ProjectToType(config) .ToListAsync(cancellationToken); return callback; } } }