sunpengfei
2025-08-07 b4943813a032976e0febdd7f22d8bcf084e331c5
FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
@@ -1,5 +1,6 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
@@ -16,7 +17,8 @@
    /// </summary>
    public class DictionaryDatasQueryHandler(
            IRepository<DictionaryData> rep
        ) : IRequestHandler<GetDictionaryDatasQuery, PagedListQueryResult<GetDictionaryDatasQueryResultItem>>
        ) : IRequestHandler<GetDictionaryDatasQuery, PagedListQueryResult<GetDictionaryDatasQueryResultItem>>,
            IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<Guid, GetDictionaryDataSelectQueryResultOption>>>
    {
        private readonly IRepository<DictionaryData> rep = rep;
@@ -28,13 +30,21 @@
        /// <returns></returns>
        public Task<PagedListQueryResult<GetDictionaryDatasQueryResultItem>> Handle(GetDictionaryDatasQuery request, CancellationToken cancellationToken)
        {
            return request.PageModel.ToPagedListAsync<DictionaryData, GetDictionaryDatasQueryResultItem>(
            return request.PageModel.GetPagedListAsync<DictionaryData, GetDictionaryDatasQueryResultItem>(
                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.Keywords.IsNotNull())
                    {
@@ -50,5 +60,40 @@
                    return q;
                }, cancellationToken: cancellationToken);
        }
        /// <summary>
        /// 查询数据字典选择器
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<List<SelectOption<Guid, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken)
        {
            return request.GetSelect<DictionaryData, Guid, GetDictionaryDataSelectQueryResultOption>(
                it => it.Id,
                it => it.Content,
                q =>
                {
                    q = q
                        .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime)
                        .Where(it =>
                            it.ParentId == request.ParentId
                            && !it.IsDisabled);
                    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);
        }
    }
}