diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSocialService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSocialService.java index 632d92f1..6c348b8c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSocialService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSocialService.java @@ -20,6 +20,11 @@ public interface RemoteSocialService { */ void insertByBo(RemoteSocialBo bo); + /** + * 更新社会化关系 + */ + void updateByBo(RemoteSocialBo bo); + /** * 删除社会化关系 */ diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java index 6284c17b..1631a914 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/service/SysLoginService.java @@ -31,6 +31,7 @@ import org.dromara.system.api.RemoteTenantService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.bo.RemoteSocialBo; import org.dromara.system.api.domain.bo.RemoteUserBo; +import org.dromara.system.api.domain.vo.RemoteSocialVo; import org.dromara.system.api.domain.vo.RemoteTenantVo; import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; @@ -66,14 +67,25 @@ public class SysLoginService { * @param authUserData 授权响应实体 */ public void socialRegister(AuthUser authUserData) { + String authId = authUserData.getSource() + authUserData.getUuid(); + // 第三方用户信息 RemoteSocialBo bo = BeanUtil.toBean(authUserData, RemoteSocialBo.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()); - remoteSocialService.insertByBo(bo); + // 查询是否已经绑定用户 + RemoteSocialVo vo = remoteSocialService.selectByAuthId(authId); + if (ObjectUtil.isEmpty(vo)) { + // 没有绑定用户, 新增用户信息 + remoteSocialService.insertByBo(bo); + } else { + // 更新用户信息 + bo.setId(vo.getId()); + remoteSocialService.updateByBo(bo); + } } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java index 15567492..c67fc1e4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteSocialServiceImpl.java @@ -6,8 +6,10 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.system.api.RemoteSocialService; import org.dromara.system.api.domain.bo.RemoteSocialBo; import org.dromara.system.api.domain.vo.RemoteSocialVo; +import org.dromara.system.domain.SysSocial; import org.dromara.system.domain.bo.SysSocialBo; import org.dromara.system.domain.vo.SysSocialVo; +import org.dromara.system.mapper.SysSocialMapper; import org.dromara.system.service.ISysSocialService; import org.springframework.stereotype.Service; @@ -22,6 +24,7 @@ import org.springframework.stereotype.Service; public class RemoteSocialServiceImpl implements RemoteSocialService { private final ISysSocialService sysSocialService; + private final SysSocialMapper sysSocialMapper; /** * 根据 authId 查询用户信息 @@ -40,6 +43,15 @@ public class RemoteSocialServiceImpl implements RemoteSocialService { sysSocialService.insertByBo(MapstructUtils.convert(bo, SysSocialBo.class)); } + /** + * 更新社会化关系 + */ + @Override + public void updateByBo(RemoteSocialBo bo) { + SysSocial update = MapstructUtils.convert(bo, SysSocial.class); + sysSocialMapper.updateById(update); + } + /** * 删除社会化关系 */