sunpengfei
2025-08-08 bf5084b9bd44ba20ace6107536cba6955e94ceaf
pref:优化
5个文件已修改
103 ■■■■ 已修改文件
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/DbUtils/DbUtils.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/DbUtils/PagedListQuery.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -47,7 +47,7 @@
        /// <summary>
        /// 企业全称
        /// </summary>
        [JsonProperty("EnterpriseName")]
        [JsonProperty("enterpriseName")]
        public string EnterpriseEnterpriseName { get; set; }
        /// <summary>
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
@@ -11,7 +11,7 @@
    /// 查询任务分页列表
    /// </summary>
    [Resource([EnumResourceController.Task], AllowAnonymous = true)]
    public class GetTaskInfosQuery : PagedListQuery<PagedListQueryResult<GetTaskInfosQueryResultItem>, GetTaskInfosQueryResultItem>
    public class GetTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>
    {
        public GetTaskInfosQuery()
        {
@@ -74,6 +74,37 @@
        public EnumTaskRecommendStatus? RecommendStatus { get; set; }
    }
    public class GetTaskInfosQueryResult : PagedListQueryResult<GetTaskInfosQueryResultItem>
    {
        /// <summary>
        /// 统计
        /// </summary>
        public GetTaskInfosQueryResultCount Count { get; set; }
    }
    public class GetTaskInfosQueryResultCount
    {
        /// <summary>
        /// 待安排数量
        /// </summary>
        public int WaitAssignCount { get; set; }
        /// <summary>
        /// 已安排数量
        /// </summary>
        public int CompletedAssignCount { get; set; }
        /// <summary>
        /// 发布中数量
        /// </summary>
        public int InProcessReleaseCount { get; set; }
        /// <summary>
        /// 已停止数量
        /// </summary>
        public int StoppedReleaseCount { get; set; }
    }
    /// <summary>
    /// 查询任务分页列表-结果-项
    /// </summary>
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);
            }
FlexJobApi.Core/Utils/DbUtils/PagedListQuery.cs
@@ -71,11 +71,18 @@
        public EnumPagedListOrder Order { get; set; }
    }
    public interface IPagedListQueryResult<TItem>
        where TItem : class, new()
    {
        PagedListQueryResultPageModel PageModel { get; set; }
        List<TItem> Data { get; set; }
    }
    /// <summary>
    /// 查询分页列表-结果
    /// </summary>
    /// <typeparam name="TItem"></typeparam>
    public class PagedListQueryResult<TItem>
    public class PagedListQueryResult<TItem> : IPagedListQueryResult<TItem>
        where TItem : class, new()
    {
        public PagedListQueryResult()
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -20,7 +20,7 @@
            IRepository<DictionaryData> repDictionaryData
        ) :
        IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>,
        IRequestHandler<GetTaskInfosQuery, PagedListQueryResult<GetTaskInfosQueryResultItem>>
        IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>
    {
        private readonly IRepository<TaskInfo> rep = rep;
@@ -50,7 +50,7 @@
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken)
        public async Task<GetTaskInfosQueryResult> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken)
        {
            var q = TaskInfoRepository.GetQueryable(rep);
            if (request.Keywords.IsNotNull())
@@ -81,6 +81,15 @@
            {
                q = q.Where(it => it.GenderLimit == request.GenderLimit);
            }
            var count = new GetTaskInfosQueryResultCount
            {
                WaitAssignCount = await q.CountAsync(it => it.Status == EnumTaskStatus.Wait),
                CompletedAssignCount = await q.CountAsync(it => it.Status == EnumTaskStatus.Complete),
                InProcessReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.InProcess),
                StoppedReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.Stopped),
            };
            if (request.Status.HasValue)
            {
                q = q.Where(it => it.Status == request.Status);
@@ -131,7 +140,7 @@
                        RecommendStatus = t.RecommendStatus,
                        SettlementStatus = t.SettlementStatus
                    };
            return request.PageModel.GetPagedListAsync(s, cancellationToken);
            var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken);
        }
    }
}