From 6658683df86d0b94c37f1d17754d17f9aab4dba0 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 12 八月 2025 17:47:33 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs                                |   15 +
 /dev/null                                                                                   |   79 ---------
 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml               |    8 +
 FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs              |   58 ++++++
 FlexJobApi.Core/FlexJobApi.Core.xml                                                         |  176 +++++++++++++--------
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetCheckReceiveTaskUserInfosQuery.cs |  116 ++++++++++++++
 6 files changed, 303 insertions(+), 149 deletions(-)

diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
index b34cb9b..109c889 100644
--- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
+++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
@@ -14,6 +14,11 @@
     /// </summary>
     public class TaskInfoUser : CommonEntity, IEntityTypeBuilder<TaskInfoUser>
     {
+        public TaskInfoUser()
+        {
+            Submits = [];
+        }
+
         /// <summary>
         /// 浠诲姟Id
         /// </summary>
@@ -54,6 +59,16 @@
         /// </summary>
         public DateTime? CheckReceiveTime { get; set; }
 
+        /// <summary>
+        /// 鏈�杩戞彁浜ゆ椂闂�
+        /// </summary>
+        public DateTime? LastSubmitTime { get; set; }
+
+        /// <summary>
+        /// 鎻愪氦
+        /// </summary>
+        public List<TaskInfoUserSubmit> Submits { get; set; }
+
         public void Configure(EntityTypeBuilder<TaskInfoUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
         {
             entityBuilder
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index af75343..efc69c3 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -949,6 +949,16 @@
             楠屾敹鏃堕棿
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.TaskInfoUser.LastSubmitTime">
+            <summary>
+            鏈�杩戞彁浜ゆ椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.TaskInfoUser.Submits">
+            <summary>
+            鎻愪氦
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.TaskInfoUserSubmit">
             <summary>
             浠诲姟浜哄憳鎻愪氦淇℃伅
@@ -3823,71 +3833,6 @@
             鍙戝竷鐘舵��
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskInfosQuery">
-            <summary>
-            鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQuery.Keywords">
-            <summary>
-            鍏抽敭瀛�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQuery.SubmitTimeBegin">
-            <summary>
-            楠屾敹鏃ユ湡-鏈�鏃╂椂闂�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQuery.SubmitTimeEnd">
-            <summary>
-            楠屾敹鏃ユ湡-鏈�鏅氭椂闂�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQuery.CheckReceiveStatus">
-            <summary>
-            楠屾敹鐘舵��
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResult">
-            <summary>
-            鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem">
-            <summary>
-            鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉-椤�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.Id">
-            <summary>
-            浠诲姟Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.Name">
-            <summary>
-            浠诲姟鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.BeginTime">
-            <summary>
-            浠诲姟寮�濮嬫椂闂�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.EndTime">
-            <summary>
-            浠诲姟缁撴潫鏃堕棿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.AddressName">
-            <summary>
-            浠诲姟鍦扮偣鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskInfosQueryResultItem.CheckReceiveStatus">
-            <summary>
-            楠屾敹鐘舵��
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.GetPersonalApplyTaskInfosQuery">
             <summary>
             鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃
@@ -4763,6 +4708,107 @@
             瀹夋帓鐘舵��
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery">
+            <summary>
+            鏌ヨ楠屾敹鍒嗛〉鍒楄〃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery.TaskInfoId">
+            <summary>
+            浠诲姟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery.Keywords">
+            <summary>
+            鍏抽敭瀛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery.SubmitTimeBegin">
+            <summary>
+            楠屾敹鏃ユ湡-鏈�鏃╂椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery.SubmitTimeEnd">
+            <summary>
+            楠屾敹鏃ユ湡-鏈�鏅氭椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery.CheckReceiveStatus">
+            <summary>
+            楠屾敹鐘舵��
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResult">
+            <summary>
+            鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem">
+            <summary>
+            鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉-椤�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.Id">
+            <summary>
+            浠诲姟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.TaskName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.BeginTime">
+            <summary>
+            浠诲姟寮�濮嬫椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.EndTime">
+            <summary>
+            浠诲姟缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.AddressName">
+            <summary>
+            浠诲姟鍦扮偣鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.ContactPhoneNumber">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+            <remarks>鑱旂郴鐢佃瘽</remarks>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.LastSubmitTime">
+            <summary>
+            鎻愪氦鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserInfosQueryResultItem.CheckReceiveStatus">
+            <summary>
+            楠屾敹鐘舵��
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.GetTaskUsersQuery">
             <summary>
             B绔煡璇㈠簲鑱樻姤鍚嶅垎椤靛垪琛ㄤ俊鎭�
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetCheckReceiveTaskUserInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetCheckReceiveTaskUserInfosQuery.cs
new file mode 100644
index 0000000..56978b4
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetCheckReceiveTaskUserInfosQuery.cs
@@ -0,0 +1,116 @@
+锘縰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.TaskUser])]
+    public class GetCheckReceiveTaskUserInfosQuery : PagedListQuery<GetCheckReceiveTaskUserInfosQueryResult, GetCheckReceiveTaskUserInfosQueryResultItem>
+    {
+        /// <summary>
+        /// 浠诲姟Id
+        /// </summary>
+        public Guid? TaskInfoId { get; set; }
+
+        /// <summary>
+        /// 鍏抽敭瀛�
+        /// </summary>
+        public string Keywords { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鏃ユ湡-鏈�鏃╂椂闂�
+        /// </summary>
+        public DateTime? SubmitTimeBegin { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鏃ユ湡-鏈�鏅氭椂闂�
+        /// </summary>
+        public DateTime? SubmitTimeEnd { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鐘舵��
+        /// </summary>
+        public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉
+    /// </summary>
+    public class GetCheckReceiveTaskUserInfosQueryResult : PagedListQueryResult<GetCheckReceiveTaskUserInfosQueryResultItem>
+    {
+
+    }
+
+    /// <summary>
+    /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉-椤�
+    /// </summary>
+    public class GetCheckReceiveTaskUserInfosQueryResultItem
+    {
+        /// <summary>
+        /// 浠诲姟Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        public string TaskName { 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 string Name { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        /// <remarks>鑱旂郴鐢佃瘽</remarks>
+        public string ContactPhoneNumber { get; set; }
+
+        /// <summary>
+        /// 鎻愪氦鏃堕棿
+        /// </summary>
+        public DateTime? LastSubmitTime { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鐘舵��
+        /// </summary>
+        public EnumTaskCheckReceiveStatus CheckReceiveStatus { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs
deleted file mode 100644
index 5ba7f83..0000000
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetCheckReceiveTaskInfosQuery.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    /// <summary>
-    /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃
-    /// </summary>
-    [Resource([EnumResourceController.Task])]
-    public class GetCheckReceiveTaskInfosQuery : PagedListQuery<GetCheckReceiveTaskInfosQueryResult, GetCheckReceiveTaskInfosQueryResultItem>
-    {
-        /// <summary>
-        /// 鍏抽敭瀛�
-        /// </summary>
-        public string Keywords { get; set; }
-
-        /// <summary>
-        /// 楠屾敹鏃ユ湡-鏈�鏃╂椂闂�
-        /// </summary>
-        public DateTime? SubmitTimeBegin { get; set; }
-
-        /// <summary>
-        /// 楠屾敹鏃ユ湡-鏈�鏅氭椂闂�
-        /// </summary>
-        public DateTime? SubmitTimeEnd { get; set; }
-
-        /// <summary>
-        /// 楠屾敹鐘舵��
-        /// </summary>
-        public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
-    }
-
-    /// <summary>
-    /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉
-    /// </summary>
-    public class GetCheckReceiveTaskInfosQueryResult : PagedListQueryResult<GetCheckReceiveTaskInfosQueryResultItem>
-    {
-
-    }
-
-    /// <summary>
-    /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃-缁撴灉-椤�
-    /// </summary>
-    public class GetCheckReceiveTaskInfosQueryResultItem
-    {
-        /// <summary>
-        /// 浠诲姟Id
-        /// </summary>
-        public Guid Id { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍚嶇О
-        /// </summary>
-        public string Name { get; set; }
-
-        /// <summary>
-        /// 浠诲姟寮�濮嬫椂闂�
-        /// </summary>
-        public DateTime BeginTime { get; set; }
-
-        /// <summary>
-        /// 浠诲姟缁撴潫鏃堕棿
-        /// </summary>
-        public DateTime EndTime { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍦扮偣鍚嶇О
-        /// </summary>
-        public string AddressName { get; set; }
-
-        /// <summary>
-        /// 楠屾敹鐘舵��
-        /// </summary>
-        public EnumTaskCheckReceiveStatus CheckReceiveStatus { get; set; }
-    }
-}
diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
index c01c9af..9580770 100644
--- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
+++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -175,5 +175,13 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserQueryHandler.Handle(FlexJobApi.Core.GetCheckReceiveTaskUserInfosQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ楠屾敹鍒嗛〉鍒楄〃
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
     </members>
 </doc>
diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
index 1f0172b..ad8c7e6 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -14,9 +14,10 @@
     /// 浠诲姟浜哄憳鏌ヨ澶勭悊鍣�
     /// </summary>
     public class TaskUserQueryHandler(
-        IRepository<TaskInfoUser> rep) : 
+        IRepository<TaskInfoUser> rep) :
         IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>,
-        IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>
+        IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>,
+        IRequestHandler<GetCheckReceiveTaskUserInfosQuery, GetCheckReceiveTaskUserInfosQueryResult>
     {
         private readonly IRepository<TaskInfoUser> rep = rep;
 
@@ -67,15 +68,15 @@
             var logier = JwtUtils.GetCurrentLogier();
             var q = rep.AsQueryable().AsNoTracking()
                 .OrderBy(it => it.CreatedTime)
-                .Where(it => 
-                    it.TaskInfo.EnterpriseId == logier.EnterpriseId 
+                .Where(it =>
+                    it.TaskInfo.EnterpriseId == logier.EnterpriseId
                     && it.TaskInfoId == request.Id
                     && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass
                     && it.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass
                     && it.EnterpriseEmployee.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass);
             if (request.ArrangeStatus.HasValue)
             {
-                q = q.Where(it=>it.ArrangeStatus == request.ArrangeStatus);
+                q = q.Where(it => it.ArrangeStatus == request.ArrangeStatus);
             }
             if (request.Keywords.IsNotNull())
             {
@@ -107,5 +108,52 @@
                 });
             return await request.PageModel.GetPagedListAsync<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>(s, cancellationToken);
         }
+
+        /// <summary>
+        /// 鏌ヨ楠屾敹鍒嗛〉鍒楄〃
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<GetCheckReceiveTaskUserInfosQueryResult> Handle(GetCheckReceiveTaskUserInfosQuery request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var q = rep.AsQueryable().AsNoTracking()
+                .OrderBy(it => it.CreatedTime)
+                .AsQueryable();
+
+            if (logier.Type == EnumUserType.Personal)
+            {
+                q = q.Where(it => it.EnterpriseEmployee.UserId == logier.Id);
+            }
+            else if (logier.Type == EnumUserType.Enterprise)
+            {
+                q = q.Where(it => it.TaskInfo.EnterpriseId == logier.EnterpriseId);
+            }
+            if (request.TaskInfoId.HasValue)
+            {
+                q = q.Where(it => it.TaskInfoId == request.TaskInfoId);
+            }
+            if (request.Keywords.IsNotNull())
+            {
+                q = q.Where(it =>
+                    it.EnterpriseEmployee.User.Name.Contains(request.Keywords)
+                    || it.EnterpriseEmployee.User.ContactPhoneNumber.Contains(request.Keywords)
+                    || it.EnterpriseEmployee.User.Identity.Contains(request.Keywords));
+            }
+            if (request.SubmitTimeBegin.HasValue && request.SubmitTimeEnd.HasValue)
+            {
+                q = q.Where(it => it.Submits.Any(s => request.SubmitTimeBegin <= s.CreatedTime && s.CreatedTime <= request.SubmitTimeEnd));
+            }
+            if (request.CheckReceiveStatus.HasValue)
+            {
+                q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus);
+            }
+            var s = q.Select(it => new GetCheckReceiveTaskUserInfosQueryResultItem
+            {
+
+            });
+            return await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserInfosQueryResult, GetCheckReceiveTaskUserInfosQueryResultItem>(s, cancellationToken);
+        }
     }
 }

--
Gitblit v1.9.1