From 5c45bc53e2c18e45130c21048df4af4896455c6d Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 12 九月 2025 15:58:48 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs |  128 +++++++++++++++++++++++++++++++++---------
 1 files changed, 101 insertions(+), 27 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
index a75ed94..0c59ee7 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
@@ -1,4 +1,5 @@
-锘縰sing FlexJobApi.Core;
+锘縰sing Aop.Api.Domain;
+using FlexJobApi.Core;
 using Furion.DatabaseAccessor;
 using Furion.DistributedIDGenerator;
 using Furion.FriendlyException;
@@ -9,6 +10,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Principal;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -21,6 +23,8 @@
             IRepository<EnterpriseEmployee> rep,
             IRepository<ContractTemplate> repContractTemplate,
             IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract,
+            IRepository<Enterprise> repEnterprise,
+            IRepository<User> repUser,
             IMediator mediator
         ) :
         IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>,
@@ -31,6 +35,8 @@
         private readonly IRepository<EnterpriseEmployee> rep = rep;
         private readonly IRepository<ContractTemplate> repContractTemplate = repContractTemplate;
         private readonly IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract = repEnterpriseEmployeeContract;
+        private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
+        private readonly IRepository<User> repUser = repUser;
         private readonly IMediator mediator = mediator;
 
         /// <summary>
@@ -74,34 +80,56 @@
             {
                 q = q.Where(it => (it.UserId.HasValue && it.User.IsReal) == request.IsReal.Value);
             }
-            if (request.UserSignContractStatus.HasValue)
+            if (request.SignContractStatus.HasValue)
             {
-                if (logier.ClientType == EnumClientType.Wxmp)
+                switch (request.SignContractStatus.Value)
                 {
-                    switch (request.UserSignContractStatus.Value)
-                    {
-                        case EnumTaskUserSignContractStatus.Wait:
-                            q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == request.UserSignContractStatus);
-                            break;
-                        case EnumTaskUserSignContractStatus.Pass:
-                            q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass);
-                            break;
-                        case EnumTaskUserSignContractStatus.Stop:
-                            q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
-                            break;
-                        default:
-                            q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
-                            break;
-                    }
-                }
-                else
-                {
-                    q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
+                    case EnumGetEnterpriseEmployeesQuerySignContractStatus.UserWait:
+                        q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait);
+                        break;
+                    case EnumGetEnterpriseEmployeesQuerySignContractStatus.EnterpriseWait:
+                        q = q.Where(it => it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Wait);
+                        break;
+                    case EnumGetEnterpriseEmployeesQuerySignContractStatus.Pass:
+                        q = q.Where(it =>
+                            it.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass
+                            && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass);
+                        break;
+                    default:
+                        break;
                 }
             }
-            if (request.EnterpriseSignContractStatus.HasValue)
+            else
             {
-                q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus);
+                if (request.UserSignContractStatus.HasValue)
+                {
+                    if (logier.ClientType == EnumClientType.Wxmp)
+                    {
+                        switch (request.UserSignContractStatus.Value)
+                        {
+                            case EnumTaskUserSignContractStatus.Wait:
+                                q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == request.UserSignContractStatus);
+                                break;
+                            case EnumTaskUserSignContractStatus.Pass:
+                                q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass);
+                                break;
+                            case EnumTaskUserSignContractStatus.Stop:
+                                q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
+                                break;
+                            default:
+                                q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
+                                break;
+                        }
+                    }
+                    else
+                    {
+                        q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus);
+                    }
+                }
+                if (request.EnterpriseSignContractStatus.HasValue)
+                {
+                    q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus);
+                }
             }
             var s = q.Select(it => new GetEnterpriseEmployeesQueryResultItem
             {
@@ -239,12 +267,51 @@
                 }, cancellationToken);
 
                 var entity = await rep.AsQueryable()
-                    .Include(it => it.Enterprise)
                     .Where(it =>
                         it.UserId == logier.Id
                         && it.ContractTemplateId == contractTemplate.Id)
                     .FirstOrDefaultAsync();
-                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
+                var enterprise = await repEnterprise.AsQueryable()
+                    .Where(it => it.Id == contractTemplate.EnterpriseId)
+                    .Select(it => new
+                    {
+                        it.EnterpriseName
+                    })
+                    .FirstOrDefaultAsync();
+                if (enterprise == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟");
+                var add = false;
+                if (entity == null)
+                {
+                    var user = await repUser.AsQueryable().AsNoTracking()
+                        .Include(it => it.UserAuth)
+                        .Where(it => it.Id == logier.Id)
+                        .Select(it => new
+                        {
+                            it.Name,
+                            it.Identity,
+                            it.ContactPhoneNumber,
+                            it.Gender,
+                            it.Age,
+                            it.UserAuth.IdentityImg,
+                            it.UserAuth.IdentityBackImg
+                        })
+                        .FirstOrDefaultAsync(cancellationToken);
+                    if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "璐﹀彿");
+                    entity = new EnterpriseEmployee
+                    {
+                        Id = IDGen.NextID(),
+                        EnterpriseId = contractTemplate.EnterpriseId,
+                        UserId = logier.Id,
+                        Name = user.Name,
+                        Identity = user.Identity,
+                        ContactPhoneNumber = user.ContactPhoneNumber,
+                        Gender = user.Gender,
+                        Age = user.Age,
+                        IdentityImg = user.IdentityImg,
+                        IdentityBackImg = user.IdentityBackImg,
+                    };
+                    add = true;
+                }
                 if (entity.UserSignContractStatus == null)
                 {
                     entity.ContractTemplateId = contractTemplate.Id;
@@ -262,6 +329,13 @@
                         UserSignContractStatus = entity.UserSignContractStatus,
                     };
                     await repEnterpriseEmployeeContract.InsertAsync(contract);
+                }
+                if (add)
+                {
+                    await rep.InsertAsync(entity);
+                }
+                else
+                {
                     await rep.UpdateAsync(entity);
                 }
                 return new GetPersonalUserElectronSignQueryResult
@@ -274,7 +348,7 @@
                     Identity = entity.Identity,
                     ContactPhoneNumber = entity.ContactPhoneNumber,
                     UserSignContractTime = entity.UserSignContractTime,
-                    EnterpriseEnterpriseName = entity.Enterprise.EnterpriseName,
+                    EnterpriseEnterpriseName = enterprise.EnterpriseName,
                     EnterpriseSignContractTime = entity.EnterpriseSignContractTime,
                     ContractUrl = entity.ContractUrl,
                 };

--
Gitblit v1.9.1