From b7c0e76da2529a7428ab15686b47214b7d621ad8 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期二, 20 六月 2023 16:50:30 +0800
Subject: [PATCH] update 优化 三方登录接口代码逻辑

---
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml                    |   16 --------
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java                  |   10 ++--
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java             |   12 +++---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java            |    8 ----
 ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java                             |   16 ++++---
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java |    6 +-
 6 files changed, 23 insertions(+), 45 deletions(-)

diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index d944a5a..52bf56c 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/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());
     }
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java
index fa9cb9f..10f2936 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java
+++ b/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;
 
     /**
      * 鎺堟潈鐨勭涓夋柟璐﹀彿
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 a8463b8..2a72efe 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
@@ -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;
 
     /**
      * 鎺堟潈鐨勭涓夋柟璐﹀彿
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java
index a4fc3cd..b942061 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java
+++ b/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);
-
 }
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 3fda703..065dea0 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
@@ -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));
     }
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml
index 90f5b1a..baa4b59 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml
+++ b/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>

--
Gitblit v1.9.3