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