using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.DataEncryption; using Furion.FriendlyException; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.User.Application { /// /// 企业命令处理器 /// public class EnterpriseCommandHandler( IRepository rep, IRepository repUserInfo ) : IRequestHandler, IRequestHandler, IRequestHandler { private readonly IRepository rep = rep; private readonly IRepository repUserInfo = repUserInfo; /// /// 保存企业 /// /// /// /// public async Task Handle(SaveEnterpriseCommand request, CancellationToken cancellationToken) { var entity = await rep.AsQueryable() .Include(it => it.EnterpriseAuth) .FirstOrDefaultAsync(it => it.EnterpriseAuth.SocietyCreditCode == request.EnterpriseAuth.SocietyCreditCode); if (entity == null) { entity = new Enterprise(); entity.EnterpriseAuth = new EnterpriseAuth(); request.Adapt(entity); await rep.InsertAsync(entity); } else { request.Adapt(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) .FirstOrDefaultAsync(it => it.Type == EnumUserType.Enterprise && it.EnterpriseId == entity.Id); if (userInfo == null) { userInfo = new UserInfo { 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)) } }; await repUserInfo.InsertAsync(userInfo); } else { userInfo.UserAuth.PhoneNumber = request.ContactPhoneNumber; await repUserInfo.UpdateAsync(userInfo); } return entity.Id; } /// /// 设置企业电子签配置 /// /// /// /// public async Task Handle(SetEnterpriseElectronSignSettingCommand request, CancellationToken cancellationToken) { var entity = await rep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "该企业"); request.Adapt(entity); await rep.UpdateAsync(entity); return entity.Id; } /// /// 设置企业短信配置 /// /// /// /// public async Task Handle(SetEnterpriseSmsSettingCommand request, CancellationToken cancellationToken) { var entity = await rep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "该企业"); request.Adapt(entity); await rep.UpdateAsync(entity); return entity.Id; } } }