File was renamed from FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace FlexJobApi.User.Application |
| | | namespace FlexJobApi.UserServer.Application |
| | | { |
| | | /// <summary> |
| | | /// 企业命令处理器 |
| | | /// </summary> |
| | | public class EnterpriseCommandHandler( |
| | | IRepository<Enterprise> rep, |
| | | IRepository<UserInfo> repUserInfo |
| | | IRepository<User> repUser |
| | | ) : |
| | | IRequestHandler<SaveEnterpriseCommand, Guid>, |
| | | IRequestHandler<SetEnterpriseElectronSignSettingCommand, Guid>, |
| | |
| | | |
| | | { |
| | | private readonly IRepository<Enterprise> rep = rep; |
| | | private readonly IRepository<UserInfo> repUserInfo = repUserInfo; |
| | | private readonly IRepository<User> repUser = repUser; |
| | | |
| | | /// <summary> |
| | | /// 保存企业 |
| | |
| | | public async Task<Guid> Handle(SaveEnterpriseCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var entity = await rep.AsQueryable() |
| | | .Include(it => it.EnterpriseAuth) |
| | | .FirstOrDefaultAsync(it => it.EnterpriseAuth.SocietyCreditCode == request.EnterpriseAuth.SocietyCreditCode); |
| | | .FirstOrDefaultAsync(it => it.SocietyCreditCode == request.SocietyCreditCode); |
| | | if (entity == null) |
| | | { |
| | | entity = new Enterprise(); |
| | | entity.EnterpriseAuth = new EnterpriseAuth(); |
| | | request.Adapt(entity); |
| | | await rep.InsertAsync(entity); |
| | | } |
| | |
| | | await rep.UpdateAsync(entity); |
| | | } |
| | | |
| | | var checkExist = await repUserInfo.AsQueryable() |
| | | .AnyAsync(it => |
| | | it.Type == EnumUserType.Enterprise |
| | | && it.EnterpriseId != entity.Id |
| | | && it.UserAuth.UserName == request.UserName); |
| | | if (checkExist) throw Oops.Oh(EnumErrorCodeType.s405, "该账号"); |
| | | |
| | | var userInfo = await repUserInfo.AsQueryable() |
| | | .Include(it => it.UserAuth) |
| | | var user = await repUser.AsQueryable() |
| | | .FirstOrDefaultAsync(it => |
| | | it.Type == EnumUserType.Enterprise |
| | | && it.EnterpriseId == entity.Id); |
| | | if (userInfo == null) |
| | | && it.UserName == request.UserName); |
| | | if (user == null) |
| | | { |
| | | userInfo = new UserInfo |
| | | if (request.Password.IsNull()) throw Oops.Oh(EnumErrorCodeType.s400, "请填写密码"); |
| | | user = new User |
| | | { |
| | | EnterpriseId = entity.Id, |
| | | Type = EnumUserType.Enterprise, |
| | | Status = EnumUserInfoStatus.Normal, |
| | | UserAuth = new UserAuth |
| | | { |
| | | Name = request.Contacts, |
| | | UserName = request.UserName, |
| | | PhoneNumber = request.ContactPhoneNumber, |
| | | Password = PBKDF2Encryption.Encrypt(MD5Encryption.Encrypt(request.Password)) |
| | | } |
| | | Name = request.Contacts, |
| | | PhoneNumber = request.ContactPhoneNumber, |
| | | UserName = request.UserName, |
| | | Password = PBKDF2Encryption.Encrypt(request.Password), |
| | | Level = 100, |
| | | Status = EnumUserStatus.Normal, |
| | | }; |
| | | await repUserInfo.InsertAsync(userInfo); |
| | | await repUser.InsertAsync(user); |
| | | } |
| | | else |
| | | { |
| | | userInfo.UserAuth.PhoneNumber = request.ContactPhoneNumber; |
| | | await repUserInfo.UpdateAsync(userInfo); |
| | | if (user.EnterpriseId != entity.Id) throw Oops.Oh(EnumErrorCodeType.s405, "该账号"); |
| | | user.Name = request.Contacts; |
| | | user.PhoneNumber = request.ContactPhoneNumber; |
| | | if (request.Password.IsNotNull()) |
| | | { |
| | | user.Password = PBKDF2Encryption.Encrypt(request.Password); |
| | | } |
| | | await repUser.UpdateAsync(user); |
| | | } |
| | | |
| | | return entity.Id; |