From 2fe93fe5c23f983b406ce77e5ec0778b578314bb Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 12 八月 2025 16:58:00 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs | 43 ++++++++++++++ FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs | 6 + FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 31 +++++++++ FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs | 79 ++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 3 deletions(-) diff --git a/FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs b/FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs index 8fb8d6a..23790e2 100644 --- a/FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs +++ b/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> diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs new file mode 100644 index 0000000..5ba7f83 --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs @@ -0,0 +1,79 @@ +锘縰sing 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; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs index d58bef9..b2e29cd 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs +++ b/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> /// 鏌ヨ浠诲姟璇︽儏-缁撴灉-绂忓埄 diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 3f46ec6..fe0b498 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/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); } -- Gitblit v1.9.1