From 421b883ad4a46a680c9312101febcf190bc5f128 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 12 八月 2025 15:38:09 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs           |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs  |   98 ++++++++
 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml         |   26 ++
 FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs        |    2 
 FlexJobApi.Core/FlexJobApi.Core.xml                                                   |  217 +++++++++++++++++
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs               |   11 
 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs            |  167 +++++++++++++
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs |   76 ++++++
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs   |   98 ++++++++
 9 files changed, 663 insertions(+), 34 deletions(-)

diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 58aab16..0adb0c2 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/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">
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
index 2eb5796..82ad399 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
+++ b/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>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
new file mode 100644
index 0000000..7325d1f
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
@@ -0,0 +1,98 @@
+锘縰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])]
+    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
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
new file mode 100644
index 0000000..9010c2a
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
@@ -0,0 +1,76 @@
+锘縰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])]
+    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; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
new file mode 100644
index 0000000..88766a6
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
@@ -0,0 +1,98 @@
+锘縰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])]
+    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
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
index 80a6fef..d64ade0 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
+++ b/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; }
     }
 }
diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
index 4f91ad4..798c5c7 100644
--- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
+++ b/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>
diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
index 98fb711..7c14240 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
+++ b/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>
diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
index 11634cb..f2c155d 100644
--- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
+++ b/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);
+        }
     }
 }

--
Gitblit v1.9.1