疯狂的狮子Li
2023-06-20 b7c0e76da2529a7428ab15686b47214b7d621ad8
update 优化 三方登录接口代码逻辑
已修改6个文件
68 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>