From 1482f950f2b30835a268ae9e6c6bd817ba47a684 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 11 九月 2025 11:13:02 +0800 Subject: [PATCH] feat:开发 --- 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