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.Application { /// /// 数据字典类别查询处理器 /// public class DictionaryCategoriesQueryHandler( IRepository rep ) : IRequestHandler>, IRequestHandler>> { private readonly IRepository rep = rep; /// /// 查询数据字典类别分页列表数据 /// /// /// /// public Task> Handle(GetDictionaryCategoriesQuery request, CancellationToken cancellationToken) { return request.PageModel.ToPagedListAsync( q => { q = q.OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime); if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Code.Contains(request.Keywords) || it.Name.Contains(request.Keywords) || it.Remark.Contains(request.Keywords)); } return q; }, cancellationToken: cancellationToken); } /// /// 查询数据字典类别选择器数据 /// /// /// /// public Task>> Handle(GetDictionaryCategorySelectQuery request, CancellationToken cancellationToken) { var items = rep.AsQueryable().AsNoTracking() .Select(it => new SelectQueryResultItem { Value = it.Id, Label = it.Name, Data = new { it.Id, it.Name, it.Remark, it.FieldNames } }) .ToListAsync(cancellationToken); return items; } } }