From 776b235cecdbc66e1c12ff1b8db64a6ea6e5ba5f Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期三, 02 八月 2023 14:56:52 +0800
Subject: [PATCH] !407 【轻量级 PR】优化第三方认证授权绑定 Merge pull request !407 from MichelleChung/5.X
---
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 16 ++++++++++++++--
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java | 9 +++++++++
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java | 4 ++++
3 files changed, 27 insertions(+), 2 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..ad8a41e 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,25 @@
* @return 缁熶竴鍝嶅簲瀹炰綋
*/
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());
- bo.setAuthId(authUserData.getSource() + authUserData.getUuid());
+ bo.setAuthId(authId);
bo.setOpenId(authUserData.getUuid());
bo.setUserName(authUserData.getUsername());
bo.setNickName(authUserData.getNickname());
- sysSocialService.insertByBo(bo);
+ // 鏌ヨ鏄惁宸茬粡缁戝畾鐢ㄦ埛
+ SysSocialVo vo = sysSocialService.selectByAuthId(authId);
+ if (ObjectUtil.isEmpty(vo)) {
+ // 娌℃湁缁戝畾鐢ㄦ埛, 鏂板鐢ㄦ埛淇℃伅
+ sysSocialService.insertByBo(bo);
+ } else {
+ // 鏇存柊鐢ㄦ埛淇℃伅
+ bo.setId(vo.getId());
+ sysSocialService.updateByBo(bo);
+ }
}
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 9c8275e..5f2014d 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
@@ -33,6 +33,10 @@
*/
Boolean insertByBo(SysSocialBo bo);
+ /**
+ * 鏇存柊绀句細鍖栧叧绯�
+ */
+ Boolean updateByBo(SysSocialBo 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..bd7248f 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
@@ -65,6 +65,15 @@
return flag;
}
+ /**
+ * 鏇存柊绀句細鍖栧叧绯�
+ */
+ @Override
+ public Boolean updateByBo(SysSocialBo bo) {
+ SysSocial update = MapstructUtils.convert(bo, SysSocial.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
/**
* 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
--
Gitblit v1.9.3