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 ++++++++++--- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java | 10 ++++++++-- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java | 6 ++---- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java | 6 +++--- 4 files changed, 23 insertions(+), 12 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("姝ゅ钩鍙拌处鍙峰凡缁忚缁戝畾!"); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java index 7784271..cede1e9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java @@ -29,9 +29,9 @@ private Long id; /** - * 鐨勫敮涓�ID + * 璁よ瘉鍞竴ID */ - @NotBlank(message = "鐨勫敮涓�ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "璁よ瘉鍞竴ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private String authId; /** @@ -64,7 +64,7 @@ /** * 鐢ㄦ埛鐨� ID */ - @NotBlank(message = "鐢ㄦ埛鐨� ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "鐢ㄦ埛鐨処D涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class }) private Long userId; /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java index d5702c9..cc7016e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java @@ -21,7 +21,7 @@ /** * 鏌ヨ绀句細鍖栧叧绯诲垪琛� */ - List<SysSocialVo> queryList(); + List<SysSocialVo> queryList(SysSocialBo bo); /** * 鏌ヨ绀句細鍖栧叧绯诲垪琛� @@ -45,9 +45,7 @@ /** - * 鏍规嵁 authId 鏌ヨ SysSocial 琛ㄥ拰 SysUser 琛紝杩斿洖 SysSocialAuthResult 鏄犲皠鐨勫璞� - * @param authId 璁よ瘉ID - * @return SysSocial + * 鏍规嵁 authId 鏌ヨ */ List<SysSocialVo> selectByAuthId(String authId); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java index aa86ae1..9c54cbc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java @@ -1,8 +1,10 @@ package org.dromara.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.system.domain.SysSocial; import org.dromara.system.domain.bo.SysSocialBo; import org.dromara.system.domain.vo.SysSocialVo; @@ -37,8 +39,12 @@ * 鎺堟潈鍒楄〃 */ @Override - public List<SysSocialVo> queryList() { - return baseMapper.selectVoList(); + public List<SysSocialVo> queryList(SysSocialBo bo) { + LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>() + .eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId()) + .eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId()) + .eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource()); + return baseMapper.selectVoList(lqw); } @Override -- Gitblit v1.9.3