From 193fa41f6419b80f33dabad90ed65ed1e310add8 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 11 九月 2025 15:48:05 +0800
Subject: [PATCH] fix: s

---
 FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs |  150 ++++++++++++++++++++++++++-----------------------
 1 files changed, 79 insertions(+), 71 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
index 77f062d..7896a22 100644
--- a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
@@ -5,6 +5,7 @@
 using Furion.FriendlyException;
 using MediatR;
 using Microsoft.EntityFrameworkCore;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -43,7 +44,7 @@
             switch (request.Action)
             {
                 case "UserSign":
-                    await UserFaceReal(request);
+                    await UserSign(request);
                     break;
                 case "ContractSign":
                     await ContractSign(request);
@@ -56,26 +57,28 @@
 
         private async Task ContractSign(ElectronSignCallbackCommand request)
         {
-            if (request.Data is ElectronSignCallbackCommandContractSignModel data)
+            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, "鍚堝悓");
+            var entity = await repEnterpriseEmployee.AsQueryable()
+                .Include(it => it.ContractTemplate)
+                .Where(it => it.Id == contract.EnterpriseEmployeeId)
+                .FirstOrDefaultAsync();
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
+            if (entity.ContractTemplateId != contract.ContractTemplateId
+                || entity.UserSignContractStatus != contract.UserSignContractStatus
+                || entity.UserSignContractTime != contract.UserSignContractTime
+                || entity.EnterpriseSignContractStatus != contract.EnterpriseSignContractStatus
+                || entity.EnterpriseSignContractTime != contract.EnterpriseSignContractTime)
             {
-                var contractId = data.OutContractId.ToGuid("鏃犳晥鐨勫悎鍚孖d")!.Value;
-                var contract = await repEnterpriseEmployeeContract.AsQueryable()
-                    .Where(it => it.Id == contractId)
-                    .FirstOrDefaultAsync();
-                if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓");
-                var entity = await repEnterpriseEmployee.AsQueryable()
-                    .Include(it => it.ContractTemplate)
-                    .Where(it => it.Id == contract.EnterpriseEmployeeId)
-                    .FirstOrDefaultAsync();
-                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐");
-                if (entity.ContractTemplateId != contract.ContractTemplateId
-                    || entity.UserSignContractStatus != contract.UserSignContractStatus
-                    || entity.UserSignContractTime != contract.UserSignContractTime
-                    || entity.EnterpriseSignContractStatus != contract.EnterpriseSignContractStatus
-                    || entity.EnterpriseSignContractTime != contract.EnterpriseSignContractTime)
-                {
-                    throw Oops.Oh(EnumErrorCodeType.s510, "鍚堝悓宸插け鏁�");
-                }
+                throw Oops.Oh(EnumErrorCodeType.s510, "鍚堝悓宸插け鏁�");
+            }
+            if (request.Success)
+            {
                 if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
                 {
                     if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
@@ -84,11 +87,7 @@
                         {
                             contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                             contract.UserSignContractTime = DateTime.Now;
-                        }
-                        else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
-                        {
-                            contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
-                            contract.UserSignContractErrorMessage = request.Message;
+                            contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Wait;
                         }
                     }
                     else
@@ -98,43 +97,53 @@
                             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;
-                        }
                     }
-                }
-                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;
+                    contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                     if (contract.UserSignContractTime == null)
                     {
                         contract.UserSignContractTime = DateTime.Now;
                     }
-                    contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Effect;
+                    contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                     if (contract.EnterpriseSignContractTime == null)
                     {
                         contract.EnterpriseSignContractTime = DateTime.Now;
                     }
-                    contract.ContractUrl = data.ContactUrl;
+                    contract.ContractUrl = AliyunOSSUtils.Upload("Contact", data.ContactUrl, $"{contract.ContractTemplate.Name}.pdf").Url;
                 }
