update 优化 SysLoginService#socialRegister 判断是否已经绑定用户 ;
fix 修正 SysSocialServiceImpl#selectByAuthId 重复数据报错问题 ;
已修改2个文件
30 ■■■■ 文件已修改
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
        }
    }
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"));
    }
}