From b288e7effa0edc09baad6089433a38b2b29b29db Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 08 九月 2025 15:33:03 +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