-                await repEnterpriseEmployeeContract.UpdateAsync(contract);
+            }
+            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
+                {
+                    contract.UserSignContractErrorMessage = request.Message;
+                    contract.EnterpriseSignContractErrorMessage = request.Message;
+                }
+            }
+            await repEnterpriseEmployeeContract.UpdateAsync(contract);
 
-                entity.UserSignContractStatus = contract.UserSignContractStatus;
-                entity.UserSignContractTime = contract.UserSignContractTime;
-                entity.EnterpriseSignContractStatus = contract.EnterpriseSignContractStatus;
-                entity.EnterpriseSignContractTime = contract.EnterpriseSignContractTime;
-                entity.ContractUrl = contract.ContractUrl;
-                await repEnterpriseEmployee.UpdateAsync(entity);
+            entity.UserSignContractStatus = contract.UserSignContractStatus;
+            entity.UserSignContractTime = contract.UserSignContractTime;
+            entity.EnterpriseSignContractStatus = contract.EnterpriseSignContractStatus;
+            entity.EnterpriseSignContractTime = contract.EnterpriseSignContractTime;
+            entity.ContractUrl = contract.ContractUrl;
+            await repEnterpriseEmployee.UpdateAsync(entity);
 
+            if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass && entity.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass)
+            {
                 var taskUsers = await repTaskInfoUser.AsQueryable()
                     .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass && it.ArrangeStatus == null)
                     .ToListAsync();
@@ -149,7 +158,7 @@
             }
         }
 
-        private async Task UserFaceReal(ElectronSignCallbackCommand request)
+        private async Task UserSign(ElectronSignCallbackCommand request)
         {
             var user = await repUser.AsQueryable()
                 .Include(it => it.UserAuth)
@@ -157,29 +166,28 @@
                 .FirstOrDefaultAsync();
             if (user == null)
                 throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
-            if (request.Data is ElectronSignCallbackCommandUserSignModel data)
-            {
-                if (user.Id != data.OutUserId)
-                    throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
-                var enterpriseEmployees = request.Success
-                    ? await repUser.Change<EnterpriseEmployee>().AsQueryable()
-                        .Where(it => it.UserId == user.Id)
-                        .ToListAsync()
-                    : new List<EnterpriseEmployee>();
-                PersonalUserRealCommandHandler.PersonalReal(
-                    request.Success == true
-                    ? EnumPersonalUserRealStatus.Real
-                    : EnumPersonalUserRealStatus.Fail,
-                    EnumUserRealMethod.Face,
-                    user,
-                    enterpriseEmployees,
-                    user.UserAuth.Name,
-                    user.UserAuth.Identity,
-                    user.UserAuth.IdentityImg,
-                    user.UserAuth.IdentityBackImg,
-                    faceRealUrl: user.UserAuth.FaceRealUrl);
-                await repUser.UpdateAsync(user);
-            }
+            var data = ((JObject)request.Data).ToObject<ElectronSignCallbackCommandUserSignModel>()!;
+            if (user.Id != data.OutUserId)
+                throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+            var enterpriseEmployees = request.Success
+                ? await repUser.Change<EnterpriseEmployee>().AsQueryable()
+                    .Where(it => it.UserId == user.Id)
+                    .ToListAsync()
+                : new List<EnterpriseEmployee>();
+            PersonalUserRealCommandHandler.PersonalReal(
+                request.Success == true
+                ? EnumPersonalUserRealStatus.Real
+                : EnumPersonalUserRealStatus.Fail,
+                user.RealMethod!.Value,
+                user,
+                enterpriseEmployees,
+                user.UserAuth.Name,
+                user.UserAuth.Identity,
+                user.UserAuth.IdentityImg,
+                user.UserAuth.IdentityBackImg,
+                user.UserAuth.PhoneNumber,
+                user.UserAuth.FaceRealUrl);
+            await repUser.UpdateAsync(user);
         }
     }
 }

--
Gitblit v1.9.1