From c239be90bfaab913145ff6019abd4fcb194ae847 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期四, 02 一月 2025 16:14:36 +0800
Subject: [PATCH] 1.微信登录-解决一个openId绑定多个用户

---
 src/main/java/com/mzl/flower/service/system/UserService.java |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/system/UserService.java b/src/main/java/com/mzl/flower/service/system/UserService.java
index 5bdb3f8..2f0febf 100644
--- a/src/main/java/com/mzl/flower/service/system/UserService.java
+++ b/src/main/java/com/mzl/flower/service/system/UserService.java
@@ -96,10 +96,11 @@
             , String imgUrl, String nickname,String userType){
         List<String> userTypes = new ArrayList<>();
         userTypes.add(userType);
-        User user = userMapper.getByOpenID(openId,userTypes);
-        if(user == null){
+        List<User> userList = userMapper.getByOpenID(openId,userTypes);
+        if(CollectionUtils.isEmpty(userList)){
             throw new ValidationException("请注册账号后至\"个人中心-绑定微信\"后再使用微信登录");
         }
+        User user=userList.get(0);
 //        user.setNickName(nickname);
         user.setNickName(user.getLoginName());
         user.setPicture(imgUrl);
@@ -119,6 +120,19 @@
     }
 
     public void bindWechat(String userId, String openId, String unionId, String sessionKey, BindWechatDTO dto) {
+        // 查看微信是否已经绑定过用户
+
+        User user = userMapper.selectById(userId);
+        if(ObjectUtils.isEmpty(user)){
+            throw new ValidationException("当前用户不存在");
+        }
+
+
+        List<User> userList=wechatMapper.selectUserByOpenId(openId,user.getType());
+        if(!CollectionUtils.isEmpty(userList)){
+            throw new ValidationException("该微信已绑定其他账号");
+        }
+
         UserWechat wechat = wechatMapper.selectOne(new LambdaQueryWrapper<UserWechat>()
                 .eq(UserWechat::getUserId,userId));
         if(wechat == null){
@@ -137,6 +151,8 @@
             wechat.setRealName(dto.getRealName());
             wechatMapper.updateById(wechat);
         }
+
+
     }
 
 
@@ -504,8 +520,11 @@
     public User getExistUserByOpenId(String openId, String sessionKey, String unionId, String userType) {
         List<String> userTypes = new ArrayList<>();
         userTypes.add(userType);
-        User user = userMapper.getByOpenID(openId,userTypes);
-        return user;
+        List<User> userList = userMapper.getByOpenID(openId,userTypes);
+        if(!CollectionUtils.isEmpty(userList)){
+            return userList.get(0);
+        }
+        return null;
     }
 
     public void registWxUser(CreateWechatUserDTO dto) {

--
Gitblit v1.9.3