From 94161f59f85ab482f283aaf861d7109bef326980 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 13 八月 2025 14:28:54 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs | 26 + FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs | 31 ++ FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs | 81 +++++ FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs | 1 FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs | 61 +++ FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs | 92 ++++++ FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml | 62 ++++ FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs | 49 +++ FlexJobApi.Core/FlexJobApi.Core.xml | 221 +++++++++++++++ FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs | 2 FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs | 156 +++++++++++ FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 13 12 files changed, 782 insertions(+), 13 deletions(-) diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index f557595..6ded59e 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -3743,6 +3743,36 @@ Cron琛ㄨ揪寮� </summary> </member> + <member name="T:FlexJobApi.Core.CheckReceiveTaskCommand"> + <summary> + 浠诲姟楠屾敹 + </summary> + </member> + <member name="P:FlexJobApi.Core.CheckReceiveTaskCommand.Id"> + <summary> + 鎻愪氦Id + </summary> + </member> + <member name="P:FlexJobApi.Core.CheckReceiveTaskCommand.CheckReceiveStatus"> + <summary> + 楠屾敹鐘舵�� + </summary> + </member> + <member name="T:FlexJobApi.Core.SubmitCheckReceiveTaskCommand"> + <summary> + 浠诲姟鎻愪氦楠屾敹 + </summary> + </member> + <member name="P:FlexJobApi.Core.SubmitCheckReceiveTaskCommand.TaskInfoId"> + <summary> + 浠诲姟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.SubmitCheckReceiveTaskCommand.Files"> + <summary> + 闄勪欢 + </summary> + </member> <member name="T:FlexJobApi.Core.GetCheckReceiveTaskQuery"> <summary> 鏌ヨ楠屾敹浠诲姟璇︽儏 @@ -3970,6 +4000,41 @@ 鏈�杩戦獙鏀舵椂闂� </summary> </member> + <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery"> + <summary> + 鏌ヨ楠屾敹鎻愪氦璇︽儏 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery.Id"> + <summary> + 鎻愪氦Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult"> + <summary> + 鏌ヨ楠屾敹鎻愪氦璇︽儏-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.Id"> + <summary> + 鎻愪氦Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.TaskInfoUserEnterpriseEmployeeUser"> + <summary> + 浜哄憳淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.CreatedTime"> + <summary> + 鎻愪氦鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQueryResult.Files"> + <summary> + 楠屾敹鐓х墖 + </summary> + </member> <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQuery"> <summary> 鏌ヨ楠屾敹璇︽儏 @@ -3983,6 +4048,97 @@ <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResult"> <summary> 鏌ヨ楠屾敹璇︽儏-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResult.ObjectData"> + <summary> + 璇︽儏 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData"> + <summary> + 鏌ヨ楠屾敹璇︽儏-缁撴灉-璇︽儏 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData.TaskInfo"> + <summary> + 浠诲姟淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectData.EnterpriseEmployeeUser"> + <summary> + 浜哄憳淇℃伅 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo"> + <summary> + 鏌ヨ楠屾敹璇︽儏-缁撴灉-璇︽儏-浠诲姟淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.Name"> + <summary> + 浠诲姟鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.BeginTime"> + <summary> + 浠诲姟寮�濮嬫椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.EndTime"> + <summary> + 浠诲姟缁撴潫鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo.AddressName"> + <summary> + 浠诲姟鍦扮偣鍚嶇О + </summary> + </member> + <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser"> + <summary> + 鏌ヨ楠屾敹璇︽儏-缁撴灉-璇︽儏-浜哄憳淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Avatar"> + <summary> + 澶村儚 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.Age"> + <summary> + 骞撮緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.ContactPhoneNumber"> + <summary> + 鎵嬫満鍙� + </summary> + <remarks>鑱旂郴鐢佃瘽</remarks> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.IsReal"> + <summary> + 鏄惁瀹炲悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser.RealMethod"> + <summary> + 瀹炲悕鏂瑰紡 </summary> </member> <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultItem"> @@ -4140,6 +4296,71 @@ 鍙戝竷鐘舵�� </summary> </member> + <member name="T:FlexJobApi.Core.GetOpenTaskInfosQuery"> + <summary> + 鏌ヨ寮�鏀句换鍔″垎椤靛垪琛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.Keywords"> + <summary> + 鍏抽敭瀛楋紙浠诲姟鍚嶇О锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.EnterpriseId"> + <summary> + 浼佷笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.BeginTime"> + <summary> + 鍙戝竷鏃堕棿-寮�濮� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.EndTime"> + <summary> + 鍙戝竷鏃堕棿-缁撴潫 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.CityCode"> + <summary> + 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.SettlementCycle"> + <summary> + 缁撶畻鏂瑰紡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.BenefitCodes"> + <summary> + 鍛樺伐绂忓埄 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.GenderLimit"> + <summary> + 鎬у埆瑕佹眰 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.Status"> + <summary> + 浠诲姟鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.ReleaseStatus"> + <summary> + 鍙戝竷鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.RecommendStatus"> + <summary> + 鎺ㄨ崘鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOpenTaskInfosQuery.CheckReceiveStatus"> + <summary> + 楠屾敹鐘舵�� + </summary> + </member> <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQuery"> <summary> 鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃 diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs new file mode 100644 index 0000000..a6b004b --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs @@ -0,0 +1,26 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 浠诲姟楠屾敹 + /// </summary> + [Resource([EnumResourceController.TaskCheckReceive])] + public class CheckReceiveTaskCommand : IRequest<Guid> + { + /// <summary> + /// 鎻愪氦Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 楠屾敹鐘舵�� + /// </summary> + public EnumTaskUserSubmitCheckReceiveStatus CheckReceiveStatus { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs new file mode 100644 index 0000000..5b846e3 --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs @@ -0,0 +1,31 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 浠诲姟鎻愪氦楠屾敹 + /// </summary> + [Resource([EnumResourceController.TaskCheckReceive])] + public class SubmitCheckReceiveTaskCommand : IRequest<Guid> + { + public SubmitCheckReceiveTaskCommand() + { + Files = []; + } + + /// <summary> + /// 浠诲姟Id + /// </summary> + public Guid TaskInfoId { get; set; } + + /// <summary> + /// 闄勪欢 + /// </summary> + public List<string> Files { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs new file mode 100644 index 0000000..c5d4cb7 --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs @@ -0,0 +1,49 @@ +锘縰sing MediatR; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ楠屾敹鎻愪氦璇︽儏 + /// </summary> + [Resource([EnumResourceController.TaskCheckReceive])] + public class GetCheckReceiveTaskUserSubmitQuery : IRequest<GetCheckReceiveTaskUserSubmitQueryResult> + { + /// <summary> + /// 鎻愪氦Id + /// </summary> + public Guid Id { get; set; } + } + + /// <summary> + /// 鏌ヨ楠屾敹鎻愪氦璇︽儏-缁撴灉 + /// </summary> + public class GetCheckReceiveTaskUserSubmitQueryResult + { + /// <summary> + /// 鎻愪氦Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 浜哄憳淇℃伅 + /// </summary> + [JsonProperty("enterpriseEmployeeUser")] + public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser TaskInfoUserEnterpriseEmployeeUser { get; set; } + + /// <summary> + /// 鎻愪氦鏃堕棿 + /// </summary> + public DateTimeOffset CreatedTime { get; set; } + + /// <summary> + /// 楠屾敹鐓х墖 + /// </summary> + public List<string> Files { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs index dfdd381..47325e8 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs +++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs @@ -25,7 +25,99 @@ /// </summary> public class GetCheckReceiveTaskUserSubmitsQueryResult : PagedListQueryResult<GetCheckReceiveTaskUserSubmitsQueryResultItem> { + /// <summary> + /// 璇︽儏 + /// </summary> + public GetCheckReceiveTaskUserSubmitsQueryResultObjectData ObjectData { get; set; } + } + /// <summary> + /// 鏌ヨ楠屾敹璇︽儏-缁撴灉-璇︽儏 + /// </summary> + public class GetCheckReceiveTaskUserSubmitsQueryResultObjectData + { + /// <summary> + /// 浠诲姟淇℃伅 + /// </summary> + public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo TaskInfo { get; set; } + + /// <summary> + /// 浜哄憳淇℃伅 + /// </summary> + public GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser EnterpriseEmployeeUser { get; set; } + } + + /// <summary> + /// 鏌ヨ楠屾敹璇︽儏-缁撴灉-璇︽儏-浠诲姟淇℃伅 + /// </summary> + public class GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo + { + /// <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 class GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser + { + /// <summary> + /// 澶村儚 + /// </summary> + public string Avatar { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + public string Identity { get; set; } + + /// <summary> + /// 鎬у埆 + /// </summary> + public EnumUserGender? Gender { get; set; } + + /// <summary> + /// 骞撮緞 + /// </summary> + public int? Age { get; set; } + + /// <summary> + /// 鎵嬫満鍙� + /// </summary> + /// <remarks>鑱旂郴鐢佃瘽</remarks> + public string ContactPhoneNumber { get; set; } + + /// <summary> + /// 鏄惁瀹炲悕 + /// </summary> + public bool IsReal { get; set; } + + /// <summary> + /// 瀹炲悕鏂瑰紡 + /// </summary> + public EnumUserRealMethod? RealMethod { get; set; } } /// <summary> diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs new file mode 100644 index 0000000..a6a9e10 --- /dev/null +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs @@ -0,0 +1,81 @@ +锘縰sing 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], AllowAnonymous = true)] + public class GetOpenTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem> + { + public GetOpenTaskInfosQuery() + { + BenefitCodes = []; + } + + /// <summary> + /// 鍏抽敭瀛楋紙浠诲姟鍚嶇О锛� + /// </summary> + public string Keywords { get; set; } + + /// <summary> + /// 浼佷笟Id + /// </summary> + public Guid? EnterpriseId { get; set; } + + /// <summary> + /// 鍙戝竷鏃堕棿-寮�濮� + /// </summary> + public DateTime? BeginTime { get; set; } + + /// <summary> + /// 鍙戝竷鏃堕棿-缁撴潫 + /// </summary> + public DateTime? EndTime { get; set; } + + /// <summary> + /// 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� + /// </summary> + public string CityCode { get; set; } + + /// <summary> + /// 缁撶畻鏂瑰紡 + /// </summary> + public EnumSettlementCycle? SettlementCycle { get; set; } + + /// <summary> + /// 鍛樺伐绂忓埄 + /// </summary> + public List<string> BenefitCodes { get; set; } + + /// <summary> + /// 鎬у埆瑕佹眰 + /// </summary> + public EnumUserGender? GenderLimit { get; set; } + + /// <summary> + /// 浠诲姟鐘舵�� + /// </summary> + public EnumTaskStatus? Status { get; set; } + + /// <summary> + /// 鍙戝竷鐘舵�� + /// </summary> + public EnumTaskReleaseStatus? ReleaseStatus { get; set; } + + /// <summary> + /// 鎺ㄨ崘鐘舵�� + /// </summary> + public EnumTaskRecommendStatus? RecommendStatus { get; set; } + + /// <summary> + /// 楠屾敹鐘舵�� + /// </summary> + public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs index d64ade0..2c8f722 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs @@ -10,7 +10,7 @@ /// <summary> /// 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 /// </summary> - [Resource([EnumResourceController.Task], AllowAnonymous = true)] + [Resource([EnumResourceController.Task])] public class GetTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem> { public GetTaskInfosQuery() diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml index 4a95c6e..2873482 100644 --- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml +++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml @@ -4,17 +4,43 @@ <name>FlexJobApi.FlexJobServer.Application</name> </assembly> <members> - <member name="T:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler"> + <member name="T:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler"> <summary> - 浠诲姟浜哄憳鏌ヨ澶勭悊鍣� + 浠诲姟楠屾敹鍛戒护澶勭悊鍣� </summary> </member> - <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser})"> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUserSubmit})"> <summary> - 浠诲姟浜哄憳鏌ヨ澶勭悊鍣� + 浠诲姟楠屾敹鍛戒护澶勭悊鍣� </summary> </member> - <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTasksQuery,System.Threading.CancellationToken)"> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.Handle(FlexJobApi.Core.SubmitCheckReceiveTaskCommand,System.Threading.CancellationToken)"> + <summary> + 浠诲姟鎻愪氦楠屾敹 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveCommandHandler.Handle(FlexJobApi.Core.CheckReceiveTaskCommand,System.Threading.CancellationToken)"> + <summary> + 浠诲姟楠屾敹 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler"> + <summary> + 浠诲姟楠屾敹鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUserSubmit})"> + <summary> + 浠诲姟楠屾敹鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTasksQuery,System.Threading.CancellationToken)"> <summary> 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃 </summary> @@ -22,9 +48,25 @@ <param name="cancellationToken"></param> <returns></returns> </member> - <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserSubmitQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskQuery,System.Threading.CancellationToken)"> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskQuery,System.Threading.CancellationToken)"> <summary> 鏌ヨ楠屾敹浠诲姟璇︽儏 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ楠屾敹璇︽儏 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskCheckReceiveQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskUserSubmitQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ楠屾敹鎻愪氦璇︽儏 </summary> <param name="request"></param> <param name="cancellationToken"></param> @@ -91,6 +133,14 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="M:FlexJobApi.FlexJobServer.Application.TaskInfoQueryHandler.Handle(FlexJobApi.Core.GetOpenTaskInfosQuery,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.GetTaskInfosQuery,System.Threading.CancellationToken)"> <summary> 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 diff --git a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs new file mode 100644 index 0000000..6e849f1 --- /dev/null +++ b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs @@ -0,0 +1,156 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using MediatR; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.FlexJobServer.Application +{ + /// <summary> + /// 浠诲姟楠屾敹鍛戒护澶勭悊鍣� + /// </summary> + public class TaskCheckReceiveCommandHandler( + IRepository<TaskInfo> repTaskInfo, + IRepository<TaskInfoUser> repTaskInfoUser, + IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit + ) : + IRequestHandler<SubmitCheckReceiveTaskCommand, Guid>, + IRequestHandler<CheckReceiveTaskCommand, Guid> + { + private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo; + private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; + private readonly IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit = repTaskInfoUserSubmit; + + /// <summary> + /// 浠诲姟鎻愪氦楠屾敹 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + [UnitOfWork] + public async Task<Guid> Handle(SubmitCheckReceiveTaskCommand request, CancellationToken cancellationToken) + { + var now = DateTime.Now; + var logier = JwtUtils.GetCurrentLogier(); + var task = await repTaskInfo.AsQueryable() + .FirstOrDefaultAsync(it => it.Id == request.TaskInfoId, cancellationToken); + if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ换鍔�"); + if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔℃殏鏈畨鎺掍汉鍛�"); + if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔″凡缁撴潫"); + if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔″凡缁撴潫"); + var taskUser = await repTaskInfoUser.AsQueryable() + .FirstOrDefaultAsync(it => it.TaskInfoId == task.Id && it.EnterpriseEmployee.UserId == logier.Id, cancellationToken); + if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ姤鍚嶄俊鎭�"); + if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "鏆傛湭瀹夋帓璇ヤ换鍔�"); + task.LastSubmitTime = now; + taskUser.LastSubmitTime = now; + var submit = await repTaskInfoUserSubmit.AsQueryable() + .Include(it => it.Files) + .FirstOrDefaultAsync(it => it.TaskInfoUserId == taskUser.Id && it.Date == now.Date); + if (submit == null) + { + submit = new TaskInfoUserSubmit + { + TaskInfoUserId = taskUser.Id, + Date = now.Date, + Files = request.Files.Select(it => new TaskInfoUserSubmitFile + { + File = it + }).ToList(), + CreatedTime = now, + CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive, + }; + await repTaskInfoUserSubmit.InsertAsync(submit); + return submit.Id; + } + else if (submit.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success) + { + throw Oops.Oh(EnumErrorCodeType.s510, "楠屾敹宸插畬鎴愶紝鏃犳硶淇敼"); + } + else + { + submit.Files = request.Files.Select(it => new TaskInfoUserSubmitFile + { + File = it + }).ToList(); + submit.CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive; + submit.CreatedTime = now; + await repTaskInfoUserSubmit.UpdateAsync(submit); + return submit.Id; + } + } + + /// <summary> + /// 浠诲姟楠屾敹 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + [UnitOfWork] + public async Task<Guid> Handle(CheckReceiveTaskCommand request, CancellationToken cancellationToken) + { + var now = DateTime.Now; + var logier = JwtUtils.GetCurrentLogier(); + var submit = await repTaskInfoUserSubmit.AsQueryable() + .Include(it => it.Files) + .FirstOrDefaultAsync(it => it.Id == request.Id); + if (submit == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ彁浜や俊鎭�"); + var taskUser = await repTaskInfoUser.AsQueryable() + .FirstOrDefaultAsync(it => it.Id == submit.TaskInfoUserId, cancellationToken); + if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ョ伒宸ヤ俊鎭�"); + if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "鏈畨鎺掕鐏靛伐"); + var task = await repTaskInfo.AsQueryable() + .FirstOrDefaultAsync(it => it.Id == taskUser.TaskInfoId && it.EnterpriseId == logier.EnterpriseId, cancellationToken); + if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ换鍔�"); + if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔℃殏鏈畨鎺掍汉鍛�"); + if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔″凡缁撴潫"); + if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "璇ヤ换鍔″凡缁撴潫"); + if (request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Success + && request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Fail) + throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨姝g‘鐨勯獙鏀剁姸鎬�"); + submit.CheckReceiveStatus = request.CheckReceiveStatus; + submit.CheckReceiveTime = now; + taskUser.LastCheckReceiveTime = now; + task.LastCheckReceiveTime = now; + + var dates = new List<DateTime>(); + for (DateTime i = task.BeginTime.Date; i <= task.EndTime.Date; i = i.AddDays(1)) + { + dates.Add(i); + } + var taskUserSubmitDates = await repTaskInfoUserSubmit.AsQueryable().AsNoTracking() + .Where(it => + it.TaskInfoUserId == taskUser.Id + && it.Id != submit.Id + && (it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success + || it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail)) + .Select(it => it.Date) + .ToListAsync(); + taskUserSubmitDates.Add(now.Date); + if (dates.All(taskUserSubmitDates.Contains)) + { + taskUser.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed; + } + + var taskUserCheckReceiveStatuses = await repTaskInfoUser.AsQueryable().AsNoTracking() + .Where(it => + it.TaskInfoId == task.Id + && it.Id != taskUser.Id) + .Select(it => it.CheckReceiveStatus) + .ToListAsync(); + taskUserCheckReceiveStatuses.Add(EnumTaskCheckReceiveStatus.Completed); + if (taskUserCheckReceiveStatuses.All(it => it == EnumTaskCheckReceiveStatus.Completed)) + { + task.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed; + } + + await repTaskInfoUserSubmit.UpdateAsync(submit); + return submit.Id; + } + } +} diff --git a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskUserSubmitQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs similarity index 64% rename from FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskUserSubmitQueryHandler.cs rename to FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs index b5060d0..1517eef 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskUserSubmitQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs @@ -13,16 +13,20 @@ namespace FlexJobApi.FlexJobServer.Application { /// <summary> - /// 浠诲姟浜哄憳鏌ヨ澶勭悊鍣� + /// 浠诲姟楠屾敹鏌ヨ澶勭悊鍣� /// </summary> - public class TaskUserSubmitQueryHandler( + public class TaskCheckReceiveQueryHandler( IRepository<TaskInfo> repTaskInfo, - IRepository<TaskInfoUser> repTaskInfoUser) : + IRepository<TaskInfoUser> repTaskInfoUser, + IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit) : IRequestHandler<GetCheckReceiveTasksQuery, GetCheckReceiveTasksQueryResult>, - IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult> + IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult>, + IRequestHandler<GetCheckReceiveTaskUserSubmitsQuery, GetCheckReceiveTaskUserSubmitsQueryResult>, + IRequestHandler<GetCheckReceiveTaskUserSubmitQuery, GetCheckReceiveTaskUserSubmitQueryResult> { private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo; private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; + private readonly IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit = repTaskInfoUserSubmit; /// <summary> /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃 @@ -58,14 +62,16 @@ q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.EnterpriseEmployee.UserId == logier.Id - && tu.Submits.Any(s => + && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit + ? !tu.Submits.Any(s => s.Date.Date == request.Date.Value.Date) + : tu.Submits.Any(s => s.Date.Date == request.Date.Value.Date && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success - || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))))); + || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail)))))); } else { @@ -120,7 +126,50 @@ LastSubmitTime = it.LastSubmitTime, }); var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskQueryResult, GetCheckReceiveTaskQueryResultItem>(s, cancellationToken); + result.ObjectData = await repTaskInfo.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.TaskInfoId) + .GetDetail<TaskInfo, GetCheckReceiveTaskQueryResultObjectData>(); return result; } + + /// <summary> + /// 鏌ヨ楠屾敹璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetCheckReceiveTaskUserSubmitsQueryResult> Handle(GetCheckReceiveTaskUserSubmitsQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking() + .OrderByDescending(it => it.CreatedTime) + .Where(it => it.TaskInfoUserId == request.Id); + var s = q.Select(it => new GetCheckReceiveTaskUserSubmitsQueryResultItem + { + Id = it.Id, + CreatedTime = it.CreatedTime, + Files = it.Files.Select(f => f.File).ToList(), + CheckReceiveStatus = it.CheckReceiveStatus, + CheckReceiveTime = it.CheckReceiveTime, + }); + var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>(s, cancellationToken); + result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>(); + return result; + } + + /// <summary> + /// 鏌ヨ楠屾敹鎻愪氦璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetCheckReceiveTaskUserSubmitQueryResult> Handle(GetCheckReceiveTaskUserSubmitQuery request, CancellationToken cancellationToken) + { + return repTaskInfoUserSubmit.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .GetDetail<TaskInfoUserSubmit, GetCheckReceiveTaskUserSubmitQueryResult>(); + } } } diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs index bcce659..ad9edce 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs @@ -114,6 +114,7 @@ entity.ArrangeTime = DateTime.Now; entity.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit; entity.TaskInfo.Status = EnumTaskStatus.Complete; + entity.TaskInfo.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitSubmit; } await rep.UpdateAsync(entity); return entity.Id; diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 5354794..294a7d4 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -20,6 +20,7 @@ IRepository<DictionaryData> repDictionaryData ) : IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>, + IRequestHandler<GetOpenTaskInfosQuery, GetTaskInfosQueryResult>, IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>, IRequestHandler<GetPersonalApplyTaskInfosQuery, GetPersonalApplyTaskInfosQueryResult>, IRequestHandler<GetPersonalHireTaskInfosQuery, GetPersonalHireTaskInfosQueryResult>, @@ -84,6 +85,17 @@ .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id); } return model; + } + + /// <summary> + /// 鏌ヨ寮�鏀句换鍔″垎椤靛垪琛� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetTaskInfosQueryResult> Handle(GetOpenTaskInfosQuery request, CancellationToken cancellationToken) + { + return Handle(request.Adapt<GetTaskInfosQuery>(), cancellationToken); } /// <summary> @@ -338,5 +350,6 @@ }); return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken); } + } } -- Gitblit v1.9.1