From c6144ede2ed5fcbb41d919b3c5ad47716e15998d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 11 May 2024 20:19:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=8F=AF=E4=BB=A5=E8=A2=AB=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=94=A8=E6=88=B7=E5=A4=9A=E6=AC=A1=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/api/RemoteSocialService.java | 7 +++++++ .../dromara/system/api/domain/vo/RemoteSocialVo.java | 2 +- .../org/dromara/auth/service/SysLoginService.java | 12 ++++++++++-- .../org/dromara/system/domain/bo/SysSocialBo.java | 2 +- .../org/dromara/system/domain/vo/SysSocialVo.java | 2 +- .../system/dubbo/RemoteSocialServiceImpl.java | 9 +++++++-- .../dromara/system/service/ISysSocialService.java | 2 +- .../system/service/impl/SysSocialServiceImpl.java | 10 ++++++++-- 8 files changed, 36 insertions(+), 10 deletions(-) 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 91c0d94a..0a54df56 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,13 @@ public interface RemoteSocialService { */ List selectByAuthId(String authId); + /** + * 查询列表 + * + * @param bo 社会化关系业务对象 + */ + List queryList(RemoteSocialBo bo); + /** * 保存社会化关系 * diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSocialVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSocialVo.java index 71e8d58a..b3272f56 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSocialVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSocialVo.java @@ -32,7 +32,7 @@ public class RemoteSocialVo implements Serializable { private String tenantId; /** - * 的唯一ID + * 认证唯一ID */ private String authId; 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 7d614a2e..ee5f07cd 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 @@ -6,6 +6,7 @@ import cn.dev33.satoken.stp.StpUtil; 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; @@ -73,18 +74,23 @@ public class SysLoginService { * * @param authUserData 授权响应实体 */ + @Lock4j 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()); + Long userId = LoginHelper.getUserId(); + bo.setUserId(userId); bo.setAuthId(authId); bo.setOpenId(authUserData.getUuid()); bo.setUserName(authUserData.getUsername()); bo.setNickName(authUserData.getNickname()); // 查询是否已经绑定用户 - List list = remoteSocialService.selectByAuthId(authId); + RemoteSocialBo params = new RemoteSocialBo(); + params.setUserId(userId); + params.setSource(bo.getSource()); + List list = remoteSocialService.queryList(params); if (CollUtil.isEmpty(list)) { // 没有绑定用户, 新增用户信息 remoteSocialService.insertByBo(bo); @@ -92,6 +98,8 @@ public class SysLoginService { // 更新用户信息 bo.setId(list.get(0).getId()); remoteSocialService.updateByBo(bo); + // 如果要绑定的平台账号已经被绑定过了 是否抛异常自行决断 + // throw new ServiceException("此平台账号已经被绑定!"); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java index 7784271b..ba98b003 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java @@ -29,7 +29,7 @@ public class SysSocialBo extends TenantEntity { private Long id; /** - * 的唯一ID + * 认证唯一ID */ @NotBlank(message = "的唯一ID不能为空", groups = { AddGroup.class, EditGroup.class }) private String authId; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java index 1c029fe5..613bf26d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java @@ -37,7 +37,7 @@ public class SysSocialVo implements Serializable { private String tenantId; /** - * 的唯一ID + * 认证唯一ID */ private String authId; 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 3ddef24b..7adf2584 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 @@ -8,7 +8,6 @@ import org.dromara.system.api.domain.bo.RemoteSocialBo; import org.dromara.system.api.domain.vo.RemoteSocialVo; 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; @@ -25,7 +24,6 @@ import java.util.List; public class RemoteSocialServiceImpl implements RemoteSocialService { private final ISysSocialService sysSocialService; - private final SysSocialMapper sysSocialMapper; /** * 根据 authId 查询用户信息 @@ -36,6 +34,13 @@ public class RemoteSocialServiceImpl implements RemoteSocialService { return MapstructUtils.convert(list, RemoteSocialVo.class); } + @Override + public List queryList(RemoteSocialBo bo) { + SysSocialBo params = MapstructUtils.convert(bo, SysSocialBo.class); + List list = sysSocialService.queryList(params); + return MapstructUtils.convert(list, RemoteSocialVo.class); + } + /** * 保存社会化关系 */ 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 0950b600..57d34b69 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 @@ -21,7 +21,7 @@ public interface ISysSocialService { /** * 查询社会化关系列表 */ - List queryList(); + List queryList(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 a35a7088..d8eed0f3 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 @@ -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 @@ public class SysSocialServiceImpl implements ISysSocialService { * 授权列表 */ @Override - public List queryList() { - return baseMapper.selectVoList(); + public List queryList(SysSocialBo bo) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper() + .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