using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; 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 DictionaryDatasQueryHandler( IRepository rep ) : IRequestHandler>, IRequestHandler>> { private readonly IRepository rep = rep; /// /// 获取数据字典分页列表数据 /// /// /// /// public Task> Handle(GetDictionaryDatasQuery request, CancellationToken cancellationToken) { return request.PageModel.GetPagedListAsync( q => { q = q.OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime); if (request.CategoryId.HasValue) { q = q.Where(it => it.CategoryId == request.CategoryId); } else if (request.CategoryCode.IsNotNull()) { q = q.Where(it => it.Category.Code == request.CategoryCode); } else { throw Oops.Oh(EnumErrorCodeType.s400, "请填写类别Id或编号"); } if (request.ParentId.HasValue) { q = q.Where(it => it.ParentId == request.ParentId); } if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Code.Contains(request.Keywords) || it.Content.Contains(request.Keywords) || it.Field1.Contains(request.Keywords) || it.Field2.Contains(request.Keywords) || it.Field3.Contains(request.Keywords) || it.Field4.Contains(request.Keywords) || it.Field5.Contains(request.Keywords)); } return q; }, cancellationToken: cancellationToken); } /// /// 查询数据字典选择器 /// /// /// /// public Task>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) { return request.GetSelect( it => it.Id, it => it.Content, q => { q = q .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime) .Where(it => !it.IsDisabled); if (!request.All) { q = q.Where(it => it.ParentId == request.ParentId); } if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Code.Contains(request.Keywords) || it.Content.Contains(request.Keywords) || it.Field1.Contains(request.Keywords) || it.Field2.Contains(request.Keywords) || it.Field3.Contains(request.Keywords) || it.Field4.Contains(request.Keywords) || it.Field5.Contains(request.Keywords)); } if (request.CategoryId.HasValue) { q = q.Where(it => it.CategoryId == request.CategoryId); } else if (request.CategoryCode.IsNotNull()) { q = q.Where(it => it.Category.Code == request.CategoryCode); } else { throw Oops.Oh(EnumErrorCodeType.s400, "请填写类别Id或编号"); } return q; }, cancellationToken); } } }