From cd967e892418733e0bf4878c26f0cdb60c958120 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 08 八月 2025 17:51:35 +0800
Subject: [PATCH] pref:开发

---
 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs |   44 +++++++++++++++++++++++++++++++-------------
 1 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
index 55647c2..2e0f85f 100644
--- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
+++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
@@ -160,6 +160,31 @@
             result.Data = pagedList.Items.ToList();
             return result;
         }
+        /// <summary>
+        /// 鏌ヨ鍒嗛〉鍒楄〃鏁版嵁
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <typeparam name="TItem"></typeparam>
+        /// <param name="page"></param>
+        /// <param name="q"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public static async Task<TResult> GetPagedListAsync<TResult, TItem>(
+            this PagedListQueryPageModel page,
+            IQueryable<TItem> q,
+            CancellationToken cancellationToken = default)
+            where TItem : class, new()
+            where TResult : PagedListQueryResult<TItem>, new()
+        {
+            q = q.CustomOrderBy(page.OrderInput);
+            var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken);
+            var result = new TResult();
+            result.PageModel = page.Adapt<PagedListQueryResultPageModel>();
+            result.PageModel.TotalCount = pagedList.TotalCount;
+            result.PageModel.TotalPage = pagedList.TotalPages;
+            result.Data = pagedList.Items.ToList();
+            return result;
+        }
 
         /// <summary>
         /// 鏌ヨ鍒嗛〉鍒楄〃鏁版嵁
@@ -169,34 +194,27 @@
         /// <param name="q"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public static async Task<PagedListQueryResult<TItem>> GetPagedListAsync<TItem>(
+        public static Task<PagedListQueryResult<TItem>> GetPagedListAsync<TItem>(
             this PagedListQueryPageModel page,
             IQueryable<TItem> q,
             CancellationToken cancellationToken = default)
             where TItem : class, new()
         {
-            q = q.CustomOrderBy(page.OrderInput);
-            var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken);
-            var result = new PagedListQueryResult<TItem>();
-            result.PageModel = page.Adapt<PagedListQueryResultPageModel>();
-            result.PageModel.TotalCount = pagedList.TotalCount;
-            result.PageModel.TotalPage = pagedList.TotalPages;
-            result.Data = pagedList.Items.ToList();
-            return result;
+            return GetPagedListAsync<PagedListQueryResult<TItem>, TItem>(page, q, cancellationToken);
         }
 
         public static IOrderedQueryable<T> CustomOrderBy<T>(this IQueryable<T> q, List<PagedListQueryPageModelOrderInput> orders)
         {
             ParameterExpression parameter = Expression.Parameter(typeof(T), "p");
             PagedListQueryPageModelOrderInput orderInput = orders[0];
-            IOrderedQueryable<T> orderedQueryable = (orderInput.Order == EnumPagedListOrder.Asc) 
-                ? OrderBy(q, orderInput.Property, parameter) 
+            IOrderedQueryable<T> orderedQueryable = (orderInput.Order == EnumPagedListOrder.Asc)
+                ? OrderBy(q, orderInput.Property, parameter)
                 : OrderByDescending(q, orderInput.Property, parameter);
             for (int i = 1; i < orders.Count; i++)
             {
                 PagedListQueryPageModelOrderInput orderInput2 = orders[i];
-                orderedQueryable = (orderInput2.Order == EnumPagedListOrder.Asc) 
-                    ? ThenBy(orderedQueryable, orderInput2.Property, parameter) 
+                orderedQueryable = (orderInput2.Order == EnumPagedListOrder.Asc)
+                    ? ThenBy(orderedQueryable, orderInput2.Property, parameter)
                     : ThenByDescending(orderedQueryable, orderInput2.Property, parameter);
             }
 

--
Gitblit v1.9.1