From 06d5b35bae85bf0f4b5bd1f837205395305274f1 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 22 八月 2025 13:43:04 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs | 78 +++++++++++++++++++++++++++++++++----- 1 files changed, 67 insertions(+), 11 deletions(-) diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs index 0e33dde..dfd53dc 100644 --- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs @@ -2,11 +2,14 @@ using FlexJobApi.Core.Models.ElectronSignServer.Common; using FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals; using FlexJobApi.Core.Models.ElectronSignServer.Users; +using Furion; using Furion.DatabaseAccessor; using Furion.DataEncryption; +using Furion.DistributedIDGenerator; using Furion.FriendlyException; using Mapster; using MediatR; +using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using System; @@ -22,15 +25,19 @@ /// 鍚屾鐢ㄦ埛鍛戒护澶勭悊鍣� /// </summary> public class SyncUserCommandHandler( + IMediator mediator, IRepository<User> repUser, IRepository<Enterprise> repEnterprise, + IRepository<ElectronSignSetting> repElectronSignSetting, IRepository<Role> repRole ) : IRequestHandler<SyncEnterpriseUserCommand, Guid>, IRequestHandler<SyncOperationUserCommand, Guid> { + private readonly IMediator mediator = mediator; private readonly IRepository<User> repUser = repUser; private readonly IRepository<Enterprise> repEnterprise = repEnterprise; + private readonly IRepository<ElectronSignSetting> repElectronSignSetting = repElectronSignSetting; private readonly IRepository<Role> repRole = repRole; /// <summary> @@ -43,15 +50,26 @@ { var enterprise = await repEnterprise.AsQueryable() .Include(it => it.EnterpriseAuth) + .Include(it => it.ElectronSignSettings) .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode) .FirstOrDefaultAsync(cancellationToken); + if (enterprise == null) { enterprise = new Enterprise(); - } - if (enterprise.EnterpriseAuth == null) - { - enterprise.EnterpriseAuth = new EnterpriseAuth(); + if (request.Enterprise.ElectronSignAccesses.IsNotNull()) + { + request.Enterprise.ElectronSignAccesses = await repElectronSignSetting.AsQueryable().AsNoTracking() + .Where(it => request.Enterprise.ElectronSignAccesses.Contains(it.Access) && !it.IsDisabled) + .Select(it => it.Access) + .ToListAsync(); + } + enterprise.ElectronSignSettings = request.Enterprise.ElectronSignAccesses + .Select(it => new EnterpriseElectronSignSetting + { + ElectronSignAccess = it + }) + .ToList(); } request.Enterprise.Adapt(enterprise); enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage); @@ -60,8 +78,17 @@ var result = await BaiduOcrUtils.OcrBusinessLicense(enterprise.LicenseImage); if (result?.Model != null) { - result.Model.Adapt(enterprise); + enterprise.EnterpriseType = result.Model.EnterpriseType; + enterprise.RegisteredCapital = result.Model.RegisteredCapital; + enterprise.EstablishmentDate = result.Model.EstablishmentDate; + enterprise.Address = result.Model.Address; + enterprise.MainBusiness = result.Model.MainBusiness; } + } + + if (enterprise.EnterpriseAuth == null) + { + enterprise.EnterpriseAuth = new EnterpriseAuth(); } enterprise.EnterpriseAuth.EnterpriseName = enterprise.EnterpriseName; enterprise.EnterpriseAuth.SocietyCreditCode = enterprise.SocietyCreditCode; @@ -72,6 +99,11 @@ enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg); enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg); + if (enterprise.Id == Guid.Empty) + await repEnterprise.InsertAsync(enterprise); + else + await repEnterprise.UpdateAsync(enterprise); + if (enterprise.EnterpriseAuth.ElectronSignEnterpriseId == null) { var resultRegOrUpdateUser = await new RegOrUpdateUserInput @@ -80,7 +112,7 @@ UserType = EnumElectronSignUserType.Personal, EnterpriseName = enterprise.EnterpriseName, SocietyCreditCode = enterprise.SocietyCreditCode, - Name = enterprise.EnterpriseAuth.Name, + Name = enterprise.EnterpriseAuth.Name ?? enterprise.Contacts, Identity = enterprise.EnterpriseAuth.Identity, Mobile = enterprise.EnterpriseAuth.PhoneNumber, CertAccount = enterprise.EnterpriseAuth.CertAccount @@ -88,7 +120,7 @@ if (resultRegOrUpdateUser?.Success == true) { - enterprise!.EnterpriseAuth!.ElectronSignEnterpriseId = resultRegOrUpdateUser.Result; + enterprise.EnterpriseAuth.ElectronSignEnterpriseId = resultRegOrUpdateUser.Result; } else { @@ -96,10 +128,34 @@ } } - if (enterprise.Id == Guid.Empty) - await repEnterprise.InsertAsync(enterprise); - else - await repEnterprise.UpdateAsync(enterprise); + if (enterprise.IsReal) + { + var resultReal = await new RealEnterpriseInputByCertAccountInput + { + CustomerId = App.GetConfig<Guid>("ElectronSignServer:AppId"), + OutUserId = enterprise.Id.ToString(), + EnterpriseName = enterprise.EnterpriseName, + SocietyCreditCode = enterprise.SocietyCreditCode, + Name = enterprise.EnterpriseAuth.Name ?? enterprise.Contacts, + Identity = enterprise.EnterpriseAuth.Identity, + Mobile = enterprise.EnterpriseAuth.PhoneNumber, + BankCard = enterprise.EnterpriseAuth.BankCard, + BankCardImgUrl = enterprise.EnterpriseAuth.BankCardImg, + LicenseUrl = enterprise.EnterpriseAuth.LicenseImage, + IdentityImgUrl = enterprise.EnterpriseAuth.IdentityImg, + IdentityBackImgUrl = enterprise.EnterpriseAuth.IdentityBackImg, + ProxyPowerAttorneyUrl = enterprise.EnterpriseAuth.ProxyPowerAttorneyUrl, + LegalPerson = enterprise.EnterpriseAuth.LegalPerson, + Proxy = enterprise.EnterpriseAuth.Proxy ?? false, + RealMethod = (EnumElectronSignPersonalRealMethod)enterprise.EnterpriseAuth.EnterpriseRealMethod!.Value, + CertAccount = enterprise.EnterpriseAuth.CertAccount + }.SendHttpAsync<RealEnterpriseInputByCertAccountInput, ElectronSignServerResult<RealEnterpriseInputByCertAccountOutput>>(EnumResourceHttpProvider.ElectronSignServerCustomer); + if (resultReal?.Success != true || resultReal?.Result.Status != EnumElectronSignRealStatus.Real) + { + throw Oops.Oh(EnumErrorCodeType.s510, resultReal?.Message ?? "璐﹀彿瀹炲悕寮傚父"); + } + enterprise.EnterpriseAuth.CertAccount = resultReal.Result.CertAccount; + } var user = await repUser.AsQueryable() .Include(it => it.UserRoles) -- Gitblit v1.9.1