Sfoglia il codice sorgente

update 优化 SysLoginService#socialRegister 判断是否已经绑定用户 ;
fix 修正 SysSocialServiceImpl#selectByAuthId 重复数据报错问题 ;

zlyx 2 anni fa
parent
commit
c92c99c8da

+ 15 - 8
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java

@@ -26,6 +26,7 @@ import org.dromara.common.tenant.exception.TenantException;
 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 @@ public class SysLoginService {
      * @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);
+        }
     }
 
 

+ 6 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java

@@ -3,6 +3,7 @@ package org.dromara.system.service.impl;
 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 @@ public class SysSocialServiceImpl implements ISysSocialService {
      */
     @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"));
     }
 
 }