From 680ee6957a7faaf65b997f5ae424a502902f9368 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 22 八月 2025 14:41:17 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs |   70 +++++++++++++++++++++++++++-------
 1 files changed, 55 insertions(+), 15 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
index 5ee6ff5..b76c492 100644
--- a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs
@@ -16,7 +16,8 @@
     public class GetPersonalUserInfosQueryHandler(
             IRepository<User> rep
         ) :
-        IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult>
+        IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult>,
+        IRequestHandler<GetPersonalUserInfoSignContractsQuery, GetPersonalUserInfoSignContractsQueryResult>
     {
         private readonly IRepository<User> rep = rep;
 
@@ -29,7 +30,8 @@
         public async Task<GetPersonalUserInfosQueryResult> Handle(GetPersonalUserInfosQuery request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();
-            var q = rep.AsQueryable().AsNoTracking();
+            var q = rep.AsQueryable().AsNoTracking()
+                .Where(it => it.Type == EnumUserType.Personal);
             if (request.Keywords.IsNotNull())
             {
                 q = q.Where(it =>
@@ -41,21 +43,17 @@
             if (request.HireTimeBegin.HasValue && request.HireTimeEnd.HasValue)
             {
                 q = q.Where(it =>
-                    it.EnterpriseEmployees.Any(e =>
-                        e.HireStatus == EnumTaskUserHireStatus.Pass
-                        && e.HireTime.HasValue
-                        && request.HireTimeBegin <= e.HireTime
-                        && e.HireTime <= request.HireTimeEnd));
+                    it.EnterpriseEmployees.SelectMany(ee => ee.TaskInfoUsers).Any(tu =>
+                        tu.HireStatus == EnumTaskUserHireStatus.Pass
+                        && tu.HireTime.HasValue
+                        && request.HireTimeBegin <= tu.HireTime
+                        && tu.HireTime <= request.HireTimeEnd));
             }
             if (request.SignContractBegin.HasValue && request.SignContractEnd.HasValue)
             {
                 q = q.Where(it =>
                     it.EnterpriseEmployees.Any(e =>
-                        e.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass
-                        && e.UserSignContractTime.HasValue
-                        && request.SignContractBegin <= e.UserSignContractTime
-                        && e.UserSignContractTime <= request.SignContractEnd
-                        || e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass
+                        e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass
                         && e.EnterpriseSignContractTime.HasValue
                         && request.SignContractBegin <= e.EnterpriseSignContractTime
                         && e.EnterpriseSignContractTime <= request.SignContractEnd));
@@ -70,6 +68,8 @@
                 Name = it.Name,
                 ContactPhoneNumber = it.ContactPhoneNumber,
                 Identity = it.Identity,
+                IdentityImg = it.UserAuth.IdentityImg,
+                IdentityBackImg = it.UserAuth.IdentityBackImg,
                 Gender = it.Gender,
                 Age = it.Age,
                 ProvinceCode = it.ProvinceCode,
@@ -80,18 +80,58 @@
                 IsReal = it.IsReal,
                 RealTime = it.RealTime,
                 HireTime = it.EnterpriseEmployees
+                    .SelectMany(ee => ee.TaskInfoUsers)
                     .OrderByDescending(e => e.HireTime)
                     .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue)
                     .Select(e => e.HireTime)
                     .FirstOrDefault(),
                 SignContractTime = it.EnterpriseEmployees
-                    .OrderByDescending(e => e.EnterpriseSignContractTime > e.UserSignContractTime ? e.EnterpriseSignContractTime : e.UserSignContractTime)
-                    .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue)
-                    .Select(e => e.HireTime)
+                    .OrderByDescending(e => e.EnterpriseSignContractTime)
+                    .Where(e => e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue)
+                    .Select(e => e.EnterpriseSignContractTime)
                     .FirstOrDefault(),
             });
             var result = await request.PageModel.GetPagedListAsync<GetPersonalUserInfosQueryResult, GetPersonalUserInfosQueryResultItem>(s, cancellationToken);
             return result;
         }
+
+        /// <summary>
+        /// 鏌ヨC绔汉鍛樼绾﹁鎯呭垎椤靛垪琛ㄦ暟鎹�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetPersonalUserInfoSignContractsQueryResult> Handle(GetPersonalUserInfoSignContractsQuery request, CancellationToken cancellationToken)
+        {
+            var q = rep.Change<EnterpriseEmployee>().AsQueryable().AsNoTracking()
+                .Where(it => it.UserId == request.Id)
+                .Select(it => new GetPersonalUserInfoSignContractsQueryResultItem
+                {
+                    Id = it.Id,
+                    EnterpriseName = it.Enterprise.EnterpriseName,
+                    ApplyTime = it.TaskInfoUsers
+                        .OrderBy(tu => tu.CreatedTime)
+                        .Select(tu => tu.CreatedTime as DateTimeOffset?)
+                        .FirstOrDefault(),
+                    HireStatus = it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass)
+                        ? EnumTaskUserHireStatus.Pass
+                        : it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Refuse)
+                        ? EnumTaskUserHireStatus.Refuse
+                        : EnumTaskUserHireStatus.Wait,
+                    HireTime = it.TaskInfoUsers
+                        .OrderBy(tu => tu.HireTime)
+                        .Where(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass && tu.HireTime.HasValue)
+                        .Select(tu => tu.HireTime)
+                        .FirstOrDefault(),
+                    UserSignContractStatus = it.UserSignContractStatus,
+                    EnterpriseSignContractStatus = it.EnterpriseSignContractStatus,
+                    EnterpriseSignContractTime = it.EnterpriseSignContractTime,
+                    ContractUrl = it.Contracts
+                        .Where(c => c.EnterpriseSignContractStatus == it.EnterpriseSignContractStatus)
+                        .Select(c => c.Url)
+                        .FirstOrDefault(),
+                });
+            return request.PageModel.GetPagedListAsync<GetPersonalUserInfoSignContractsQueryResult, GetPersonalUserInfoSignContractsQueryResultItem>(q, cancellationToken);
+        }
     }
 }

--
Gitblit v1.9.1