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