FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs
@@ -12,9 +12,13 @@ public enum EnumTaskCheckReceiveStatus { /// <summary> /// 待提交 /// </summary> WaitSubmit = 10, /// <summary> /// 待验收 /// </summary> Wait = 10, WaitCheckReceive = 10, /// <summary> /// 已验收 /// </summary> FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs
New file @@ -0,0 +1,79 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 查询验收任务分页列表 /// </summary> [Resource([EnumResourceController.Task])] public class GetCheckReceiveTaskInfosQuery : PagedListQuery<GetCheckReceiveTaskInfosQueryResult, GetCheckReceiveTaskInfosQueryResultItem> { /// <summary> /// 关键字 /// </summary> public string Keywords { get; set; } /// <summary> /// 验收日期-最早时间 /// </summary> public DateTime? SubmitTimeBegin { get; set; } /// <summary> /// 验收日期-最晚时间 /// </summary> public DateTime? SubmitTimeEnd { get; set; } /// <summary> /// 验收状态 /// </summary> public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; } } /// <summary> /// 查询验收任务分页列表-结果 /// </summary> public class GetCheckReceiveTaskInfosQueryResult : PagedListQueryResult<GetCheckReceiveTaskInfosQueryResultItem> { } /// <summary> /// 查询验收任务分页列表-结果-项 /// </summary> public class GetCheckReceiveTaskInfosQueryResultItem { /// <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 string AddressName { get; set; } /// <summary> /// 验收状态 /// </summary> public EnumTaskCheckReceiveStatus CheckReceiveStatus { get; set; } } } FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -184,8 +184,51 @@ /// 录用状态 /// </summary> public EnumTaskUserHireStatus? HireStatus { get; set; } /// <summary> /// 我的报名列表状态 /// </summary> public GetTaskInfoQueryResultApplyButton? ApplyButton { get; set; } /// <summary> /// 我的已录用列表状态 /// </summary> public GetTaskInfoQueryResultHireButton? HireButton { get; set; } } /// <summary> /// 我的报名列表-详情-按钮类型 /// </summary> public enum GetTaskInfoQueryResultApplyButton { /// <summary> /// 待确认 /// </summary> WaitHire = 10, /// <summary> /// 去签约 /// </summary> WaitSignContract = 20 } /// <summary> /// 我的录用列表-详情-按钮类型 /// </summary> public enum GetTaskInfoQueryResultHireButton { /// <summary> /// 申请验收 /// </summary> ApplyCheckReceive = 1, /// <summary> /// 进行中 /// </summary> InProcess = 10, /// <summary> /// 已完成 /// </summary> Completed = 20 } /// <summary> /// 查询任务详情-结果-福利 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -37,6 +37,7 @@ /// <returns></returns> public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { var now = DateTime.Now; var logier = JwtUtils.GetCurrentLogier(); var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) @@ -48,11 +49,37 @@ .CountAsync(it => it.TaskInfoId == model.Id); if (logier != null && logier.Type == EnumUserType.Personal) { model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() var taskUser = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() .Include(it => it.EnterpriseEmployee) .Where(it => it.TaskInfoId == model.Id && it.EnterpriseEmployee.UserId == logier.Id) .Select(it => it.EnterpriseEmployee.HireStatus) .Select(it => new { it.Id, it.EnterpriseEmployee.HireStatus, it.EnterpriseEmployee.UserSignContractStatus }) .FirstOrDefaultAsync(); if (taskUser != null) { model.HireStatus = taskUser.HireStatus; model.ApplyButton = taskUser.HireStatus == EnumTaskUserHireStatus.Wait ? GetTaskInfoQueryResultApplyButton.WaitHire : taskUser.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait ? GetTaskInfoQueryResultApplyButton.WaitSignContract : null; model.HireButton = now <= model.EndTime ? GetTaskInfoQueryResultHireButton.InProcess : GetTaskInfoQueryResultHireButton.Completed; if (model.HireButton == GetTaskInfoQueryResultHireButton.InProcess && model.BeginTime <= now) { var submit = await rep.Change<TaskInfoUserSubmit>().AsQueryable().AsNoTracking() .AnyAsync(it => it.TaskInfoUserId == taskUser.Id && it.CheckReceiveStatus >= EnumTaskUserSubmitCheckReceiveStatus.Wait); if (!submit) { model.HireButton = GetTaskInfoQueryResultHireButton.ApplyCheckReceive; } } } model.IsCollected = await rep.Change<UserTaskCollect>().AsQueryable().AsNoTracking() .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id); }