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