ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.lock.annotation.Lock4j; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.zhyd.oauth.model.AuthUser; @@ -64,20 +65,24 @@ * 绑定第三方用户 * * @param authUserData 授权响应实体 * @return 统一响应实体 */ @Lock4j 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()); Long userId = LoginHelper.getUserId(); bo.setUserId(userId); bo.setAuthId(authId); bo.setOpenId(authUserData.getUuid()); bo.setUserName(authUserData.getUsername()); bo.setNickName(authUserData.getNickname()); // 查询是否已经绑定用户 List<SysSocialVo> list = sysSocialService.selectByAuthId(authId); SysSocialBo params = new SysSocialBo(); params.setUserId(userId); params.setSource(bo.getSource()); List<SysSocialVo> list = sysSocialService.queryList(params); if (CollUtil.isEmpty(list)) { // 没有绑定用户, 新增用户信息 sysSocialService.insertByBo(bo); @@ -85,6 +90,8 @@ // 更新用户信息 bo.setId(list.get(0).getId()); sysSocialService.updateByBo(bo); // 如果要绑定的平台账号已经被绑定过了 是否抛异常自行决断 // throw new ServiceException("此平台账号已经被绑定!"); } } ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java
@@ -29,9 +29,9 @@ private Long id; /** * 的唯一ID * 认证唯一ID */ @NotBlank(message = "的唯一ID不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "认证唯一ID不能为空", groups = { AddGroup.class, EditGroup.class }) private String authId; /** @@ -64,7 +64,7 @@ /** * 用户的 ID */ @NotBlank(message = "用户的 ID不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "用户的ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long userId; /** ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java
@@ -21,7 +21,7 @@ /** * 查询社会化关系列表 */ List<SysSocialVo> queryList(); List<SysSocialVo> queryList(SysSocialBo bo); /** * 查询社会化关系列表 @@ -45,9 +45,7 @@ /** * 根据 authId 查询 SysSocial 表和 SysUser 表,返回 SysSocialAuthResult 映射的对象 * @param authId 认证ID * @return SysSocial * 根据 authId 查询 */ List<SysSocialVo> selectByAuthId(String authId); ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
@@ -1,8 +1,10 @@ package org.dromara.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.domain.SysSocial; import org.dromara.system.domain.bo.SysSocialBo; import org.dromara.system.domain.vo.SysSocialVo; @@ -37,8 +39,12 @@ * 授权列表 */ @Override public List<SysSocialVo> queryList() { return baseMapper.selectVoList(); public List<SysSocialVo> queryList(SysSocialBo bo) { LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>() .eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId()) .eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId()) .eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource()); return baseMapper.selectVoList(lqw); } @Override