From ea5d657e3177df33c306734e7516703fb60af101 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 11 五月 2024 19:52:33 +0800
Subject: [PATCH] fix 修复 三方账号可以被同一个用户多次绑定问题

---
 ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index b2c9d3a..243d685 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -5,6 +5,7 @@
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.lock.annotation.Lock4j;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.zhyd.oauth.model.AuthUser;
@@ -64,20 +65,24 @@
      * 缁戝畾绗笁鏂圭敤鎴�
      *
      * @param authUserData 鎺堟潈鍝嶅簲瀹炰綋
-     * @return 缁熶竴鍝嶅簲瀹炰綋
      */
+    @Lock4j
     public void socialRegister(AuthUser authUserData) {
         String authId = authUserData.getSource() + authUserData.getUuid();
         // 绗笁鏂圭敤鎴蜂俊鎭�
         SysSocialBo bo = BeanUtil.toBean(authUserData, SysSocialBo.class);
         BeanUtil.copyProperties(authUserData.getToken(), bo);
-        bo.setUserId(LoginHelper.getUserId());
+        Long userId = LoginHelper.getUserId();
+        bo.setUserId(userId);
         bo.setAuthId(authId);
         bo.setOpenId(authUserData.getUuid());
         bo.setUserName(authUserData.getUsername());
         bo.setNickName(authUserData.getNickname());
         // 鏌ヨ鏄惁宸茬粡缁戝畾鐢ㄦ埛
-        List<SysSocialVo> list = sysSocialService.selectByAuthId(authId);
+        SysSocialBo params = new SysSocialBo();
+        params.setUserId(userId);
+        params.setSource(bo.getSource());
+        List<SysSocialVo> list = sysSocialService.queryList(params);
         if (CollUtil.isEmpty(list)) {
             // 娌℃湁缁戝畾鐢ㄦ埛, 鏂板鐢ㄦ埛淇℃伅
             sysSocialService.insertByBo(bo);
@@ -85,6 +90,8 @@
             // 鏇存柊鐢ㄦ埛淇℃伅
             bo.setId(list.get(0).getId());
             sysSocialService.updateByBo(bo);
+            // 濡傛灉瑕佺粦瀹氱殑骞冲彴璐﹀彿宸茬粡琚粦瀹氳繃浜� 鏄惁鎶涘紓甯歌嚜琛屽喅鏂�
+            // throw new ServiceException("姝ゅ钩鍙拌处鍙峰凡缁忚缁戝畾!");
         }
     }
 

--
Gitblit v1.9.3