From e763381186c3a1f74ed416ea79767ac73b984745 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期五, 03 十二月 2021 18:46:49 +0800
Subject: [PATCH] update [重磅更新] 登录流程升级 支持缓存

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java |   10 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java                     |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java                |    4 
 ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java          |   38 ++++++
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java                  |    1 
 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java                   |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java                            |   30 ----
 ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java               |    2 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java              |    7 
 /dev/null                                                                                       |   51 --------
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java                        |   13 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java                |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java               |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java                 |   14 +-
 ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java                               |   63 +++++++--
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java             |    3 
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java                        |   10 -
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java                    |   83 +++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java                 |    3 
 20 files changed, 211 insertions(+), 137 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 5cf5170..0a45d73 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginBody;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.domain.vo.RouterVo;
 import com.ruoyi.system.service.ISysMenuService;
@@ -99,7 +100,7 @@
     @ApiOperation("鑾峰彇璺敱淇℃伅")
     @GetMapping("getRouters")
     public AjaxResult<List<RouterVo>> getRouters() {
-        Long userId = SecurityUtils.getUserId();
+        Long userId = LoginUtils.getUserId();
         List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
         return AjaxResult.success(menuService.buildMenus(menus));
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
index 50ba930..ee97048 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -113,10 +113,9 @@
     public AjaxResult<Map<String, Object>> avatar(@RequestPart("avatarfile") MultipartFile file) {
         Map<String,Object> ajax = new HashMap<>();
         if (!file.isEmpty()) {
-            SysUser user = SecurityUtils.getUser();
 			SysOss oss = iSysOssService.upload(file);
 			String avatar = oss.getUrl();
-            if (userService.updateUserAvatar(user.getUserName(), avatar)) {
+            if (userService.updateUserAvatar(getUsername(), avatar)) {
                 ajax.put("imgUrl", avatar);
                 return AjaxResult.success(ajax);
             }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
index 2f1c6ed..8aed41c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -1,8 +1,8 @@
 package com.ruoyi.common.core.controller;
 
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.StringUtils;
 
 /**
@@ -70,28 +70,28 @@
     /**
      * 鑾峰彇鐢ㄦ埛缂撳瓨淇℃伅
      */
-    public SysUser getUser() {
-        return SecurityUtils.getUser();
+    public LoginUser getUser() {
+        return LoginUtils.getLoginUser();
     }
 
     /**
      * 鑾峰彇鐧诲綍鐢ㄦ埛id
      */
     public Long getUserId() {
-        return SecurityUtils.getUserId();
+        return LoginUtils.getUserId();
     }
 
     /**
      * 鑾峰彇鐧诲綍閮ㄩ棬id
      */
     public Long getDeptId() {
-        return SecurityUtils.getDeptId();
+        return LoginUtils.getDeptId();
     }
 
     /**
      * 鑾峰彇鐧诲綍鐢ㄦ埛鍚�
      */
     public String getUsername() {
-        return SecurityUtils.getUsername();
+        return LoginUtils.getUsername();
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
new file mode 100644
index 0000000..7554e3f
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -0,0 +1,83 @@
+package com.ruoyi.common.core.domain.model;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 鐧诲綍鐢ㄦ埛韬唤鏉冮檺
+ *
+ * @author Lion Li
+ */
+
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class LoginUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    private Long userId;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    private Long deptId;
+
+    /**
+     * 鐢ㄦ埛鍞竴鏍囪瘑
+     */
+    private String token;
+
+    /**
+     * 鐧诲綍鏃堕棿
+     */
+    private Long loginTime;
+
+    /**
+     * 杩囨湡鏃堕棿
+     */
+    private Long expireTime;
+
+    /**
+     * 鐧诲綍IP鍦板潃
+     */
+    private String ipaddr;
+
+    /**
+     * 鐧诲綍鍦扮偣
+     */
+    private String loginLocation;
+
+    /**
+     * 娴忚鍣ㄧ被鍨�
+     */
+    private String browser;
+
+    /**
+     * 鎿嶄綔绯荤粺
+     */
+    private String os;
+
+    /**
+     * 鑿滃崟鏉冮檺
+     */
+    private Set<String> menuPermission;
+
+    /**
+     * 瑙掕壊鏉冮檺
+     */
+    private Set<String> rolePermission;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String username;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
index 94dbcdd..99a8880 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
@@ -10,7 +10,7 @@
 public class UserException extends BaseException {
     private static final long serialVersionUID = 1L;
 
-    public UserException(String code, Object[] args) {
+    public UserException(String code, Object... args) {
         super("user", code, args, null);
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java
index 9cd759f..2544fe8 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java
@@ -1,6 +1,8 @@
 package com.ruoyi.common.utils;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.DeviceType;
 import com.ruoyi.common.enums.UserType;
 import com.ruoyi.common.exception.UtilException;
@@ -13,39 +15,68 @@
  */
 public class LoginUtils {
 
+    private final static String LOGIN_USER_KEY = "loginUser";
+
     /**
      * 鐧诲綍绯荤粺
      * 閽堝涓ゅ鐢ㄦ埛浣撶郴
-     * @param userId 鐢ㄦ埛id
+     * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅
      */
-    public static void login(Long userId, UserType userType) {
-        StpUtil.login(userType.getUserType() + userId);
+    public static void login(LoginUser loginUser, UserType userType) {
+        StpUtil.login(userType.getUserType() + loginUser.getUserId());
+        StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
     }
 
     /**
      * 鐧诲綍绯荤粺 鍩轰簬 璁惧绫诲瀷
      * 閽堝涓�濂楃敤鎴蜂綋绯�
-     * @param userId 鐢ㄦ埛id
+     * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅
      */
-    public static void loginByDevice(Long userId, UserType userType, DeviceType deviceType) {
-        StpUtil.login(userType.getUserType() + userId, deviceType.getDevice());
+    public static void loginByDevice(LoginUser loginUser, UserType userType, DeviceType deviceType) {
+        StpUtil.login(userType.getUserType() + loginUser.getUserId(), deviceType.getDevice());
+        StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛
+     **/
+    public static LoginUser getLoginUser() {
+        return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);
     }
 
     /**
      * 鑾峰彇鐢ㄦ埛id
      */
     public static Long getUserId() {
-        String loginId = StpUtil.getLoginIdAsString();
-        String userId;
-        String replace = "";
-        if (StringUtils.contains(loginId, UserType.SYS_USER.getUserType())) {
-            userId = StringUtils.replace(loginId, UserType.SYS_USER.getUserType(), replace);
-        } else if (StringUtils.contains(loginId, UserType.APP_USER.getUserType())){
-            userId = StringUtils.replace(loginId, UserType.APP_USER.getUserType(), replace);
-        } else {
-            throw new UtilException("鐧诲綍鐢ㄦ埛: LoginId寮傚父 => " + loginId);
+        LoginUser loginUser = getLoginUser();
+        if (ObjectUtil.isNull(loginUser)) {
+            String loginId = StpUtil.getLoginIdAsString();
+            String userId;
+            String replace = "";
+            if (StringUtils.contains(loginId, UserType.SYS_USER.getUserType())) {
+                userId = StringUtils.replace(loginId, UserType.SYS_USER.getUserType(), replace);
+            } else if (StringUtils.contains(loginId, UserType.APP_USER.getUserType())){
+                userId = StringUtils.replace(loginId, UserType.APP_USER.getUserType(), replace);
+            } else {
+                throw new UtilException("鐧诲綍鐢ㄦ埛: LoginId寮傚父 => " + loginId);
+            }
+            return Long.parseLong(userId);
         }
-        return Long.parseLong(userId);
+        return loginUser.getUserId();
+    }
+
+    /**
+     * 鑾峰彇閮ㄩ棬ID
+     **/
+    public static Long getDeptId() {
+        return getLoginUser().getDeptId();
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛璐︽埛
+     **/
+    public static String getUsername() {
+        return getLoginUser().getUsername();
     }
 
     /**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
index ecf888d..4112748 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
@@ -13,41 +13,13 @@
  * @author Long Li
  */
 public class SecurityUtils {
-    /**
-     * 鐢ㄦ埛ID
-     **/
-    public static Long getUserId() {
-        return LoginUtils.getUserId();
-    }
-
-    /**
-     * 鑾峰彇閮ㄩ棬ID
-     **/
-    public static Long getDeptId() {
-        try {
-            return getUser().getDeptId();
-        } catch (Exception e) {
-            throw new ServiceException("鑾峰彇閮ㄩ棬ID寮傚父", HttpStatus.HTTP_UNAUTHORIZED);
-        }
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛璐︽埛
-     **/
-    public static String getUsername() {
-        try {
-            return getUser().getUserName();
-        } catch (Exception e) {
-            throw new ServiceException("鑾峰彇鐢ㄦ埛璐︽埛寮傚父", HttpStatus.HTTP_UNAUTHORIZED);
-        }
-    }
 
     /**
      * 鑾峰彇鐢ㄦ埛
      **/
     public static SysUser getUser() {
         try {
-            return SpringUtils.getBean(UserService.class).selectUserById(getUserId());
+            return SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
         } catch (Exception e) {
             throw new ServiceException("鑾峰彇鐢ㄦ埛淇℃伅寮傚父", HttpStatus.HTTP_UNAUTHORIZED);
         }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
index dcf8058..393b2e6 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -7,7 +7,6 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
index 78a4b62..e7aa909 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -2,12 +2,11 @@
 
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.dto.OperLogDTO;
-import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.service.OperLogService;
 import com.ruoyi.common.enums.BusinessStatus;
 import com.ruoyi.common.enums.HttpMethod;
 import com.ruoyi.common.utils.JsonUtils;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -60,9 +59,6 @@
     protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) {
         try {
 
-            // 鑾峰彇褰撳墠鐨勭敤鎴�
-            SysUser sysUser = SecurityUtils.getUser();
-
             // *========鏁版嵁搴撴棩蹇�=========*//
             OperLogDTO operLog = new OperLogDTO();
             operLog.setStatus(BusinessStatus.SUCCESS.ordinal());
@@ -70,9 +66,7 @@
             String ip = ServletUtils.getClientIP();
             operLog.setOperIp(ip);
             operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
-            if (sysUser != null) {
-                operLog.setOperName(sysUser.getUserName());
-            }
+            operLog.setOperName(LoginUtils.getUsername());
 
             if (e != null) {
                 operLog.setStatus(BusinessStatus.FAIL.ordinal());
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java
index 1d2f295..2604245 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java
@@ -6,7 +6,7 @@
 import cn.dev33.satoken.router.SaRouter;
 import cn.dev33.satoken.stp.StpLogic;
 import cn.dev33.satoken.stp.StpUtil;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.config.properties.SecurityProperties;
 import lombok.extern.slf4j.Slf4j;
@@ -43,7 +43,7 @@
                 .notMatch(securityProperties.getExcludes())
                 .check(() -> {
                     if (log.isDebugEnabled()) {
-                        Long userId = SecurityUtils.getUserId();
+                        Long userId = LoginUtils.getUserId();
                         if (StringUtils.isNotNull(userId)) {
                             log.debug("鍓╀綑鏈夋晥鏃堕棿: {}", StpUtil.getTokenTimeout());
                             log.debug("涓存椂鏈夋晥鏃堕棿: {}", StpUtil.getTokenActivityTimeout());
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
index 9dade4e..dfda513 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
@@ -4,9 +4,9 @@
 import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.ruoyi.common.core.domain.BaseEntity;
-import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.reflection.MetaObject;
@@ -76,14 +76,14 @@
 	 * 鑾峰彇鐧诲綍鐢ㄦ埛鍚�
 	 */
 	private String getLoginUsername() {
-		SysUser user;
+		LoginUser user;
 		try {
-            user = SecurityUtils.getUser();
+            user = LoginUtils.getLoginUser();
 		} catch (Exception e) {
 			log.warn("鑷姩娉ㄥ叆璀﹀憡 => 鐢ㄦ埛鏈櫥褰�");
 			return null;
 		}
-		return user.getUserName();
+		return user.getUsername();
 	}
 
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/dao/PlusSaTokenDao.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
similarity index 98%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/dao/PlusSaTokenDao.java
rename to ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
index 8da7a1b..556133c 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/dao/PlusSaTokenDao.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
@@ -1,4 +1,4 @@
-package com.ruoyi.framework.dao;
+package com.ruoyi.framework.satoken.dao;
 
 import cn.dev33.satoken.dao.SaTokenDao;
 import cn.dev33.satoken.util.SaFoxUtil;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java
new file mode 100644
index 0000000..e5bacd3
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java
@@ -0,0 +1,38 @@
+package com.ruoyi.framework.satoken.service;
+
+import cn.dev33.satoken.stp.StpInterface;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.enums.UserType;
+import com.ruoyi.common.utils.LoginUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class SaInterfaceImpl implements StpInterface {
+
+    @Override
+    public List<String> getPermissionList(Object loginId, String loginType) {
+        UserType userType = LoginUtils.getUserType(loginId);
+        if (userType == UserType.SYS_USER) {
+            LoginUser loginUser = LoginUtils.getLoginUser();
+            return new ArrayList<>(loginUser.getMenuPermission());
+        } else if (userType == UserType.APP_USER) {
+            // app绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public List<String> getRoleList(Object loginId, String loginType) {
+        UserType userType = LoginUtils.getUserType(loginId);
+        if (userType == UserType.SYS_USER) {
+            LoginUser loginUser = LoginUtils.getLoginUser();
+            return new ArrayList<>(loginUser.getRolePermission());
+        } else if (userType == UserType.APP_USER) {
+            // app绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓
+        }
+        return new ArrayList<>();
+    }
+}
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index b53393f..35b1c95 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -9,10 +9,7 @@
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.JsonUtils;
-import com.ruoyi.common.utils.PageUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.*;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.generator.domain.GenTable;
 import com.ruoyi.generator.domain.GenTableColumn;
@@ -159,7 +156,7 @@
     @Override
     @Transactional
     public void importGenTable(List<GenTable> tableList) {
-        String operName = SecurityUtils.getUsername();
+        String operName = LoginUtils.getUsername();
         try {
             for (GenTable table : tableList) {
                 String tableName = table.getTableName();
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
index d0fd7d0..c655110 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.excel.ExcelListener;
 import com.ruoyi.common.excel.ExcelResult;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -43,7 +44,7 @@
         this.password = SpringUtils.getBean(ISysConfigService.class)
             .selectConfigByKey("sys.user.initPassword");
         this.isUpdateSupport = isUpdateSupport;
-        this.operName = SecurityUtils.getUsername();
+        this.operName = LoginUtils.getUsername();
     }
 
     @Override
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
index 08098dd..ebc208d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -3,6 +3,7 @@
 import cn.dev33.satoken.stp.StpUtil;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.service.LogininforService;
 import com.ruoyi.common.enums.DeviceType;
 import com.ruoyi.common.enums.UserStatus;
@@ -14,7 +15,6 @@
 import com.ruoyi.common.utils.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
@@ -36,6 +36,9 @@
 
     @Autowired
     private LogininforService asyncService;
+
+    @Autowired
+    private SysPermissionService permissionService;
 
     /**
      * 鐧诲綍楠岃瘉
@@ -68,11 +71,17 @@
             asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"), request);
             throw new UserPasswordNotMatchException();
         }
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUserId(user.getUserId());
+        loginUser.setDeptId(user.getDeptId());
+        loginUser.setUsername(user.getUserName());
+        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
+        loginUser.setRolePermission(permissionService.getRolePermission(user));
 
 		asyncService.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"), request);
         recordLoginInfo(user.getUserId(), username);
         // 鐢熸垚token
-        LoginUtils.loginByDevice(user.getUserId(), UserType.SYS_USER, DeviceType.PC);
+        LoginUtils.loginByDevice(loginUser, UserType.SYS_USER, DeviceType.PC);
         return StpUtil.getTokenValue();
     }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
deleted file mode 100644
index 5dc66f2..0000000
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import cn.dev33.satoken.stp.StpInterface;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.enums.UserType;
-import com.ruoyi.common.utils.LoginUtils;
-import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.system.service.SysPermissionService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-@Component
-public class SaInterfaceImpl implements StpInterface {
-
-    @Autowired
-    private SysPermissionService sysPermissionService;
-    @Autowired
-    private ISysUserService iSysUserService;
-
-    @Override
-    public List<String> getPermissionList(Object loginId, String loginType) {
-        UserType userType = LoginUtils.getUserType(loginId);
-        if (userType == UserType.SYS_USER) {
-            Long userId = LoginUtils.getUserId();
-            SysUser user = iSysUserService.getById(userId);
-            Set<String> menuPermission = sysPermissionService.getMenuPermission(user);
-            return new ArrayList<>(menuPermission);
-        } else if (userType == UserType.APP_USER) {
-            // app绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓
-        }
-        return new ArrayList<>();
-    }
-
-    @Override
-    public List<String> getRoleList(Object loginId, String loginType) {
-        UserType userType = LoginUtils.getUserType(loginId);
-        if (userType == UserType.SYS_USER) {
-            Long userId = LoginUtils.getUserId();
-            SysUser user = iSysUserService.getById(userId);
-            Set<String> rolePermission = sysPermissionService.getRolePermission(user);
-            return new ArrayList<>(rolePermission);
-        } else if (userType == UserType.APP_USER) {
-            // app绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓
-        }
-        return new ArrayList<>();
-    }
-}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 995bd2d..eccafb3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -11,7 +11,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.TreeBuildUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -154,7 +154,7 @@
      */
     @Override
     public void checkDeptDataScope(Long deptId) {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
             SysDept dept = new SysDept();
             dept.setDeptId(deptId);
             List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index 7bad297..7d19191 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -8,8 +8,8 @@
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.PageUtils;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.SysRoleDept;
@@ -187,7 +187,7 @@
      */
     @Override
     public void checkRoleDataScope(Long roleId) {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
             SysRole role = new SysRole();
             role.setRoleId(roleId);
             List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 86f4642..7837b52 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.service.UserService;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.LoginUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -225,7 +226,7 @@
      */
     @Override
     public void checkUserDataScope(Long userId) {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
             SysUser user = new SysUser();
             user.setUserId(userId);
             List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);

--
Gitblit v1.9.3