sunpengfei
2025-08-12 421b883ad4a46a680c9312101febcf190bc5f128
feat:开发
3个文件已添加
6个文件已修改
697 ■■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.xml 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3763,6 +3763,211 @@
            发布状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQuery">
            <summary>
            我的报名分页列表
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResult">
            <summary>
            我的报名分页列表-结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem">
            <summary>
            我的报名分页列表-结果-项
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.Id">
            <summary>
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.Name">
            <summary>
            任务名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.BeginTime">
            <summary>
            任务开始时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.EndTime">
            <summary>
            任务结束时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.BillingMethod">
            <summary>
            结算周期
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.ServiceFee">
            <summary>
            服务费
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.SettlementCycle">
            <summary>
            结算方式
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.Benefits">
            <summary>
            福利
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryResultItem.Status">
            <summary>
            状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryStatus">
            <summary>
            我的报名分页列表-状态
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryStatus.WaitHire">
            <summary>
            待确认
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.GetPersonalApplyTaskInfosQueryStatus.WaitSignContract">
            <summary>
            待签约
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalCancelTaskInfosQuery">
            <summary>
            我的已取消分页列表
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResult">
            <summary>
            我的已取消分页列表-结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem">
            <summary>
            我的已取消分页列表-结果-项
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.Id">
            <summary>
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.Name">
            <summary>
            任务名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.BeginTime">
            <summary>
            任务开始时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.EndTime">
            <summary>
            任务结束时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.BillingMethod">
            <summary>
            结算周期
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.ServiceFee">
            <summary>
            服务费
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.SettlementCycle">
            <summary>
            结算方式
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalCancelTaskInfosQueryResultItem.Benefits">
            <summary>
            福利
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalHireTaskInfosQuery">
            <summary>
            我的已录用分页列表
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResult">
            <summary>
            我的已录用分页列表-结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem">
            <summary>
            我的已录用分页列表-结果-项
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.Id">
            <summary>
            任务Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.Name">
            <summary>
            任务名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.BeginTime">
            <summary>
            任务开始时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.EndTime">
            <summary>
            任务结束时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.BillingMethod">
            <summary>
            结算周期
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.ServiceFee">
            <summary>
            服务费
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.SettlementCycle">
            <summary>
            结算方式
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.Benefits">
            <summary>
            福利
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetPersonalHireTaskInfosQueryResultItem.Status">
            <summary>
            状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetPersonalHireTaskInfosQueryStatus">
            <summary>
            我的已录用分页列表-状态
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.GetPersonalHireTaskInfosQueryStatus.InProcess">
            <summary>
            进行中
            </summary>
        </member>
        <member name="F:FlexJobApi.Core.GetPersonalHireTaskInfosQueryStatus.Completed">
            <summary>
            已完成
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetTaskInfoQuery">
            <summary>
            查询任务详情
@@ -4028,11 +4233,6 @@
            验收状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskInfosQuery.HireStatus">
            <summary>
            录用状态
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskInfosQueryResult.ObjectData">
            <summary>
            统计
@@ -4193,11 +4393,6 @@
            创建时间
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.HireStatus">
            <summary>
            录用状态
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.TaskInfoRepository">
            <summary>
            任务仓库
@@ -4254,7 +4449,7 @@
        </member>
        <member name="T:FlexJobApi.Core.GetTaskUsersQuery">
            <summary>
            查询应聘报名分页列表信息
            B端查询应聘报名分页列表信息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetTaskUsersQuery.Id">
FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
@@ -9,7 +9,7 @@
namespace FlexJobApi.Core
{
    /// <summary>
    /// 查询应聘报名分页列表信息
    /// B端查询应聘报名分页列表信息
    /// </summary>
    [Resource([EnumResourceController.TaskUser])]
    public class GetTaskUsersQuery : PagedListQuery<GetTaskUsersQueryResult, GetTaskUsersQueryResultItem>
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
New file
@@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 我的报名分页列表
    /// </summary>
    [Resource([EnumResourceController.Task])]
    public class GetPersonalApplyTaskInfosQuery : PagedListQuery<GetPersonalApplyTaskInfosQueryResult, GetPersonalApplyTaskInfosQueryResultItem>
    {
        public GetPersonalApplyTaskInfosQueryStatus? Status { get; set; }
    }
    /// <summary>
    /// 我的报名分页列表-结果
    /// </summary>
    public class GetPersonalApplyTaskInfosQueryResult : PagedListQueryResult<GetPersonalApplyTaskInfosQueryResultItem>
    {
    }
    /// <summary>
    /// 我的报名分页列表-结果-项
    /// </summary>
    public class GetPersonalApplyTaskInfosQueryResultItem
    {
        public GetPersonalApplyTaskInfosQueryResultItem()
        {
            Benefits = [];
        }
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// 任务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 任务开始时间
        /// </summary>
        public DateTime BeginTime { get; set; }
        /// <summary>
        /// 任务结束时间
        /// </summary>
        public DateTime EndTime { get; set; }
        /// <summary>
        /// 结算周期
        /// </summary>
        public EnumBillingMethod BillingMethod { get; set; }
        /// <summary>
        /// 服务费
        /// </summary>
        public decimal ServiceFee { get; set; }
        /// <summary>
        /// 结算方式
        /// </summary>
        public EnumSettlementCycle SettlementCycle { get; set; }
        /// <summary>
        /// 福利
        /// </summary>
        public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public GetPersonalApplyTaskInfosQueryStatus Status { get; set; }
    }
    /// <summary>
    /// 我的报名分页列表-状态
    /// </summary>
    public enum GetPersonalApplyTaskInfosQueryStatus
    {
        /// <summary>
        /// 待确认
        /// </summary>
        WaitHire = 10,
        /// <summary>
        /// 待签约
        /// </summary>
        WaitSignContract = 20
    }
}
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
New file
@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 我的已取消分页列表
    /// </summary>
    [Resource([EnumResourceController.Task])]
    public class GetPersonalCancelTaskInfosQuery : PagedListQuery<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>
    {
    }
    /// <summary>
    /// 我的已取消分页列表-结果
    /// </summary>
    public class GetPersonalCancelTaskInfosQueryResult : PagedListQueryResult<GetPersonalCancelTaskInfosQueryResultItem>
    {
    }
    /// <summary>
    /// 我的已取消分页列表-结果-项
    /// </summary>
    public class GetPersonalCancelTaskInfosQueryResultItem
    {
        public GetPersonalCancelTaskInfosQueryResultItem()
        {
            Benefits = [];
        }
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// 任务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 任务开始时间
        /// </summary>
        public DateTime BeginTime { get; set; }
        /// <summary>
        /// 任务结束时间
        /// </summary>
        public DateTime EndTime { get; set; }
        /// <summary>
        /// 结算周期
        /// </summary>
        public EnumBillingMethod BillingMethod { get; set; }
        /// <summary>
        /// 服务费
        /// </summary>
        public decimal ServiceFee { get; set; }
        /// <summary>
        /// 结算方式
        /// </summary>
        public EnumSettlementCycle SettlementCycle { get; set; }
        /// <summary>
        /// 福利
        /// </summary>
        public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
    }
}
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
New file
@@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 我的已录用分页列表
    /// </summary>
    [Resource([EnumResourceController.Task])]
    public class GetPersonalHireTaskInfosQuery : PagedListQuery<GetPersonalHireTaskInfosQueryResult, GetPersonalHireTaskInfosQueryResultItem>
    {
        public GetPersonalHireTaskInfosQueryStatus? Status { get; set; }
    }
    /// <summary>
    /// 我的已录用分页列表-结果
    /// </summary>
    public class GetPersonalHireTaskInfosQueryResult : PagedListQueryResult<GetPersonalHireTaskInfosQueryResultItem>
    {
    }
    /// <summary>
    /// 我的已录用分页列表-结果-项
    /// </summary>
    public class GetPersonalHireTaskInfosQueryResultItem
    {
        public GetPersonalHireTaskInfosQueryResultItem()
        {
            Benefits = [];
        }
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// 任务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 任务开始时间
        /// </summary>
        public DateTime BeginTime { get; set; }
        /// <summary>
        /// 任务结束时间
        /// </summary>
        public DateTime EndTime { get; set; }
        /// <summary>
        /// 结算周期
        /// </summary>
        public EnumBillingMethod BillingMethod { get; set; }
        /// <summary>
        /// 服务费
        /// </summary>
        public decimal ServiceFee { get; set; }
        /// <summary>
        /// 结算方式
        /// </summary>
        public EnumSettlementCycle SettlementCycle { get; set; }
        /// <summary>
        /// 福利
        /// </summary>
        public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
        /// <summary>
        /// 状态
        /// </summary>
        public GetPersonalHireTaskInfosQueryStatus Status { get; set; }
    }
    /// <summary>
    /// 我的已录用分页列表-状态
    /// </summary>
    public enum GetPersonalHireTaskInfosQueryStatus
    {
        /// <summary>
        /// 进行中
        /// </summary>
        InProcess = 10,
        /// <summary>
        /// 已完成
        /// </summary>
        Completed = 20
    }
}
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
@@ -16,7 +16,6 @@
        public GetTaskInfosQuery()
        {
            BenefitCodes = [];
            HireStatus = [];
        }
        /// <summary>
