From 0210f1fc8e761b92615d77f31cc8752e297b5e5a Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 21 八月 2025 16:21:54 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 45 insertions(+), 3 deletions(-) diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs index c501c32..ecf9bf0 100644 --- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs @@ -20,13 +20,15 @@ /// </summary> public class SyncUserCommandHandler( IRepository<User> repUser, - IRepository<Enterprise> repEnterprise + IRepository<Enterprise> repEnterprise, + IRepository<Role> repRole ) : IRequestHandler<SyncEnterpriseUserCommand, Guid>, IRequestHandler<SyncOperationUserCommand, Guid> { private readonly IRepository<User> repUser = repUser; private readonly IRepository<Enterprise> repEnterprise = repEnterprise; + private readonly IRepository<Role> repRole = repRole; /// <summary> /// 鍚屾浼佷笟鐢ㄦ埛 @@ -37,6 +39,7 @@ 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) @@ -45,8 +48,21 @@ } request.Enterprise.Adapt(enterprise); enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage); + if (enterprise.LicenseImage.IsNotNull() && enterprise.EnterpriseType.IsNull()) + { + var result = await BaiduOcrUtils.OcrBusinessLicense(enterprise.LicenseImage); + if (result?.Model != null) + { + 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); @@ -55,8 +71,10 @@ await repEnterprise.InsertAsync(enterprise); else await repEnterprise.UpdateAsync(enterprise); + var user = await repUser.AsQueryable() - .Where(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName) + .Include(it => it.UserRoles) + .Where(it => it.Type == EnumUserType.Enterprise && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId) .FirstOrDefaultAsync(cancellationToken); if (user == null) { @@ -67,7 +85,19 @@ { 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 == 100) + .Select(it => new UserRole + { + RoleId = it.Id + }) + .ToListAsync(); request.Adapt(user); if (user.Id == Guid.Empty) await repUser.InsertAsync(user); @@ -85,8 +115,9 @@ public async Task<Guid> Handle(SyncOperationUserCommand request, CancellationToken cancellationToken) { 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) { @@ -94,11 +125,22 @@ 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 { IndustrialParkId = it }).ToList(); + user.Level = 100; + user.UserRoles = await repRole.AsQueryable().AsNoTracking() + .Where(it => it.UserType == user.Type && it.MinLevel == 100) + .Select(it => new UserRole + { + RoleId = it.Id + }) + .ToListAsync(); if (user.Id == Guid.Empty) await repUser.InsertAsync(user); else -- Gitblit v1.9.1