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/mapper/system/UserWechatMapper.java | 10 ++++++++++
src/main/resources/mapper/system/UserWechatMapper.xml | 13 +++++++++++++
src/main/java/com/mzl/flower/service/system/UserService.java | 27 +++++++++++++++++++++++----
src/main/java/com/mzl/flower/mapper/system/UserMapper.java | 2 +-
4 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/mzl/flower/mapper/system/UserMapper.java b/src/main/java/com/mzl/flower/mapper/system/UserMapper.java
index ceda22d..fec011a 100644
--- a/src/main/java/com/mzl/flower/mapper/system/UserMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/system/UserMapper.java
@@ -23,7 +23,7 @@
String selectUserRoleDesc(@Param("userId") String userId);
- User getByOpenID(@Param("openId") String openId, List<String> userTypes);
+ List<User> getByOpenID(@Param("openId") String openId, List<String> userTypes);
List<SmsSelectVO> getSelectList(@Param("idList") List<String> idList);
diff --git a/src/main/java/com/mzl/flower/mapper/system/UserWechatMapper.java b/src/main/java/com/mzl/flower/mapper/system/UserWechatMapper.java
index 17bb46e..23c0e3d 100644
--- a/src/main/java/com/mzl/flower/mapper/system/UserWechatMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/system/UserWechatMapper.java
@@ -1,11 +1,21 @@
package com.mzl.flower.mapper.system;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mzl.flower.entity.system.User;
import com.mzl.flower.entity.system.UserWechat;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
+
+import java.util.List;
@Repository
public interface UserWechatMapper extends BaseMapper<UserWechat> {
+ /**
+ * 根据用户类型判断当前用户是否已经绑定了微信
+ * @param openId
+ * @return
+ */
+ List<User> selectUserByOpenId(@Param("openId") String openId,@Param("userType") String userType);
}
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) {
diff --git a/src/main/resources/mapper/system/UserWechatMapper.xml b/src/main/resources/mapper/system/UserWechatMapper.xml
new file mode 100644
index 0000000..bd4c981
--- /dev/null
+++ b/src/main/resources/mapper/system/UserWechatMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.system.UserWechatMapper">
+
+ <select id="selectUserByOpenId" resultType="com.mzl.flower.entity.system.User">
+ select *
+ from t_user u
+ left join t_user_wechat uw
+ on u.id =uw.user_id
+ where uw.open_id=#{openId}
+ and u.type=#{userType}
+ </select>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3