From 8c5cc69cb04feef035f27e05cbaabda42bd8155c Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 21 八月 2025 16:58:44 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs | 62 +++++++++++++++++++++++++++---- 1 files changed, 54 insertions(+), 8 deletions(-) diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs index 02ea6c3..0e33dde 100644 --- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs @@ -1,4 +1,7 @@ 锘縰sing FlexJobApi.Core; +using FlexJobApi.Core.Models.ElectronSignServer.Common; +using FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals; +using FlexJobApi.Core.Models.ElectronSignServer.Users; using Furion.DatabaseAccessor; using Furion.DataEncryption; using Furion.FriendlyException; @@ -39,11 +42,16 @@ public async Task<Guid> Handle(SyncEnterpriseUserCommand request, CancellationToken cancellationToken) { var enterprise = await repEnterprise.AsQueryable() + .Include(it => it.EnterpriseAuth) .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode) .FirstOrDefaultAsync(cancellationToken); if (enterprise == null) { enterprise = new Enterprise(); + } + if (enterprise.EnterpriseAuth == null) + { + enterprise.EnterpriseAuth = new EnterpriseAuth(); } request.Enterprise.Adapt(enterprise); enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage); @@ -55,19 +63,47 @@ result.Model.Adapt(enterprise); } } - if (enterprise.EnterpriseAuth != null) + enterprise.EnterpriseAuth.EnterpriseName = enterprise.EnterpriseName; + enterprise.EnterpriseAuth.SocietyCreditCode = enterprise.SocietyCreditCode; + enterprise.EnterpriseAuth.LicenseImage = enterprise.LicenseImage; + enterprise.EnterpriseAuth.LegalPerson = enterprise.LegalPerson; + enterprise.EnterpriseAuth.LegalIdentity = enterprise.LegalIdentity; + enterprise.EnterpriseAuth.IdentityImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityImg, request.Enterprise.EnterpriseAuth.IdentityImg); + enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg); + enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg); + + if (enterprise.EnterpriseAuth.ElectronSignEnterpriseId == null) { - enterprise.EnterpriseAuth.IdentityImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityImg, request.Enterprise.EnterpriseAuth.IdentityImg); - enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg); - enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg); + var resultRegOrUpdateUser = await new RegOrUpdateUserInput + { + OutUserId = enterprise.Id.ToString(), + UserType = EnumElectronSignUserType.Personal, + EnterpriseName = enterprise.EnterpriseName, + SocietyCreditCode = enterprise.SocietyCreditCode, + Name = enterprise.EnterpriseAuth.Name, + Identity = enterprise.EnterpriseAuth.Identity, + Mobile = enterprise.EnterpriseAuth.PhoneNumber, + CertAccount = enterprise.EnterpriseAuth.CertAccount + }.SendHttpAsync<RegOrUpdateUserInput, ElectronSignServerResult<Guid?>>(EnumResourceHttpProvider.ElectronSignServerCustomer); + + if (resultRegOrUpdateUser?.Success == true) + { + enterprise!.EnterpriseAuth!.ElectronSignEnterpriseId = resultRegOrUpdateUser.Result; + } + else + { + throw Oops.Oh(EnumErrorCodeType.s510, resultRegOrUpdateUser?.Message ?? "娉ㄥ唽鐢靛瓙绛捐处鍙峰紓甯�"); + } } + if (enterprise.Id == Guid.Empty) await repEnterprise.InsertAsync(enterprise); else await repEnterprise.UpdateAsync(enterprise); + var user = await repUser.AsQueryable() .Include(it => it.UserRoles) - .Where(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName) + .Where(it => it.Type == EnumUserType.Enterprise && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId) .FirstOrDefaultAsync(cancellationToken); if (user == null) { @@ -78,10 +114,14 @@ { throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿"); } + var checkUserNameExist = await repUser.AsQueryable().AsNoTracking() + .AnyAsync(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName && it.Id != user.Id); + if (checkUserNameExist) throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿"); + user.EnterpriseId = enterprise.Id; user.Level = 100; user.UserRoles = await repRole.AsQueryable().AsNoTracking() - .Where(it => it.UserType == user.Type && it.MinLevel <= user.Level) + .Where(it => it.UserType == user.Type && it.MinLevel == 100) .Select(it => new UserRole { RoleId = it.Id @@ -92,6 +132,9 @@ await repUser.InsertAsync(user); else await repUser.UpdateAsync(user); + + + return user.Id; } @@ -106,7 +149,7 @@ var user = await repUser.AsQueryable() .Include(it => it.UserRoles) .Include(it => it.UserManageIndustrialParks) - .Where(it => it.Type == EnumUserType.Operation && it.UserName == request.UserName) + .Where(it => it.Type == EnumUserType.Operation && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId) .FirstOrDefaultAsync(cancellationToken); if (user == null) { @@ -114,6 +157,9 @@ user.Type = EnumUserType.Operation; user.Status = EnumUserStatus.Normal; } + var checkUserNameExist = await repUser.AsQueryable().AsNoTracking() + .AnyAsync(it => it.Type == EnumUserType.Operation && it.UserName == request.UserName && it.Id != user.Id); + if (checkUserNameExist) throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿"); request.Adapt(user); user.UserManageIndustrialParks = request.IndustrialParkIds.Select(it => new UserManageIndustrialPark { @@ -121,7 +167,7 @@ }).ToList(); user.Level = 100; user.UserRoles = await repRole.AsQueryable().AsNoTracking() - .Where(it => it.UserType == user.Type && it.MinLevel <= user.Level) + .Where(it => it.UserType == user.Type && it.MinLevel == 100) .Select(it => new UserRole { RoleId = it.Id -- Gitblit v1.9.1