疯狂的狮子li
2022-01-17 a43e6e06e086e778e6ac3fdba7b5e8fafa090ed8
update 优化多用户体系处理 更名 LoginUtils 为 LoginHelper 支持 LoginUser 多级缓存
已修改23个文件
已添加1个文件
已删除1个文件
400 ■■■■■ 文件已修改
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -23,7 +23,7 @@
        <knife4j.version>3.0.3</knife4j.version>
        <swagger-annotations.version>1.5.22</swagger-annotations.version>
        <poi.version>4.1.2</poi.version>
        <easyexcel.version>2.2.11</easyexcel.version>
        <easyexcel.version>3.0.5</easyexcel.version>
        <cglib.version>3.3.0</cglib.version>
        <velocity.version>2.3</velocity.version>
        <satoken.version>1.28.0</satoken.version>
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -8,7 +8,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.service.UserService;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.service.ISysMenuService;
@@ -78,7 +78,7 @@
    @ApiOperation("获取用户信息")
    @GetMapping("getInfo")
    public AjaxResult<Map<String, Object>> getInfo() {
        SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
        SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId());
        // è§’色集合
        Set<String> roles = permissionService.getRolePermission(user);
        // æƒé™é›†åˆ
@@ -98,7 +98,7 @@
    @ApiOperation("获取路由信息")
    @GetMapping("getRouters")
    public AjaxResult<List<RouterVo>> getRouters() {
        Long userId = LoginUtils.getUserId();
        Long userId = LoginHelper.getUserId();
        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
        return AjaxResult.success(menuService.buildMenus(menus));
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -7,7 +7,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.service.UserService;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
@@ -91,7 +91,7 @@
    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
    @PutMapping("/updatePwd")
    public AjaxResult<Void> updatePwd(String oldPassword, String newPassword) {
        SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
        SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId());
        String userName = user.getUserName();
        String password = user.getPassword();
        if (!SecurityUtils.matchesPassword(oldPassword, password)) {
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -11,7 +11,7 @@
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysUserRole;
@@ -107,7 +107,7 @@
            SysUser sysUser = userService.selectUserById(loginUser.getUserId());
            if (StringUtils.isNotNull(sysUser) && !sysUser.isAdmin()) {
                loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser));
                LoginUtils.setLoginUser(loginUser);
                LoginHelper.setLoginUser(loginUser);
            }
            return AjaxResult.success();
        }
ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java
@@ -4,8 +4,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import lombok.extern.slf4j.Slf4j;
@@ -31,19 +32,19 @@
    }
    @Override
    public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
    public Long convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        return Convert.toLong(cellData.getData());
    }
    @Override
    public CellData<Object> convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
    public WriteCellData<Object> convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        if (ObjectUtil.isNotNull(object)) {
            String str = Convert.toStr(object);
            if (str.length() > 15) {
                return new CellData<>(str);
                return new WriteCellData<>(str);
            }
        }
        CellData<Object> cellData = new CellData<>(new BigDecimal(object));
        WriteCellData<Object> cellData = new WriteCellData<>(new BigDecimal(object));
        cellData.setType(CellDataTypeEnum.NUMBER);
        return cellData;
    }
ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java
@@ -4,8 +4,9 @@
import cn.hutool.core.convert.Convert;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.core.service.DictService;
@@ -35,7 +36,7 @@
    }
    @Override
    public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
    public Object convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        ExcelDictFormat anno = getAnnotation(contentProperty.getField());
        String type = anno.dictType();
        String label = cellData.getStringValue();
@@ -49,9 +50,9 @@
    }
    @Override
    public CellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
    public WriteCellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        if (StringUtils.isNull(object)) {
            return new CellData<>("");
            return new WriteCellData<>("");
        }
        ExcelDictFormat anno = getAnnotation(contentProperty.getField());
        String type = anno.dictType();
