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 callback = new MenuListCallback(); var q = menuRep.AsQueryable().AsNoTracking() .Where(it => it.Type == EnumMenuType.Menu || it.Type == EnumMenuType.Page || it.Type == EnumMenuType.Modal); if (request.ParentId.HasValue) { q = q.Where(it => it.ParentId == request.ParentId); } if (!string.IsNullOrEmpty(request.Keywords)) { q = q.Where(it => it.Name.Contains(request.Keywords) || it.Code.Contains(request.Keywords) || it.Path.Contains(request.Keywords) || it.Remark.Contains(request.Keywords)); } callback.Items = await q.ProjectToType().ToListAsync(); return callback; } } }