From 44cdf09012d27e12c3d113f9a3ffdc9ddc2853ad Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 05 九月 2025 14:23:57 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs |  203 +++++++++++++++++++++++++-------------------------
 1 files changed, 101 insertions(+), 102 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
index 77f062d..0ad74b5 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;
@@ -56,96 +57,96 @@
 
         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, "鍚堝悓宸插け鏁�");
+            }
+            if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
+            {
+                if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
                 {
-                    throw Oops.Oh(EnumErrorCodeType.s510, "鍚堝悓宸插け鏁�");
-                }
-                if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign)
-                {
-                    if (data.UserType == Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal)
+                    if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
                     {
-                        if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
-                        {
-                            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;
-                        }
-                    }
-                    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;
-                        }
-                    }
-                }
-                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.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                         contract.UserSignContractTime = DateTime.Now;
+                        contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Wait;
                     }
-                    contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Effect;
-                    if (contract.EnterpriseSignContractTime == null)
+                    else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
                     {
+                        contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
+                        contract.UserSignContractErrorMessage = request.Message;
+                    }
+                }
+                else
+                {
+                    if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Signing)
+                    {
+                        contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
                         contract.EnterpriseSignContractTime = DateTime.Now;
                     }
-                    contract.ContractUrl = data.ContactUrl;
-                }
-                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);
-
-                var taskUsers = await repTaskInfoUser.AsQueryable()
-                    .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass && it.ArrangeStatus == null)
-                    .ToListAsync();
-                if (taskUsers.IsNotNull())
-                {
-                    foreach (var taskUser in taskUsers)
+                    else if (data.Status == Core.Models.ElectronSignServer.ContractTemplates.EnumElectronSignContractStatus.Cancelled)
                     {
-                        taskUser.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
+                        contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Refuse;
+                        contract.EnterpriseSignContractErrorMessage = request.Message;
                     }
-                    await repTaskInfoUser.UpdateAsync(taskUsers);
                 }
+            }
+            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.Pass;
+                if (contract.UserSignContractTime == null)
+                {
+                    contract.UserSignContractTime = DateTime.Now;
+                }
+                contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass;
+                if (contract.EnterpriseSignContractTime == null)
+                {
+                    contract.EnterpriseSignContractTime = DateTime.Now;
+                }
+                contract.ContractUrl =  AliyunOSSUtils.Upload("Contact", data.ContactUrl, $"{contract.ContractTemplate.Name}.pdf").Url;
+            }
+            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);
+
+            var taskUsers = await repTaskInfoUser.AsQueryable()
+                .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass && it.ArrangeStatus == null)
+                .ToListAsync();
+            if (taskUsers.IsNotNull())
+            {
+                foreach (var taskUser in taskUsers)
+                {
+                    taskUser.ArrangeStatus = EnumTaskUserArrangeStatus.Wait;
+                }
+                await repTaskInfoUser.UpdateAsync(taskUsers);
             }
         }
 
@@ -157,29 +158,27 @@
                 .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,
+                EnumUserRealMethod.Face,
+                user,
+                enterpriseEmployees,
+                user.UserAuth.Name,
+                user.UserAuth.Identity,
+                user.UserAuth.IdentityImg,
+                user.UserAuth.IdentityBackImg,
+                faceRealUrl: user.UserAuth.FaceRealUrl);
+            await repUser.UpdateAsync(user);
         }
     }
 }

--
Gitblit v1.9.1