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

---
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs                          |   12 +
 FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs     |   33 ++++
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs           |    2 
 FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs        |   59 ++++++++
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs     |    2 
 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs            |    3 
 FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs                 |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs  |   26 +++
 FlexJobApi.Core/Entities/UserServer/Users/User.cs                                     |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs  |    5 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs    |  135 +++++++++++++++++++
 FlexJobApi.Core/Enums/Common/EnumResourceController.cs                                |    2 
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmit.cs                    |   39 +++++
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmitFile.cs                |   31 ++++
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs |    6 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs   |    5 
 16 files changed, 353 insertions(+), 11 deletions(-)

diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
index 862134a..b34cb9b 100644
--- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
+++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
@@ -10,7 +10,7 @@
 namespace FlexJobApi.Core
 {
     /// <summary>
-    /// 浠诲姟闆囦剑淇℃伅
+    /// 浠诲姟浜哄憳淇℃伅
     /// </summary>
     public class TaskInfoUser : CommonEntity, IEntityTypeBuilder<TaskInfoUser>
     {
@@ -44,6 +44,16 @@
         /// </summary>
         public DateTime? ArrangeTime { get; set; }
 
+        /// <summary>
+        /// 楠屾敹鐘舵��
+        /// </summary>
+        public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鏃堕棿
+        /// </summary>
+        public DateTime? CheckReceiveTime { get; set; }
+
         public void Configure(EntityTypeBuilder<TaskInfoUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
         {
             entityBuilder
diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmit.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmit.cs
new file mode 100644
index 0000000..62c2227
--- /dev/null
+++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmit.cs
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 浠诲姟浜哄憳鎻愪氦淇℃伅
+    /// </summary>
+    public class TaskInfoUserSubmit : CommonEntity
+    {
+        public TaskInfoUserSubmit()
+        {
+            Files = [];
+        }
+
+        /// <summary>
+        /// 浠诲姟浜哄憳Id
+        /// </summary>
+        public Guid TaskInfoUserId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟浜哄憳
+        /// </summary>
+        public TaskInfoUser TaskInfoUser { get; set; }
+
+        /// <summary>
+        /// 闄勪欢
+        /// </summary>
+        public List<TaskInfoUserSubmitFile> Files { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鐘舵��
+        /// </summary>
+        public EnumTaskUserSubmitCheckReceiveStatus CheckReceiveStatus { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmitFile.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmitFile.cs
new file mode 100644
index 0000000..4a2d29c
--- /dev/null
+++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUserSubmitFile.cs
@@ -0,0 +1,31 @@
+锘縰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>
+    public class TaskInfoUserSubmitFile : CommonEntity
+    {
+        /// <summary>
+        /// 鎻愪氦Id
+        /// </summary>
+        public Guid SubmitId { get; set; }
+
+        /// <summary>
+        /// 鎻愪氦
+        /// </summary>
+        public TaskInfoUserSubmit Submit { get; set; }
+
+        /// <summary>
+        /// 闄勪欢
+        /// </summary>
+        [Required]
+        public string File { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs
index 9942c65..c64dddf 100644
--- a/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs
@@ -111,7 +111,7 @@
         public string ContractUrl { get; set; }
 
         /// <summary>
-        /// 浠诲姟闆囦剑淇℃伅
+        /// 浠诲姟浜哄憳淇℃伅
         /// </summary>
         public List<TaskInfoUser> TaskInfoUsers { get; set; }
     }
diff --git a/FlexJobApi.Core/Entities/UserServer/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
index 4c9a299..776c395 100644
--- a/FlexJobApi.Core/Entities/UserServer/Users/User.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -250,7 +250,7 @@
         public List<UserPhoto> Photos { get; set; }
 
         /// <summary>
-        /// 浠诲姟闆囦剑淇℃伅
+        /// 浠诲姟浜哄憳淇℃伅
         /// </summary>
         public List<TaskInfoUser> TaskInfoUsers { get; set; }
 
diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
index d75c707..36b279c 100644
--- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
@@ -22,7 +22,7 @@
         [ResourceController(Service = EnumResourceService.FlexJobServer)]
         Task,
         /// <summary>
-        /// 浠诲姟闆囦剑
+        /// 浠诲姟浜哄憳
         /// </summary>
         [ResourceController(Service = EnumResourceService.FlexJobServer)]
         TaskUser,
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs
new file mode 100644
index 0000000..7362954
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.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.TaskUser])]
+    public class SetTaskUserArrangeCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 浠诲姟浜哄憳Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 瀹夋帓
+        /// </summary>
+        public EnumTaskUserArrangeStatus ArrangeStatus { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
index 31632fe..05c59df 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
@@ -14,7 +14,7 @@
     public class SetTaskUserHireCommand : IRequest<Guid>
     {
         /// <summary>
-        /// 浠诲姟闆囦剑Id
+        /// 浠诲姟浜哄憳Id
         /// </summary>
         public Guid Id { get; set; }
         
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs
new file mode 100644
index 0000000..71b520c
--- /dev/null
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs
@@ -0,0 +1,135 @@
+锘縰sing Mapster;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭�
+    /// </summary>
+    [Resource([EnumResourceController.TaskUser])]
+    public class GetArrangeTaskUsersQuery : PagedListQuery<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>
+    {
+        /// <summary>
+        /// 浠诲姟Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 鍏抽敭瀛楋紙濮撳悕/韬唤璇�/鐢佃瘽锛�
+        /// </summary>
+        public string Keywords { get; set; }
+
+        /// <summary>
+        /// 瀹夋帓鐘舵��
+        /// </summary>
+        public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; }
+
+    }
+
+    /// <summary>
+    /// B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭�-缁撴灉
+    /// </summary>
+    public class GetArrangeTaskUsersQueryResult : PagedListQueryResult<GetArrangeTaskUsersQueryResultItem>
+    {
+
+    }
+
+    /// <summary>
+    /// B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭�-缁撴灉-椤�
+    /// </summary>
+    public class GetArrangeTaskUsersQueryResultItem
+    {
+        /// <summary>
+        /// 浠诲姟浜哄憳Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [MaxLength(32)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        /// <remarks>鑱旂郴鐢佃瘽</remarks>
+        public string ContactPhoneNumber { get; set; }
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public EnumUserGender? Gender { get; set; }
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+
+        /// <summary>
+        /// 鏄惁瀹炲悕
+        /// </summary>
+        public bool IsReal { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕鏂瑰紡
+        /// </summary>
+        public EnumUserRealMethod? RealMethod { get; set; }
+
+        /// <summary>
+        /// 韬唤缂栧彿
+        /// </summary>
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 韬唤
+        /// </summary>
+        public string PersonalIdentityContent { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻缂栧彿
+        /// </summary>
+        public string EducationalBackgroundCode { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻
+        /// </summary>
+        public string EducationalBackgroundContent { get; set; }
+
+        /// <summary>
+        /// 涓婂矖娆℃暟
+        /// </summary>
+        public int TaskCount { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔璧勫巻
+        /// </summary>
+        public string WorkSeniority { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔缁忛獙
+        /// </summary>
+        public string WorkExperience { get; set; }
+
+        /// <summary>
+        /// 瀹夋帓鐘舵��
+        /// </summary>
+        public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; }
+
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
index 82ad399..f7c2697 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
@@ -34,7 +34,7 @@
     public class GetTaskUsersQueryResultItem
     {
         /// <summary>
-        /// 浠诲姟闆囦剑Id
+        /// 浠诲姟浜哄憳Id
         /// </summary>
         public Guid Id { get; set; }
 
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
index 7325d1f..f5652b2 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
@@ -75,6 +75,11 @@
         public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
 
         /// <summary>
+        /// 浠诲姟鍦扮偣鍚嶇О
+        /// </summary>
+        public string AddressName { get; set; }
+
+        /// <summary>
         /// 鐘舵��
         /// </summary>
         public GetPersonalApplyTaskInfosQueryStatus Status { get; set; }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
index 9010c2a..f48755b 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
@@ -72,5 +72,11 @@
         /// 绂忓埄
         /// </summary>
         public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍦扮偣鍚嶇О
+        /// </summary>
+        public string AddressName { get; set; }
+
     }
 }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
index 88766a6..d4732d8 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
@@ -75,6 +75,11 @@
         public List<GetTaskInfoQueryResultBenefit> Benefits { get; set; }
 
         /// <summary>
+        /// 浠诲姟鍦扮偣鍚嶇О
+        /// </summary>
+        public string AddressName { get; set; }
+
+        /// <summary>
         /// 鐘舵��
         /// </summary>
         public GetPersonalHireTaskInfosQueryStatus Status { get; set; }
diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
index c62ed21..a6593c8 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
@@ -12,14 +12,15 @@
 namespace FlexJobApi.FlexJobServer.Application
 {
     /// <summary>
-    /// 浠诲姟闆囦剑鍛戒护澶勭悊鍣�
+    /// 浠诲姟浜哄憳鍛戒护澶勭悊鍣�
     /// </summary>
     public class TaskUserCommandHandler(
             IRepository<TaskInfoUser> rep,
             IRepository<UserTaskCollect> repUserTaskCollect
         ) :
         IRequestHandler<CollectTaskCommand, int>,
-        IRequestHandler<SetTaskUserHireCommand, Guid>
+        IRequestHandler<SetTaskUserHireCommand, Guid>,
+        IRequestHandler<SetTaskUserArrangeCommand, Guid>
     {
         private readonly IRepository<TaskInfoUser> rep = rep;
         private readonly IRepository<UserTaskCollect> repUserTaskCollect = repUserTaskCollect;
@@ -85,6 +86,34 @@
 
                 entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
             }
+            await rep.UpdateAsync(entity);
+            return entity.Id;
+        }
+
+        /// <summary>
+        /// 浠诲姟瀹夋帓
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(SetTaskUserArrangeCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var entity = await rep.AsQueryable()
+                .Include(it => it.EnterpriseEmployee)
+                .Where(it =>
+                    it.TaskInfo.EnterpriseId == logier.EnterpriseId
+                    && it.Id == request.Id)
+                .FirstOrDefaultAsync(cancellationToken);
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ姤鍚嶄俊鎭�");
+            if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "璇ョ伒宸ュ凡瀹夋帓");
+            entity.ArrangeStatus = request.ArrangeStatus;
+            if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete)
+            {
+                entity.ArrangeTime = DateTime.Now;
+                entity.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Wait;
+            }
+            await rep.UpdateAsync(entity);
             return entity.Id;
         }
     }
diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
index 7c14240..475f6d4 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -11,11 +11,12 @@
 namespace FlexJobApi.FlexJobServer.Application
 {
     /// <summary>
-    /// 浠诲姟闆囦剑鏌ヨ澶勭悊鍣�
+    /// 浠诲姟浜哄憳鏌ヨ澶勭悊鍣�
     /// </summary>
     public class TaskUserQueryHandler(
-        IRepository<TaskInfoUser> rep)
-        : IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>
+        IRepository<TaskInfoUser> rep) : 
+        IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>,
+        IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>
     {
         private readonly IRepository<TaskInfoUser> rep = rep;
 
@@ -54,5 +55,57 @@
                 });
             return await request.PageModel.GetPagedListAsync<GetTaskUsersQueryResult, GetTaskUsersQueryResultItem>(s, cancellationToken);
         }
+
+        /// <summary>
+        /// B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<GetArrangeTaskUsersQueryResult> Handle(GetArrangeTaskUsersQuery request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var q = rep.AsQueryable().AsNoTracking()
+                .OrderBy(it => it.CreatedTime)
+                .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);
+            }
+            if (request.Keywords.IsNotNull())
+            {
+                q = q.Where(it =>
+                    it.EnterpriseEmployee.User.Name.Contains(request.Keywords)
+                    || it.EnterpriseEmployee.User.Identity.Contains(request.Keywords)
+                    || it.EnterpriseEmployee.User.PhoneNumber.Contains(request.Keywords));
+            }
+            var s = q
+                .Select(it => new GetArrangeTaskUsersQueryResultItem
+                {
+                    Id = it.Id,
+                    Avatar = it.EnterpriseEmployee.User.Avatar,
+                    Name = it.EnterpriseEmployee.User.Name,
+                    Identity = it.EnterpriseEmployee.User.Identity,
+                    ContactPhoneNumber = it.EnterpriseEmployee.User.ContactPhoneNumber,
+                    Gender = it.EnterpriseEmployee.User.Gender,
+                    Age = it.EnterpriseEmployee.User.Age,
+                    IsReal = it.EnterpriseEmployee.User.IsReal,
+                    RealMethod = it.EnterpriseEmployee.User.RealMethod,
+                    PersonalIdentityCode = it.EnterpriseEmployee.User.PersonalIdentityCode,
+                    PersonalIdentityContent = it.EnterpriseEmployee.User.PersonalIdentity.Content,
+                    EducationalBackgroundCode = it.EnterpriseEmployee.User.EducationalBackgroundCode,
+                    EducationalBackgroundContent = it.EnterpriseEmployee.User.EducationalBackground.Content,
+                    TaskCount = it.EnterpriseEmployee.User.TaskInfoUsers.Count(tu => tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass),
+                    WorkSeniority = it.EnterpriseEmployee.User.WorkSeniority,
+                    WorkExperience = it.EnterpriseEmployee.User.WorkExperience,
+                    ArrangeStatus = it.ArrangeStatus
+                });
+            return await request.PageModel.GetPagedListAsync<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>(s, cancellationToken);
+        }
     }
 }
diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
index f2c155d..3f46ec6 100644
--- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -217,6 +217,7 @@
                     BenefitCode = it.BenefitCode,
                     BenefitContent = it.Benefit.Content
                 }).ToList(),
+                AddressName = it.AddressName,
                 Status = it.TaskInfoUsers.Any(it =>
                     it.EnterpriseEmployee.UserId == logier.Id
                     && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait)
@@ -277,6 +278,7 @@
                     BenefitCode = it.BenefitCode,
                     BenefitContent = it.Benefit.Content
                 }).ToList(),
+                AddressName = it.AddressName,
                 Status = now <= it.EndTime
                     ? GetPersonalHireTaskInfosQueryStatus.InProcess
                     : GetPersonalHireTaskInfosQueryStatus.Completed
@@ -314,6 +316,7 @@
                     BenefitCode = it.BenefitCode,
                     BenefitContent = it.Benefit.Content
                 }).ToList(),
+                AddressName = it.AddressName,
             });
             return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken);
         }

--
Gitblit v1.9.1