using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.DataEncryption; using Furion.FriendlyException; using Mapster; using MediatR; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// /// /// public class SyncEnterpriseUserCommandHandler( IRepository repUser, IRepository repEnterprise ) : IRequestHandler { private readonly IRepository repUser = repUser; private readonly IRepository repEnterprise = repEnterprise; /// /// 同步企业用户 /// /// /// /// public async Task Handle(SyncEnterpriseUserCommand request, CancellationToken cancellationToken) { var passwordHash = "AQAAAAEAACcQAAAAEKvgz31jJdPNao5QXsEM+qcRuSPZYIqoa3fCJFVN1W5Iw6oh7rd9i3uPXAYQt7oW1A=="; var b = new PasswordHasher().VerifyHashedPassword(new User(), passwordHash, "uHrta91"); Console.WriteLine(); var enterprise = await repEnterprise.AsQueryable() .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode) .FirstOrDefaultAsync(cancellationToken); if (enterprise == null) { enterprise = new Enterprise(); request.Enterprise.Adapt(enterprise); await repEnterprise.InsertAsync(enterprise); } else { request.Enterprise.Adapt(enterprise); await repEnterprise.UpdateAsync(enterprise); } var user = await repUser.AsQueryable() .Where(it => it.Type == EnumUserType.Enterprise && it.EnterpriseId == enterprise.Id && it.UserName == request.UserName) .FirstOrDefaultAsync(cancellationToken); if (user == null) { var exist = await repUser.AsQueryable().AsNoTracking() .AnyAsync(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName); if (exist) throw Oops.Oh(EnumErrorCodeType.s405, "账号"); user = new User(); request.Adapt(user); await repUser.InsertAsync(user); } else { request.Adapt(user); await repUser.UpdateAsync(user); } return user.Id; } } }