From d8702161f3b3167a233808077dc8fdc0e4ddf921 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 15:42:27 +0800 Subject: [PATCH] fix:bug --- FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs | 81 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 81 insertions(+), 0 deletions(-) diff --git a/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs b/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs new file mode 100644 index 0000000..f30c36b --- /dev/null +++ b/FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs @@ -0,0 +1,81 @@ +锘縰sing 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 +{ + /// <summary> + /// 浼佷笟鍛戒护澶勭悊鍣� + /// </summary> + public class EnterpriseCommandHandler( + IRepository<Enterprise> rep, + IRepository<UserInfo> repUserInfo + ) + : IRequestHandler<SaveEnterpriseCommand, Guid> + { + private readonly IRepository<Enterprise> rep = rep; + private readonly IRepository<UserInfo> repUserInfo = repUserInfo; + + /// <summary> + /// 淇濆瓨浼佷笟 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<Guid> Handle(SaveEnterpriseCommand request, CancellationToken cancellationToken) + { + var entity = await rep.AsQueryable() + .FirstOrDefaultAsync(it => it.SocietyCreditCode == request.SocietyCreditCode); + if (entity == null) + { + entity = new Enterprise(); + request.Adapt(entity); + await rep.InsertAsync(entity); + } + else + { + request.Adapt(entity); + await rep.UpdateAsync(entity); + } + + var userInfo = await repUserInfo.AsQueryable() + .Include(it => it.UserAuth) + .FirstOrDefaultAsync(it => + it.Type == EnumUserType.Enterprise + && it.UserAuth.UserName == request.UserName); + if (userInfo == null) + { + userInfo = new UserInfo + { + EnterpriseId = entity.Id, + Type = EnumUserType.Enterprise, + Status = EnumUserInfoStatus.Normal, + UserAuth = new UserAuth + { + UserName = request.UserName, + PhoneNumber = request.ContactPhoneNumber, + Password = PBKDF2Encryption.Encrypt(request.Password) + } + }; + await repUserInfo.InsertAsync(userInfo); + } + else + { + if (userInfo.EnterpriseId != entity.Id) throw Oops.Oh(EnumErrorCodeType.s405, "璇ヨ处鍙�"); + userInfo.UserAuth.PhoneNumber = request.ContactPhoneNumber; + await repUserInfo.UpdateAsync(userInfo); + } + + return entity.Id; + } + } +} -- Gitblit v1.9.1