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

---
 FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs |    8 +++++++-
 FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs     |   15 +++++++++++----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
index 1f3bb6b..6138ecb 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
@@ -11,10 +11,16 @@
     /// <summary>
     /// 缁戝畾寰俊灏忕▼搴忕敤鎴蜂俊鎭�
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
     public class BindWxmpUserInfoCommand : IRequest<LoginCommandCallback>
     {
         /// <summary>
+        /// 璁块棶浠ょ墝
+        /// </summary>
+        [Required]
+        public string AccessToken { get; set; }
+
+        /// <summary>
         /// 鍖呮嫭鏁忔劅鏁版嵁鍦ㄥ唴鐨勫畬鏁寸敤鎴蜂俊鎭殑鍔犲瘑鏁版嵁
         /// </summary>
         [Required]
diff --git a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
index c7b4d31..7685bd3 100644
--- a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs
@@ -9,6 +9,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Claims;
 using System.Security.Cryptography;
 using System.Text;
 using System.Threading.Tasks;
@@ -152,9 +153,15 @@
         /// <exception cref="NotImplementedException"></exception>
         public async Task<LoginCommandCallback> Handle(BindWxmpUserInfoCommand request, CancellationToken cancellationToken)
         {
-            var logier = JwtUtils.GetCurrentLogier();
+            var claims = JWTEncryption.ReadJwtToken(request.AccessToken).Claims;
+            var claimIdentity = new ClaimsIdentity("AuthenticationTypes.Federation");
+            claimIdentity.AddClaims(claims);
+            var claimsPrincipal = new ClaimsPrincipal(claimIdentity);
+            var id = claimsPrincipal.FindFirstValue("Id").ToGuid();
+            var type = claimsPrincipal.FindFirstValue("Type").ToEnum<EnumUserType>();
+
             var user = await rep.AsQueryable()
-                .Where(it => it.Type == logier.Type && it.Id == logier.Id)
+                .Where(it => it.Type == type && it.Id == id)
                 .FirstOrDefaultAsync(cancellationToken);
             if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "褰撳墠璐﹀彿");
             if (user.WxmpOpenId.IsNull()) throw Oops.Oh(EnumUserErrorCodeType.u1100);
@@ -187,11 +194,11 @@
                 }
 
                 var bindPhoneNumberUser = await rep.AsQueryable()
-                    .Where(it => it.Type == logier.Type && it.PhoneNumber == info.PhoneNumber && it.Id != user.Id)
+                    .Where(it => it.Type == type && it.PhoneNumber == info.PhoneNumber && it.Id != user.Id)
                     .FirstOrDefaultAsync(cancellationToken);
                 if (bindPhoneNumberUser == null)
                 {
-                    if (logier.Type == EnumUserType.Enterprise)
+                    if (type == EnumUserType.Enterprise)
                     {
                         throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ处鍙�");
                     }

--
Gitblit v1.9.1