diff --git a/Api/Ewide.Core/Ewide.Core.xml b/Api/Ewide.Core/Ewide.Core.xml index c22dbc4..1c1b82a 100644 --- a/Api/Ewide.Core/Ewide.Core.xml +++ b/Api/Ewide.Core/Ewide.Core.xml @@ -2491,19 +2491,6 @@ - - - 通用输入帮助类 - - - - - 排序方式(默认降序) - - - 是否降序 - - 通用输入扩展参数(带权限) diff --git a/Api/Ewide.Core/Extension/PageExtensions.cs b/Api/Ewide.Core/Extension/PageExtensions.cs new file mode 100644 index 0000000..2cca436 --- /dev/null +++ b/Api/Ewide.Core/Extension/PageExtensions.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Furion.DatabaseAccessor; +using Furion.DatabaseAccessor.Extensions; +using Mapster; + +namespace Ewide.Core.Extension +{ + public static class PageExtensions + { + public static string OrderBuilder(PageInputBase pageInput, bool descSort = true) + { + var type = typeof(T); + var hasId = type.GetProperty("Id") == null; + + var defaultField = hasId ? "Sort" : "Id"; + + // 约定默认每张表都有Id排序 + var orderStr = defaultField + (descSort ? " Desc" : " Asc"); + + // 排序是否可用-排序字段和排序顺序都为非空才启用排序 + if (!string.IsNullOrEmpty(pageInput.SortField) && !string.IsNullOrEmpty(pageInput.SortOrder)) + { + orderStr = $"{pageInput.SortField} {(pageInput.SortOrder == pageInput.DescStr ? "Desc" : "Asc")}"; + } + return orderStr; + } + + public static Task> ToPageData(this IQueryable source, PageInputBase input) where T : new() + { + return source.OrderBy(OrderBuilder(input)).ToPagedListAsync(input.PageNo, input.PageSize); + } + + public static Task> ToPageData(this IQueryable source, PageInputBase input) where O : new() + { + return source.OrderBy(OrderBuilder(input)).Select(u => u.Adapt()).ToPagedListAsync(input.PageNo, input.PageSize); + } + } +} diff --git a/Api/Ewide.Core/Extension/PageInputOrder.cs b/Api/Ewide.Core/Extension/PageInputOrder.cs deleted file mode 100644 index 62c789a..0000000 --- a/Api/Ewide.Core/Extension/PageInputOrder.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Ewide.Core.Extension -{ - /// - /// 通用输入帮助类 - /// - public class PageInputOrder - { - /// - /// 排序方式(默认降序) - /// - /// - /// 是否降序 - /// - public static string OrderBuilder(PageInputBase pageInput, bool descSort = true) - { - // 约定默认每张表都有Id排序 - var orderStr = descSort ? "Id Desc" : "Id Asc"; - - // 排序是否可用-排序字段和排序顺序都为非空才启用排序 - if (!string.IsNullOrEmpty(pageInput.SortField) && !string.IsNullOrEmpty(pageInput.SortOrder)) - { - orderStr = $"{pageInput.SortField} {(pageInput.SortOrder == pageInput.DescStr ? "Desc" : "Asc")}"; - } - return orderStr; - } - } -} diff --git a/Api/Ewide.Core/Service/App/SysAppService.cs b/Api/Ewide.Core/Service/App/SysAppService.cs index 0e415d4..da067b9 100644 --- a/Api/Ewide.Core/Service/App/SysAppService.cs +++ b/Api/Ewide.Core/Service/App/SysAppService.cs @@ -1,4 +1,5 @@ -using Furion.DatabaseAccessor; +using Ewide.Core.Extension; +using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; @@ -69,13 +70,16 @@ namespace Ewide.Core.Service [HttpGet("/sysApp/page")] public async Task QueryAppPageList([FromQuery] AppInput input) { - var name = !string.IsNullOrEmpty(input.Name?.Trim()); - var code = !string.IsNullOrEmpty(input.Code?.Trim()); var apps = await _sysAppRep.DetachedEntities - .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")), - (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))) - //.Where(u => u.Status == (int)CommonStatus.ENABLE) - .ToPagedListAsync(input.PageNo, input.PageSize); + .Where( + !string.IsNullOrEmpty(input.Name?.Trim()), + u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%") + ) + .Where( + !string.IsNullOrEmpty(input.Code?.Trim()), + u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%") + ) + .ToPageData(input); return XnPageResult.PageResult(apps); } diff --git a/Api/Ewide.Core/Service/Log/SysOpLogService.cs b/Api/Ewide.Core/Service/Log/SysOpLogService.cs index 0170b6c..3a15f23 100644 --- a/Api/Ewide.Core/Service/Log/SysOpLogService.cs +++ b/Api/Ewide.Core/Service/Log/SysOpLogService.cs @@ -43,9 +43,7 @@ namespace Ewide.Core.Service .Where(success, u => u.Success == input.Success.Value) .Where(searchBeginTime, u => u.OpTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.OpTime <= DateTime.Parse(input.SearchEndTime.Trim())) - .OrderBy(PageInputOrder.OrderBuilder(input)) // 封装了任意字段排序示例 - .Select(u => u.Adapt()) - .ToPagedListAsync(input.PageNo, input.PageSize); + .ToPageData(input); return XnPageResult.PageResult(opLogs); } diff --git a/Api/Ewide.Core/Service/Log/SysVisLogService.cs b/Api/Ewide.Core/Service/Log/SysVisLogService.cs index fc52f6a..66f0fa0 100644 --- a/Api/Ewide.Core/Service/Log/SysVisLogService.cs +++ b/Api/Ewide.Core/Service/Log/SysVisLogService.cs @@ -1,4 +1,5 @@ -using Furion.DatabaseAccessor; +using Ewide.Core.Extension; +using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; @@ -41,9 +42,7 @@ namespace Ewide.Core.Service .Where(success, u => u.Success == input.Success.Value) .Where(searchBeginTime, u => u.VisTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.VisTime <= DateTime.Parse(input.SearchEndTime.Trim())) - .OrderByDescending(u => u.Id) - .Select(u => u.Adapt()) - .ToPagedListAsync(input.PageNo, input.PageSize); + .ToPageData(input); return XnPageResult.PageResult(visLogs); }