From bf17ad2051de62b9b49fb72bf6ae14d23bfef62b Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 11 九月 2025 10:20:20 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs |   98 +++++++++++++++++++++++++++----------------------
 1 files changed, 54 insertions(+), 44 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
index 45598b9..e49168c 100644
--- a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
@@ -60,6 +60,7 @@
             var data = ((JObject)request.Data).ToObject<ElectronSignCallbackCommandContractSignModel>()!;
             var contractId = data.OutContractId.ToGuid("鏃犳晥鐨勫悎鍚孖d")!.Value;
             var contract = await repEnterpriseEmployeeContract.AsQueryable()
+                .Include(it=>it.ContractTemplate)
                 .Where(it => it.Id == contractId)
                 .FirstOrDefaultAsync();
             if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓");
@@ -76,55 +77,61 @@
             {
                 throw Oops.Oh(EnumErrorCodeType.s510, "鍚堝悓宸插け鏁�");
             }
-            if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
+            if (request.Success)
             {
-                if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
+                if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
                 {
-                    if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
+                    if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
                     {
-                        contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                        if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
+                        {
+                            contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                            contract.UserSignContractTime = DateTime.Now;
+                            contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Wait;
+                        }
+                    }
+                    else
+                    {
+                        if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
+                        {
+                            contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                            contract.EnterpriseSignContractTime = DateTime.Now;
+                        }
+                    }
+                }
+                if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Completed)
+                {
+                    contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                    if (contract.UserSignContractTime == null)
+                    {
                         contract.UserSignContractTime = DateTime.Now;
                     }
-                    else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
+                    contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                    if (contract.EnterpriseSignContractTime == null)
                     {
-                        contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
+                        contract.EnterpriseSignContractTime = DateTime.Now;
+                    }
+                    contract.ContractUrl = AliyunOSSUtils.Upload("Contact", data.ContactUrl, $"{contract.ContractTemplate.Name}.pdf").Url;
+                }
+            }
+            else
+            {
+                if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
+                {
+                    if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
+                    {
                         contract.UserSignContractErrorMessage = request.Message;
+                    }
+                    else
+                    {
+                        contract.EnterpriseSignContractErrorMessage = request.Message;
                     }
                 }
                 else
                 {
-                    if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
-                    {
-                        contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
-                        contract.EnterpriseSignContractTime = DateTime.Now;
-                    }
-                    else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
-                    {
-                        contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
-                        contract.EnterpriseSignContractErrorMessage = request.Message;
-                    }
+                    contract.UserSignContractErrorMessage = request.Message;
+                    contract.EnterpriseSignContractErrorMessage = request.Message;
                 }
-            }
-            else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
-            {
-                contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
-                contract.UserSignContractErrorMessage = request.Message;
-                contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
-                contract.EnterpriseSignContractErrorMessage = request.Message;
-            }
-            if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Completed)
-            {
-                contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Effect;
-                if (contract.UserSignContractTime == null)
-                {
-                    contract.UserSignContractTime = DateTime.Now;
-                }
-                contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Effect;
-                if (contract.EnterpriseSignContractTime == null)
-                {
-                    contract.EnterpriseSignContractTime = DateTime.Now;
-                }
-                contract.ContractUrl = data.ContactUrl;
             }
             await repEnterpriseEmployeeContract.UpdateAsync(contract);
 
@@ -135,16 +142,19 @@
             entity.ContractUrl = contract.ContractUrl;
             await repEnterpriseEmployee.UpdateAsync(entity);
 
-            var taskUsers = await repTaskInfoUser.AsQueryable()
-                .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass && it.ArrangeStatus == null)
-                .ToListAsync();
-            if (taskUsers.IsNotNull())
+            if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass && entity.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass)
             {
-                foreach (var taskUser in taskUsers)
+                var taskUsers = await repTaskInfoUser.AsQueryable()
+                    .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass && it.ArrangeStatus == null)
+                    .ToListAsync();
+                if (taskUsers.IsNotNull())
                 {
-                    taskUser.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
+                    foreach (var taskUser in taskUsers)
+                    {
+                        taskUser.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
+                    }
+                    await repTaskInfoUser.UpdateAsync(taskUsers);
                 }
-                await repTaskInfoUser.UpdateAsync(taskUsers);
             }
         }
 

--
Gitblit v1.9.1