|
|
|
@ -1,4 +1,6 @@
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Collections.Concurrent;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using DS.Module.Core.Data;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using SqlSugar;
|
|
|
|
@ -7,6 +9,36 @@ namespace DS.Module.Core.Extensions;
|
|
|
|
|
|
|
|
|
|
public static partial class Extensions
|
|
|
|
|
{
|
|
|
|
|
static readonly ConcurrentDictionary<Type, string[]> OrderFieldCache = [];
|
|
|
|
|
|
|
|
|
|
internal static List<OrderByModel> GetOrderFields<T>(OrderByType orderByType = OrderByType.Desc)
|
|
|
|
|
{
|
|
|
|
|
Type type = typeof(T);
|
|
|
|
|
if (!OrderFieldCache.TryGetValue(type, out string[]? fields))
|
|
|
|
|
{
|
|
|
|
|
List<string> list = new List<string>(2);
|
|
|
|
|
var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
|
|
|
|
|
|
|
|
|
//查找ID或创建时间,暂时只设置一个默认排序字段
|
|
|
|
|
var propId = Array.Find(properties, x => x.Name == "Id");
|
|
|
|
|
if (propId != null)
|
|
|
|
|
{
|
|
|
|
|
list.Add(propId.Name);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var propCT = Array.Find(properties, x => x.Name == "CreateTime");
|
|
|
|
|
if (propCT != null)
|
|
|
|
|
list.Add(propCT.Name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fields = [.. list];
|
|
|
|
|
OrderFieldCache.AddOrUpdate(type, fields, (k, v) => v = fields);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fields.Select(x => new OrderByModel { FieldName = x, OrderByType = orderByType }).ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 多排序方法
|
|
|
|
|
/// </summary>
|
|
|
|
@ -101,9 +133,11 @@ public static partial class Extensions
|
|
|
|
|
ISugarQueryable<TEntity> orderSource;
|
|
|
|
|
if (orderConditions == null || orderConditions.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
// orderSource = source.OrderBy("Id ascending");
|
|
|
|
|
orderSource = source.OrderBy("CreateTime desc");
|
|
|
|
|
// orderSource = source.OrderBy("GID");
|
|
|
|
|
orderSource = source;
|
|
|
|
|
|
|
|
|
|
var orderFields = GetOrderFields<TEntity>();
|
|
|
|
|
if (orderFields?.Count > 0)
|
|
|
|
|
orderSource = source.OrderBy(orderFields);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -124,8 +158,11 @@ public static partial class Extensions
|
|
|
|
|
ISugarQueryable<TEntity> orderSource;
|
|
|
|
|
if (orderConditions == null || orderConditions.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
//orderSource = source.OrderBy("Id");
|
|
|
|
|
orderSource = source.OrderBy("CreateTime desc");
|
|
|
|
|
orderSource = source;
|
|
|
|
|
|
|
|
|
|
var orderFields = GetOrderFields<TEntity>();
|
|
|
|
|
if (orderFields?.Count > 0)
|
|
|
|
|
orderSource = source.OrderBy(orderFields);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -145,8 +182,11 @@ public static partial class Extensions
|
|
|
|
|
ISugarQueryable<TEntity> orderSource;
|
|
|
|
|
if (orderConditions == null || orderConditions.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
//orderSource = source.OrderBy("Id");
|
|
|
|
|
orderSource = source.OrderBy("CreateTime desc");
|
|
|
|
|
orderSource = source;
|
|
|
|
|
|
|
|
|
|
var orderFields = GetOrderFields<TEntity>();
|
|
|
|
|
if (orderFields?.Count > 0)
|
|
|
|
|
orderSource = source.OrderBy(orderFields);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -165,7 +205,11 @@ public static partial class Extensions
|
|
|
|
|
ISugarQueryable<TEntity> orderSource;
|
|
|
|
|
if (orderConditions == null || orderConditions.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
orderSource = source.OrderBy("CreateTime desc");
|
|
|
|
|
orderSource = source;
|
|
|
|
|
|
|
|
|
|
var orderFields = GetOrderFields<TEntity>();
|
|
|
|
|
if (orderFields?.Count > 0)
|
|
|
|
|
orderSource = source.OrderBy(orderFields);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|