ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -175,13 +175,15 @@ return R.fail("对不起,授权信息验证不通过,请退出重试!"); } AuthUser authUserData = authUser.getData(); SysSocialVo user = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid()); if (ObjectUtil.isNotNull(user)) { SysSocialVo social = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid()); if (ObjectUtil.isNotNull(social)) { SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() .eq(SysUser::getUserId, social.getUserId())); // 执行登录和记录登录信息操作 return loginAndRecord(user.getTenantId(), user.getUserName(), authUserData); } else { // 判断是否已登录 if (LoginHelper.getUserId() == null) { if (!StpUtil.isLogin()) { return R.fail("授权失败,请先登录才能绑定"); } SysSocialBo bo = new SysSocialBo(); @@ -211,10 +213,10 @@ */ private R<String> loginAndRecord(String tenantId, String userName, AuthUser authUser) { checkTenant(tenantId); SysUserVo dbUser = loadUserByUsername(tenantId, userName); LoginHelper.loginByDevice(buildLoginUser(dbUser), DeviceType.SOCIAL); recordLogininfor(dbUser.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLoginInfo(dbUser.getUserId()); SysUserVo user = loadUserByUsername(tenantId, userName); LoginHelper.loginByDevice(buildLoginUser(user), DeviceType.SOCIAL); recordLogininfor(user.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLoginInfo(user.getUserId()); return R.ok(StpUtil.getTokenValue()); } ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java
@@ -28,6 +28,11 @@ private Long id; /** * 用户ID */ private Long userId; /** * 的唯一ID */ private String authId; @@ -56,11 +61,6 @@ * 用户的 open id */ private String openId; /** * 用户的 ID */ private Long userId; /** * 授权的第三方账号 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java
@@ -30,6 +30,12 @@ private Long id; /** * 用户ID */ @ExcelProperty(value = "用户ID") private Long userId; /** * 租户ID */ private String tenantId; @@ -69,12 +75,6 @@ */ @ExcelProperty(value = "用户的 open id") private String openId; /** * 用户的 ID */ @ExcelProperty(value = "用户的 ID") private Long userId; /** * 授权的第三方账号 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java
@@ -11,12 +11,4 @@ */ public interface SysSocialMapper extends BaseMapperPlus<SysSocial, SysSocialVo> { /** * 根据 authId 查询 SysSocial 表和 SysUser 表,返回 SysSocialAuthResult 映射的对象 * * @param authId 认证ID * @return SysSocial */ SysSocialVo selectByAuthId(String authId); } ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
@@ -86,12 +86,12 @@ /** * 根据 authId 查询用户信息 * * @param authId 用户id * @return 用户信息 * @param authId 认证id * @return 授权信息 */ @Override public SysSocialVo selectByAuthId(String authId) { return baseMapper.selectByAuthId(authId); return baseMapper.selectVoOne(new LambdaQueryWrapper<SysSocial>().eq(SysSocial::getAuthId, authId)); } } ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml
@@ -4,20 +4,4 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.system.mapper.SysSocialMapper"> <resultMap type="org.dromara.system.domain.vo.SysSocialVo" id="SysSocialAuthResult"> <id property="id" column="id"/> </resultMap> <select id="selectByAuthId" parameterType="String" resultMap="SysSocialAuthResult"> select b.user_id, b.tenant_id, b.user_name, b.password, a.auth_id, a.source from sys_social a left join sys_user b on a.user_id = b.user_id where a.auth_id = #{authId} </select> </mapper>