From c92c99c8da92fd9d7dc4af9534419d0679fcc207 Mon Sep 17 00:00:00 2001
From: zlyx <1242874891@qq.com>
Date: 星期三, 02 八月 2023 14:21:12 +0800
Subject: [PATCH] update 优化 SysLoginService#socialRegister 判断是否已经绑定用户 ; fix 修正 SysSocialServiceImpl#selectByAuthId 重复数据报错问题 ;
---
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 23 +++++++++++++++--------
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java | 7 ++++++-
2 files changed, 21 insertions(+), 9 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 c2392d3..ba5840a 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
@@ -26,6 +26,7 @@
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysSocialBo;
+import org.dromara.system.domain.vo.SysSocialVo;
import org.dromara.system.domain.vo.SysTenantVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysUserMapper;
@@ -69,14 +70,20 @@
* @return 缁熶竴鍝嶅簲瀹炰綋
*/
public void socialRegister(AuthUser authUserData) {
- SysSocialBo bo = BeanUtil.toBean(authUserData, SysSocialBo.class);
- BeanUtil.copyProperties(authUserData.getToken(), bo);
- bo.setUserId(LoginHelper.getUserId());
- bo.setAuthId(authUserData.getSource() + authUserData.getUuid());
- bo.setOpenId(authUserData.getUuid());
- bo.setUserName(authUserData.getUsername());
- bo.setNickName(authUserData.getNickname());
- sysSocialService.insertByBo(bo);
+ String authId = authUserData.getSource() + authUserData.getUuid();
+ // 鏌ヨ鏄惁宸茬粡缁戝畾鐢ㄦ埛
+ SysSocialVo vo = sysSocialService.selectByAuthId(authId);
+ if (ObjectUtil.isEmpty(vo)) {
+ // 娌℃湁缁戝畾鐢ㄦ埛, 鏂板鐢ㄦ埛淇℃伅
+ SysSocialBo bo = BeanUtil.toBean(authUserData, SysSocialBo.class);
+ BeanUtil.copyProperties(authUserData.getToken(), bo);
+ bo.setUserId(LoginHelper.getUserId());
+ bo.setAuthId(authId);
+ bo.setOpenId(authUserData.getUuid());
+ bo.setUserName(authUserData.getUsername());
+ bo.setNickName(authUserData.getNickname());
+ sysSocialService.insertByBo(bo);
+ }
}
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 065dea0..14ad934 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
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.system.domain.SysSocial;
import org.dromara.system.domain.bo.SysSocialBo;
import org.dromara.system.domain.vo.SysSocialVo;
@@ -91,7 +92,11 @@
*/
@Override
public SysSocialVo selectByAuthId(String authId) {
- return baseMapper.selectVoOne(new LambdaQueryWrapper<SysSocial>().eq(SysSocial::getAuthId, authId));
+ return baseMapper.selectVoOne(
+ new LambdaQueryWrapper<SysSocial>()
+ .eq(SysSocial::getAuthId, authId)
+ .orderByDesc(BaseEntity::getCreateTime)
+ .last("limit 1"));
}
}
--
Gitblit v1.9.3