@@ -78,11 +77,6 @@
        /// 验收状态
        /// </summary>
        public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
        /// <summary>
        /// 录用状态
        /// </summary>
        public List<EnumTaskUserHireStatus> HireStatus { get; set; }
    }
    public class GetTaskInfosQueryResult : PagedListQueryResult<GetTaskInfosQueryResultItem>
@@ -251,10 +245,5 @@
        /// 创建时间
        /// </summary>
        public DateTimeOffset CreatedTime { get; set; }
        /// <summary>
        /// 录用状态
        /// </summary>
        public EnumTaskUserHireStatus? HireStatus { get; set; }
    }
}
FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -73,6 +73,30 @@
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetPersonalApplyTaskInfosQuery,System.Threading.CancellationToken)">
            <summary>
            我的报名分页列表
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetPersonalHireTaskInfosQuery,System.Threading.CancellationToken)">
            <summary>
            我的已录用分页列表
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetPersonalCancelTaskInfosQuery,System.Threading.CancellationToken)">
            <summary>
            我的已取消分页列表
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="T:FlexJobApi.FlexJobServer.Application.ApplyTaskCommandHandler">
            <summary>
            报名任务
@@ -129,7 +153,7 @@
        </member>
        <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserQueryHandler.Handle(FlexJobApi.Core.GetTaskUsersQuery,System.Threading.CancellationToken)">
            <summary>
            查询应聘报名分页列表信息
            B端查询应聘报名分页列表信息
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -20,7 +20,7 @@
        private readonly IRepository<TaskInfoUser> rep = rep;
        /// <summary>
        /// 查询应聘报名分页列表信息
        /// B端查询应聘报名分页列表信息
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -20,7 +20,10 @@
            IRepository<DictionaryData> repDictionaryData
        ) :
        IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>,
        IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>
        IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>,
        IRequestHandler<GetPersonalApplyTaskInfosQuery, GetPersonalApplyTaskInfosQueryResult>,
        IRequestHandler<GetPersonalHireTaskInfosQuery, GetPersonalHireTaskInfosQueryResult>,
        IRequestHandler<GetPersonalCancelTaskInfosQuery, GetPersonalCancelTaskInfosQueryResult>
    {
        private readonly IRepository<TaskInfo> rep = rep;
@@ -94,10 +97,6 @@
            {
                q = q.Where(it => it.GenderLimit == request.GenderLimit);
            }
            if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal)
            {
                q = q.Where(it => it.TaskInfoUsers.Any(u => request.HireStatus.Contains(u.EnterpriseEmployee.HireStatus)));
            }
            var count = new GetTaskInfosQueryResultObjectData
            {
@@ -159,14 +158,164 @@
                        CheckReceiveStatus = t.CheckReceiveStatus,
                        CreatedTime = t.CreatedTime,
                        RecommendStatus = t.RecommendStatus,
                        SettlementStatus = t.SettlementStatus,
                        HireStatus = logier != null
                            ? t.TaskInfoUsers.Where(it => it.EnterpriseEmployee.UserId == logier.Id).Select(u => u.EnterpriseEmployee.HireStatus).FirstOrDefault()
                            : null
                        SettlementStatus = t.SettlementStatus
                    };
            var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken);
            result.ObjectData = count;
            return result;
        }
        /// <summary>
        /// 我的报名分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetPersonalApplyTaskInfosQueryResult> Handle(GetPersonalApplyTaskInfosQuery request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var q = TaskInfoRepository.GetQueryable(rep, true, logier);
            if (request.Status.HasValue)
            {
                switch (request.Status.Value)
                {
                    case GetPersonalApplyTaskInfosQueryStatus.WaitHire:
                        q = q.Where(it =>
                            it.TaskInfoUsers.Any(tu =>
                                tu.EnterpriseEmployee.UserId == logier.Id
                                && tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait));
                        break;
                    case GetPersonalApplyTaskInfosQueryStatus.WaitSignContract:
                        q = q.Where(it =>
                            it.TaskInfoUsers.Any(tu =>
                                tu.EnterpriseEmployee.UserId == logier.Id
                                && tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait));
                        break;
                    default:
                        break;
                }
            }
            else
            {
                q = q.Where(it =>
                    it.TaskInfoUsers.Any(tu =>
                        tu.EnterpriseEmployee.UserId == logier.Id
                        && (tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait
                        || tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait)));
            }
            var s = q.Select(it => new GetPersonalApplyTaskInfosQueryResultItem
            {
                Id = it.Id,
                Name = it.Name,
                BeginTime = it.BeginTime,
                EndTime = it.EndTime,
                BillingMethod = it.BillingMethod,
                ServiceFee = it.ServiceFee,
                SettlementCycle = it.SettlementCycle,
                Benefits = it.Benefits.Select(it => new GetTaskInfoQueryResultBenefit
                {
                    BenefitCode = it.BenefitCode,
                    BenefitContent = it.Benefit.Content
                }).ToList(),
                Status = it.TaskInfoUsers.Any(it =>
                    it.EnterpriseEmployee.UserId == logier.Id
                    && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait)
                    ? GetPersonalApplyTaskInfosQueryStatus.WaitHire
                    : GetPersonalApplyTaskInfosQueryStatus.WaitSignContract
            });
            return await request.PageModel.GetPagedListAsync<GetPersonalApplyTaskInfosQueryResult, GetPersonalApplyTaskInfosQueryResultItem>(s, cancellationToken);
        }
        /// <summary>
        /// 我的已录用分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetPersonalHireTaskInfosQueryResult> Handle(GetPersonalHireTaskInfosQuery request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            var logier = JwtUtils.GetCurrentLogier();
            var q = TaskInfoRepository.GetQueryable(rep, true, logier).Where(it =>
                it.TaskInfoUsers.Any(tu =>
                    tu.EnterpriseEmployee.UserId == logier.Id
                    && tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass
                    && tu.ArrangeStatus == EnumTaskUserArrangeStatus.Complete));
            if (request.Status.HasValue)
            {
                switch (request.Status.Value)
                {
                    case GetPersonalHireTaskInfosQueryStatus.InProcess:
                        q = q.Where(it => now <= it.EndTime);
                        break;
                    case GetPersonalHireTaskInfosQueryStatus.Completed:
                        q = q.Where(it => it.EndTime < now);
                        break;
                    default:
                        break;
                }
            }
            else
            {
                q = q.Where(it =>
                    it.TaskInfoUsers.Any(tu =>
                        tu.EnterpriseEmployee.UserId == logier.Id
                        && (tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait
                        || tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait)));
            }
            var s = q.Select(it => new GetPersonalHireTaskInfosQueryResultItem
            {
                Id = it.Id,
                Name = it.Name,
                BeginTime = it.BeginTime,
                EndTime = it.EndTime,
                BillingMethod = it.BillingMethod,
                ServiceFee = it.ServiceFee,
                SettlementCycle = it.SettlementCycle,
                Benefits = it.Benefits.Select(it => new GetTaskInfoQueryResultBenefit
                {
                    BenefitCode = it.BenefitCode,
                    BenefitContent = it.Benefit.Content
                }).ToList(),
                Status = now <= it.EndTime
                    ? GetPersonalHireTaskInfosQueryStatus.InProcess
                    : GetPersonalHireTaskInfosQueryStatus.Completed
            });
            return await request.PageModel.GetPagedListAsync<GetPersonalHireTaskInfosQueryResult, GetPersonalHireTaskInfosQueryResultItem>(s, cancellationToken);
        }
        /// <summary>
        /// 我的已取消分页列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetPersonalCancelTaskInfosQueryResult> Handle(GetPersonalCancelTaskInfosQuery request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            var logier = JwtUtils.GetCurrentLogier();
            var q = TaskInfoRepository.GetQueryable(rep, true, logier).Where(it =>
                it.TaskInfoUsers.Any(tu =>
                    tu.EnterpriseEmployee.UserId == logier.Id
                    && (tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Refuse
                    || tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Refuse
                    || tu.EnterpriseEmployee.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Refuse)));
            var s = q.Select(it => new GetPersonalCancelTaskInfosQueryResultItem
            {
                Id = it.Id,
                Name = it.Name,
                BeginTime = it.BeginTime,
                EndTime = it.EndTime,
                BillingMethod = it.BillingMethod,
                ServiceFee = it.ServiceFee,
                SettlementCycle = it.SettlementCycle,
                Benefits = it.Benefits.Select(it => new GetTaskInfoQueryResultBenefit
                {
                    BenefitCode = it.BenefitCode,
                    BenefitContent = it.Benefit.Content
                }).ToList(),
            });
            return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken);
        }
    }
}