From 0e25fabc3a96cd35ca8824e841532c04389e006d Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 02 九月 2025 10:10:51 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs |  113 +++++++++++++++++++++++++++++++-------------------------
 1 files changed, 63 insertions(+), 50 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
index 1836a63..5ae1bbd 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
@@ -42,10 +42,10 @@
         ) :
         IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>,
         IRequestHandler<EditEnterpriseEmployeeCommand, Guid>,
-        IRequestHandler<InviteElectronSignCommand, Guid>,
+        IRequestHandler<InviteElectronSignCommand, int>,
         IRequestHandler<PersonalUserElectronSignCommand, PersonalUserElectronSignCommandResult>,
         IRequestHandler<EnterpriseUserElectronSignCommand, EnterpriseUserElectronSignCommandResult>,
-        IRequestHandler<StopElectronSignCommand, Guid>
+        IRequestHandler<StopElectronSignCommand, int>
     {
         private readonly IMediator mediator = mediator;
         private readonly IRepository<EnterpriseEmployee> rep = rep;
@@ -220,42 +220,49 @@
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task<Guid> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken)
+        public async Task<int> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();
-            var entity = await rep.AsQueryable()
-                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id)
-                .FirstOrDefaultAsync();
-            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
-            if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, "宸查個璇�");
-            if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "宸茬绾�");
+
             await mediator.Send(new CheckContractTemplateCommand
             {
                 Id = request.ContractTemplateId
             }, cancellationToken);
-            entity.ContractTemplateId = request.ContractTemplateId;
-            entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait;
-            entity.UserSignContractTime = null;
-            entity.EnterpriseSignContractStatus = null;
-            entity.EnterpriseSignContractTime = null;
-            entity.ContractCode = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
-            var contract = new EnterpriseEmployeeContract
+
+            var entities = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id))
+                .ToListAsync();
+            foreach (var id in request.Ids)
             {
-                EnterpriseEmployeeId = entity.Id,
-                ContractTemplateId = entity.ContractTemplateId,
-                ContractCode = entity.ContractCode,
-                UserSignContractStatus = entity.UserSignContractStatus,
-            };
-            await repEnterpriseEmployeeContract.InsertAsync(contract);
-            //await mediator.Send(new SaveEnterpriseCostCommand
-            //{
-            //    EnterpriseId = logier.EnterpriseId!.Value,
-            //    ContractTemplateId = request.ContractTemplateId,
-            //    EnterpriseEmployeeContractId = contract.Id,
-            //    Type = EnumEnterpriseCostType.ElectronSign
-            //});
-            await rep.UpdateAsync(entity);
-            return entity.Id;
+                var entity = entities.FirstOrDefault(it => it.Id == id);
+                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
+                if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, $"宸查個璇穥entity.Name}");
+                if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"宸茬绾entity.Name}");
+                entity.ContractTemplateId = request.ContractTemplateId;
+                entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait;
+                entity.UserSignContractTime = null;
+                entity.EnterpriseSignContractStatus = null;
+                entity.EnterpriseSignContractTime = null;
+                entity.ContractCode = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
+                entity.ContractUrl = null;
+                var contract = new EnterpriseEmployeeContract
+                {
+                    EnterpriseEmployeeId = entity.Id,
+                    ContractTemplateId = entity.ContractTemplateId,
+                    ContractCode = entity.ContractCode,
+                    UserSignContractStatus = entity.UserSignContractStatus,
+                };
+                await repEnterpriseEmployeeContract.InsertAsync(contract);
+                //await mediator.Send(new SaveEnterpriseCostCommand
+                //{
+                //    EnterpriseId = logier.EnterpriseId!.Value,
+                //    ContractTemplateId = request.ContractTemplateId,
+                //    EnterpriseEmployeeContractId = contract.Id,
+                //    Type = EnumEnterpriseCostType.ElectronSign
+                //});
+                await rep.UpdateAsync(entity);
+            }
+            return entities.Count;
         }
 
         /// <summary>
@@ -385,29 +392,35 @@
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task<Guid> Handle(StopElectronSignCommand request, CancellationToken cancellationToken)
+        public async Task<int> Handle(StopElectronSignCommand request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();
-            var entity = await rep.AsQueryable()
-                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id)
-                .FirstOrDefaultAsync();
-            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
-            if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "鏈绾�");
-            entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop;
-            entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop;
-            await rep.UpdateAsync(entity);
+            var entities = await rep.AsQueryable()
+                .Include(it => it.Contracts)
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id))
+                .ToListAsync();
+            foreach (var id in request.Ids)
+            {
+                var entity = entities.FirstOrDefault(it => it.Id == id);
+                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
+                if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"鏈绾entity.Name}");
+                entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop;
+                entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop;
+                await rep.UpdateAsync(entity);
 
-            var contract = await repEnterpriseEmployeeContract.AsQueryable()
-                .OrderByDescending(it => it.CreatedTime)
-                .Where(it => it.EnterpriseEmployeeId == entity.Id)
-                .FirstOrDefaultAsync();
-            if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓");
-            contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop;
-            contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop;
-            await repEnterpriseEmployeeContract.UpdateAsync(contract);
+                var contract = entity.Contracts
+                    .OrderByDescending(it => it.CreatedTime)
+                    .FirstOrDefault();
+                if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, $"涓巤entity.Name}鐨勫悎鍚�");
+                contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop;
+                contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop;
+                await repEnterpriseEmployeeContract.UpdateAsync(contract);
+            }
 
             var taskUsers = await repTaskInfoUser.AsQueryable()
-                .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass)
+                .Where(it =>
+                    it.HireStatus == EnumTaskUserHireStatus.Pass
+                    && request.Ids.Contains(it.EnterpriseEmployeeId))
                 .ToListAsync();
             if (taskUsers.IsNotNull())
             {
@@ -418,7 +431,7 @@
                 await repTaskInfoUser.UpdateAsync(taskUsers);
             }
 
-            return entity.Id;
+            return entities.Count;
         }
     }
 }

--
Gitblit v1.9.1