| | |
| | | /// </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> |
| | | /// 同步企业用户 |
| | |
| | | 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) |
| | |
| | | } |
| | | 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); |
| | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | 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); |
| | |
| | | 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) |
| | | { |
| | |
| | | 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 |