From 91bebd62f70a33c20a0a8880cfc0b2e99a9cc487 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 11 八月 2025 14:16:00 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs |   62 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
index 71a666a..6319fcd 100644
--- a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
@@ -26,7 +26,8 @@
         IRequestHandler<SmsLoginCommand, LoginCommandCallback>,
         IRequestHandler<WxmpLoginCommand, LoginCommandCallback>,
         IRequestHandler<BindWxmpUserInfoCommand, LoginCommandCallback>,
-        IRequestHandler<BindPhoneNumberCommand, bool>
+        IRequestHandler<ChangePhoneNumberCommand, bool>,
+        IRequestHandler<RegisterPersonalUserCommand, bool>
     {
         private readonly IRepository<User> rep = rep;
         private readonly SmsUtils smsUtils = smsUtils;
@@ -68,19 +69,6 @@
             var user = await rep.AsQueryable().AsNoTracking()
                 .Where(it => it.UserName == request.PhoneNumber && it.Type == request.Type)
                 .FirstOrDefaultAsync(cancellationToken);
-            if (user == null && request.Type == EnumUserType.Personal)
-            {
-                user = new User
-                {
-                    Type = request.Type,
-                    UserName = request.PhoneNumber,
-                    PhoneNumber = request.PhoneNumber,
-                    IsCheckPhoneNumber = true,
-                    Level = 1,
-                    Status = EnumUserStatus.Normal
-                };
-                await rep.InsertAsync(user);
-            }
             if (user == null)
                 throw Oops.Oh(EnumUserErrorCodeType.u1000);
             if (user.Status == EnumUserStatus.Disabled)
@@ -120,24 +108,30 @@
         }
 
         /// <summary>
-        /// 缁戝畾鎵嬫満鍙�
+        /// 鏇存崲鎵嬫満鍙�
         /// </summary>
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task<bool> Handle(BindPhoneNumberCommand request, CancellationToken cancellationToken)
+        public async Task<bool> Handle(ChangePhoneNumberCommand request, CancellationToken cancellationToken)
         {
             await smsUtils.CheckVerifyCode(new CheckVerifyCodeModel
             {
                 PhoneNumber = request.PhoneNumber,
                 VerifyCode = request.VerifyCode,
-                TemplateCode = EnumSmsTemplateCode.LoginOrRegister
+                TemplateCode = EnumSmsTemplateCode.UpdateUserPhoneNumber
             });
             var logier = JwtUtils.GetCurrentLogier();
             var user = await rep.AsQueryable()
                 .FirstOrDefaultAsync(it => it.Id == logier.Id);
             if (user == null)
                 throw Oops.Oh(EnumErrorCodeType.s404, "褰撳墠璐﹀彿涓嶅瓨鍦�");
+
+            var exist = await rep.AsQueryable()
+                .Where(it => it.Type == logier.Type && it.PhoneNumber == request.PhoneNumber && it.Id != user.Id)
+                .AnyAsync(cancellationToken);
+            if (exist) throw Oops.Oh(EnumUserErrorCodeType.u1010);
+
             user.UserName = request.PhoneNumber;
             user.PhoneNumber = request.PhoneNumber;
             user.IsCheckPhoneNumber = true;
@@ -216,6 +210,39 @@
         }
 
         /// <summary>
+        /// 娉ㄥ唽涓汉璐﹀彿
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<bool> Handle(RegisterPersonalUserCommand request, CancellationToken cancellationToken)
+        {
+            await smsUtils.CheckVerifyCode(new CheckVerifyCodeModel
+            {
+                PhoneNumber = request.PhoneNumber,
+                VerifyCode = request.VerifyCode,
+                TemplateCode = EnumSmsTemplateCode.LoginOrRegister
+            });
+            var user = await rep.AsQueryable()
+                .FirstOrDefaultAsync(it => it.Type == EnumUserType.Personal && it.UserName == request.PhoneNumber);
+            if (user != null)
+                throw Oops.Oh(EnumUserErrorCodeType.u1010);
+
+            user = new User
+            {
+                Type = EnumUserType.Personal,
+                UserName = request.PhoneNumber,
+                PhoneNumber = request.PhoneNumber,
+                IsCheckPhoneNumber = true,
+                Level = 1,
+                Status = EnumUserStatus.Normal
+            };
+            await rep.InsertAsync(user);
+
+            return true;
+        }
+
+        /// <summary>
         /// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
         /// </summary>
         /// <param name="user"></param>
@@ -242,6 +269,7 @@
                 Id = logier.Id,
                 AccessToken = logier.AccessToken,
                 RefreshToken = logier.RefreshToken,
+                IsBindPhoneNumber = logier.PhoneNumber.IsNotNull()
             };
         }
     }

--
Gitblit v1.9.1