@@ -62,7 +63,7 @@
        } else {
            label = SpringUtils.getBean(DictService.class).getDictLabel(type, value, anno.separator());
        }
        return new CellData<>(label);
        return new WriteCellData<>(label);
    }
    private ExcelDictFormat getAnnotation(Field field) {
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -2,7 +2,7 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
/**
@@ -71,27 +71,27 @@
     * èŽ·å–ç”¨æˆ·ç¼“å­˜ä¿¡æ¯
     */
    public LoginUser getLoginUser() {
        return LoginUtils.getLoginUser();
        return LoginHelper.getLoginUser();
    }
    /**
     * èŽ·å–ç™»å½•ç”¨æˆ·id
     */
    public Long getUserId() {
        return LoginUtils.getUserId();
        return LoginHelper.getUserId();
    }
    /**
     * èŽ·å–ç™»å½•éƒ¨é—¨id
     */
    public Long getDeptId() {
        return LoginUtils.getDeptId();
        return LoginHelper.getDeptId();
    }
    /**
     * èŽ·å–ç™»å½•ç”¨æˆ·å
     */
    public String getUsername() {
        return LoginUtils.getUsername();
        return LoginHelper.getUsername();
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -36,6 +36,11 @@
    private String token;
    /**
     * ç”¨æˆ·ç±»åž‹
     */
    private String userType;
    /**
     * ç™»å½•æ—¶é—´
     */
    private Long loginTime;
@@ -80,4 +85,8 @@
     */
    private String username;
    public String getLoginId() {
        return userType + userId;
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java
@@ -1,5 +1,7 @@
package com.ruoyi.common.enums;
import com.ruoyi.common.exception.UtilException;
import com.ruoyi.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -24,4 +26,13 @@
    APP_USER("app_user:");
    private final String userType;
    public static UserType getUserType(String str) {
        for (UserType value : values()) {
            if (StringUtils.contains(str, value.getUserType())) {
                return value;
            }
        }
        throw new RuntimeException("'UserType' not found By " + str);
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java
@@ -2,6 +2,8 @@
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.utils.ServletUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
@@ -13,6 +15,7 @@
 * @author Lion Li
 * @version 3.5.0
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@SuppressWarnings("unchecked cast")
public class DataPermissionHelper {
ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.ruoyi.common.helper;
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;
import com.ruoyi.common.utils.StringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
 * ç™»å½•鉴权助手
 * ä¸ºé€‚配多端登录而封装
 *
 * @author Lion Li
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class LoginHelper {
    private static final String LOGIN_USER_KEY = "loginUser";
    private static final ThreadLocal<LoginUser> LOGIN_CACHE = new ThreadLocal<>();
    /**
     * ç™»å½•系统
     * é’ˆå¯¹ä¸¤å¥—用户体系
     *
     * @param loginUser ç™»å½•用户信息
     */
    public static void login(LoginUser loginUser) {
        StpUtil.login(loginUser.getLoginId());
        setLoginUser(loginUser);
    }
    /**
     * ç™»å½•系统 åŸºäºŽ è®¾å¤‡ç±»åž‹
     * é’ˆå¯¹ä¸€å¥—用户体系
     *
     * @param loginUser ç™»å½•用户信息
     */
    public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) {
        StpUtil.login(loginUser.getLoginId(), deviceType.getDevice());
        setLoginUser(loginUser);
    }
    /**
     * è®¾ç½®ç”¨æˆ·æ•°æ®(多级缓存)
     */
    public static void setLoginUser(LoginUser loginUser) {
        StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
        LOGIN_CACHE.set(loginUser);
    }
    /**
     * èŽ·å–ç”¨æˆ·(多级缓存)
     */
    public static LoginUser getLoginUser() {
        LoginUser loginUser = LOGIN_CACHE.get();
        if (loginUser != null) {
            return loginUser;
        }
        return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);
    }
    /**
     * æ¸…除一级缓存 é˜²æ­¢å†…存问题
     */
    public static void clearCache() {
        LOGIN_CACHE.remove();
    }
    /**
     * èŽ·å–ç”¨æˆ·id
     */
    public static Long getUserId() {
        LoginUser loginUser = getLoginUser();
        if (ObjectUtil.isNull(loginUser)) {
            String loginId = StpUtil.getLoginIdAsString();
            String userId = null;
            for (UserType value : UserType.values()) {
                if (StringUtils.contains(loginId, value.getUserType())) {
                    userId = StringUtils.replace(loginId, value.getUserType(), StringUtils.EMPTY);
                }
            }
            if (StringUtils.isBlank(userId)) {
                throw new UtilException("登录用户: LoginId异常 => " + loginId);
            }
            return Long.parseLong(userId);
        }
        return loginUser.getUserId();
    }
    /**
     * èŽ·å–éƒ¨é—¨ID
     */
    public static Long getDeptId() {
        return getLoginUser().getDeptId();
    }
    /**
     * èŽ·å–ç”¨æˆ·è´¦æˆ·
     */
    public static String getUsername() {
        return getLoginUser().getUsername();
    }
    /**
     * èŽ·å–ç”¨æˆ·ç±»åž‹
     */
    public static UserType getUserType() {
        String loginId = StpUtil.getLoginIdAsString();
        return UserType.getUserType(loginId);
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java
ÎļþÒÑɾ³ý
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -5,8 +5,8 @@
import com.ruoyi.common.core.service.OperLogService;
import com.ruoyi.common.enums.BusinessStatus;
import com.ruoyi.common.enums.HttpMethod;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.JsonUtils;
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;
@@ -66,7 +66,7 @@
            String ip = ServletUtils.getClientIP();
            operLog.setOperIp(ip);
            operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
            operLog.setOperName(LoginUtils.getUsername());
            operLog.setOperName(LoginHelper.getUsername());
            if (e != null) {
                operLog.setStatus(BusinessStatus.FAIL.ordinal());
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java
@@ -5,25 +5,30 @@
import cn.dev33.satoken.jwt.StpLogicJwtForStyle;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpLogic;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.SecurityProperties;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * sa-token é…ç½®
 *
 * @author Lion Li
 */
@RequiredArgsConstructor
@Slf4j
@Configuration
public class SaTokenConfig implements WebMvcConfigurer {
    @Autowired
    private SecurityProperties securityProperties;
    private final SecurityProperties securityProperties;
    /**
     * æ³¨å†Œsa-token的拦截器
@@ -39,16 +44,22 @@
                // æŽ’除下不需要拦截的
                .notMatch(securityProperties.getExcludes())
                .check(() -> {
                    // åšä¸€äº›è®¿é—®æ£€æŸ¥
//                    if (log.isDebugEnabled()) {
//                        Long userId = LoginUtils.getUserId();
//                        if (StringUtils.isNotNull(userId)) {
//                             log.debug("剩余有效时间: {}", StpUtil.getTokenTimeout());
//                             log.debug("临时有效时间: {}", StpUtil.getTokenActivityTimeout());
//                        }
//                    }
                    Long userId = LoginHelper.getUserId();
                    if (StringUtils.isNotNull(userId)) {
                        // æœ‰æ•ˆçŽ‡å½±å“ ç”¨äºŽä¸´æ—¶æµ‹è¯•
                        // if (log.isDebugEnabled()) {
                        //     log.debug("剩余有效时间: {}", StpUtil.getTokenTimeout());
                        //     log.debug("临时有效时间: {}", StpUtil.getTokenActivityTimeout());
                        // }
                    }
                });
        })).addPathPatterns("/**");
        }) {
            @SuppressWarnings("all")
            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
                LoginHelper.clearCache();
            }
        }).addPathPatterns("/**");
        registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**");
    }
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
@@ -6,7 +6,7 @@
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
@@ -78,7 +78,7 @@
    private String getLoginUsername() {
        LoginUser loginUser;
        try {
            loginUser = LoginUtils.getLoginUser();
            loginUser = LoginHelper.getLoginUser();
        } catch (Exception e) {
            log.warn("自动注入警告 => ç”¨æˆ·æœªç™»å½•");
            return null;
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
@@ -13,7 +13,7 @@
import com.ruoyi.common.enums.DataScopeType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.DataPermissionHelper;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.extern.slf4j.Slf4j;
@@ -76,7 +76,7 @@
        }
        SysUser currentUser = DataPermissionHelper.getVariable("user");
        if (ObjectUtil.isNull(currentUser)) {
            currentUser = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
            currentUser = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId());
            DataPermissionHelper.setVariable("user", currentUser);
        }
        // å¦‚果是超级管理员,则不过滤数据
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
@@ -11,38 +11,40 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.service.UserService;
import com.ruoyi.common.enums.UserType;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.AddressUtils;
import com.ruoyi.common.utils.redis.RedisUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
 * ç”¨æˆ·è¡Œä¸º ä¾¦å¬å™¨çš„实现
 *
 * @author Lion Li
 */
@RequiredArgsConstructor
@Component
@Slf4j
public class UserActionListener implements SaTokenListener {
    @Autowired
    private SaTokenConfig saTokenConfig;
    private final SaTokenConfig tokenConfig;
    /**
     * æ¯æ¬¡ç™»å½•时触发
     */
    @Override
    public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) {
        UserType userType = LoginUtils.getUserType(loginId);
        UserType userType = UserType.getUserType(loginId.toString());
        if (userType == UserType.SYS_USER) {
            UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
            String ip = ServletUtils.getClientIP();
            SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
            SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId());
            String tokenValue = StpUtil.getTokenValue();
            UserOnlineDTO userOnlineDTO = new UserOnlineDTO()
                .setIpaddr(ip)
@@ -55,7 +57,7 @@
            if (StringUtils.isNotNull(user.getDept())) {
                userOnlineDTO.setDeptName(user.getDept().getDeptName());
            }
            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO, saTokenConfig.getTimeout(), TimeUnit.SECONDS);
            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, userOnlineDTO, tokenConfig.getTimeout(), TimeUnit.SECONDS);
            log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
        } else if (userType == UserType.APP_USER) {
            // app端 è‡ªè¡Œæ ¹æ®ä¸šåŠ¡ç¼–å†™
ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java
@@ -3,7 +3,7 @@
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 com.ruoyi.common.helper.LoginHelper;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
@@ -14,9 +14,9 @@
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        UserType userType = LoginUtils.getUserType(loginId);
        LoginUser loginUser = LoginHelper.getLoginUser();
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            LoginUser loginUser = LoginUtils.getLoginUser();
            return new ArrayList<>(loginUser.getMenuPermission());
        } else if (userType == UserType.APP_USER) {
            // app端权限返回 è‡ªè¡Œæ ¹æ®ä¸šåŠ¡ç¼–å†™
@@ -26,9 +26,9 @@
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        UserType userType = LoginUtils.getUserType(loginId);
        LoginUser loginUser = LoginHelper.getLoginUser();
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            LoginUser loginUser = LoginUtils.getLoginUser();
            return new ArrayList<>(loginUser.getRolePermission());
        } else if (userType == UserType.APP_USER) {
            // app端权限返回 è‡ªè¡Œæ ¹æ®ä¸šåŠ¡ç¼–å†™
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -10,8 +10,8 @@
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.generator.domain.GenTable;
@@ -161,7 +161,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void importGenTable(List<GenTable> tableList) {
        String operName = LoginUtils.getUsername();
        String operName = LoginHelper.getUsername();
        try {
            for (GenTable table : tableList) {
                String tableName = table.getTableName();
ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
@@ -7,7 +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.helper.LoginHelper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ValidatorUtils;
@@ -45,7 +45,7 @@
        this.userService = SpringUtils.getBean(ISysUserService.class);
        this.password = SecurityUtils.encryptPassword(initPassword);
        this.isUpdateSupport = isUpdateSupport;
        this.operName = LoginUtils.getUsername();
        this.operName = LoginHelper.getUsername();
    }
    @Override
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -12,6 +12,7 @@
import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.redis.RedisUtils;
import lombok.RequiredArgsConstructor;
@@ -96,11 +97,12 @@
        loginUser.setUserId(user.getUserId());
        loginUser.setDeptId(user.getDeptId());
        loginUser.setUsername(user.getUserName());
        loginUser.setUserType(UserType.SYS_USER.getUserType());
        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
        loginUser.setRolePermission(permissionService.getRolePermission(user));
        // ç”Ÿæˆtoken
        LoginUtils.loginByDevice(loginUser, UserType.SYS_USER, DeviceType.PC);
        LoginHelper.loginByDevice(loginUser, DeviceType.PC);
        return StpUtil.getTokenValue();
    }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -10,7 +10,7 @@
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.TreeBuildUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
@@ -153,7 +153,7 @@
     */
    @Override
    public void checkDeptDataScope(Long deptId) {
        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
        if (!SysUser.isAdmin(LoginHelper.getUserId())) {
            SysDept dept = new SysDept();
            dept.setDeptId(deptId);
            List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -8,7 +8,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysRoleDept;
@@ -182,7 +182,7 @@
     */
    @Override
    public void checkRoleDataScope(Long roleId) {
        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
        if (!SysUser.isAdmin(LoginHelper.getUserId())) {
            SysRole role = new SysRole();
            role.setRoleId(roleId);
            List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
@@ -1,7 +1,7 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.common.core.service.SensitiveService;
import com.ruoyi.common.utils.LoginUtils;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.stereotype.Service;
@@ -21,7 +21,7 @@
     */
    @Override
    public boolean isSensitive() {
        return SecurityUtils.isAdmin(LoginUtils.getUserId());
        return SecurityUtils.isAdmin(LoginHelper.getUserId());
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -11,7 +11,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.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost;
@@ -208,7 +208,7 @@
     */
    @Override
    public void checkUserDataScope(Long userId) {
        if (!SysUser.isAdmin(LoginUtils.getUserId())) {
        if (!SysUser.isAdmin(LoginHelper.getUserId())) {
            SysUser user = new SysUser();
            user.setUserId(userId);
            List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);