| | |
| | | using Mapster; |
| | | using MediatR; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using Newtonsoft.Json.Linq; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static Microsoft.EntityFrameworkCore.DbLoggerCategory; |
| | | |
| | | namespace FlexJobApi.CommonServer.Application |
| | | { |
| | |
| | | /// <returns></returns> |
| | | public async Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var models = await request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>( |
| | | it => it.Code, |
| | | it => it.Content, |
| | | q => |
| | | { |
| | | q = q |
| | | .OrderBy(it => it.Sort) |
| | | .Where(it => !it.IsDisabled); |
| | | if (request.All != true) |
| | | { |
| | | q = q.Where(it => it.ParentId == request.ParentId); |
| | | } |
| | | if (request.MaxDeep.HasValue) |
| | | { |
| | | q = q.Where(it => it.Deep <= request.MaxDeep); |
| | | } |
| | | 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); |
| | | var sql = @"SELECT d.* FROM DictionaryData d |
| | | INNER JOIN DictionaryCategory c ON d.CategoryId = c.Id |
| | | WHERE d.IsDisabled = 0"; |
| | | if (request.All != true) |
| | | { |
| | | sql += " AND d.ParentId = @ParentId"; |
| | | } |
| | | if (request.MaxDeep.HasValue) |
| | | { |
| | | sql += " AND d.Deep <= @MaxDeep"; |
| | | } |
| | | if (request.Keywords.IsNotNull()) |
| | | { |
| | | sql += @" AND (d.Code LIKE @Keywords |
| | | OR d.Content LIKE @Keywords |
| | | OR d.Field1 LIKE @Keywords |
| | | OR d.Field2 LIKE @Keywords |
| | | OR d.Field3 LIKE @Keywords |
| | | OR d.Field4 LIKE @Keywords |
| | | OR d.Field5 LIKE @Keywords)"; |
| | | } |
| | | if (request.CategoryId.HasValue) |
| | | { |
| | | sql += " AND d.CategoryId = @CategoryId"; |
| | | } |
| | | else if (request.CategoryCode.IsNotNull()) |
| | | { |
| | | sql += " AND c.Code = @CategoryCode"; |
| | | } |
| | | else |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "请填写类别Id或编号"); |
| | | } |
| | | sql += " ORDER BY d.Sort"; |
| | | var models = await rep.SqlQueriesAsync<GetDictionaryDataSelectQueryResultOption>(sql, request, cancellationToken); |
| | | var options = new List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>(); |
| | | foreach (var model in models) |
| | | { |
| | | var option = new SelectOption<string, GetDictionaryDataSelectQueryResultOption>(); |
| | | option.Data = model; |
| | | option.Value = model.Code; |
| | | option.Label = model.Content; |
| | | options.Add(option); |
| | | } |
| | | if (request.WithChildren) |
| | | { |
| | | var parents = models.Where(it => it.Data.ParentId == null).ToList(); |
| | | LoopChildrens(parents, models); |
| | | var parents = options.Where(it => it.Data.ParentId == null).ToList(); |
| | | LoopChildrens(parents, options); |
| | | return parents; |
| | | } |
| | | return models; |
| | | return options; |
| | | } |
| | | |
| | | /// <summary> |