From a43e6e06e086e778e6ac3fdba7b5e8fafa090ed8 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期一, 17 一月 2022 12:03:15 +0800 Subject: [PATCH] update 优化多用户体系处理 更名 LoginUtils 为 LoginHelper 支持 LoginUser 多级缓存 --- ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java | 4 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java | 35 +++- 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 | 10 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java | 11 + pom.xml | 2 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java | 11 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java | 4 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java | 11 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 6 ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java | 116 ++++++++++++++++ ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java | 16 +- ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java | 4 /dev/null | 112 ---------------- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java | 4 ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java | 3 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java | 10 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java | 4 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java | 4 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 9 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java | 4 25 files changed, 222 insertions(+), 178 deletions(-) diff --git a/pom.xml b/pom.xml index f68deb0..a0cc032 100644 --- a/pom.xml +++ b/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> 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 6f9a1aa..40c315c 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 @@ -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)); } 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 155d510..0fa8e1e 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 @@ -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)) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index b633d5f..a4ca4f0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/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(); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java index 690b479..432ab74 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java +++ b/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; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java index cf612c9..ca4303e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java +++ b/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) { 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 4c5e197..26e00df 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 @@ -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(); } } 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 index 7554e3f..215eb57 100644 --- 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 @@ -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; + } + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java index 9c3b531..a5f12f0 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java +++ b/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); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java b/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java index 78dd8b6..ec4d567 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java +++ b/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 { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java b/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java new file mode 100644 index 0000000..ddd5018 --- /dev/null +++ b/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); + } + +} 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 deleted file mode 100644 index a452386..0000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java +++ /dev/null @@ -1,112 +0,0 @@ -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; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -/** - * 鐧诲綍閴存潈宸ュ叿 - * 涓洪�傞厤澶氱鐧诲綍鑰屽皝瑁� - * - * @author Lion Li - */ -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class LoginUtils { - - private static final String LOGIN_USER_KEY = "loginUser"; - - /** - * 鐧诲綍绯荤粺 - * 閽堝涓ゅ鐢ㄦ埛浣撶郴 - * - * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅 - */ - public static void login(LoginUser loginUser, UserType userType) { - StpUtil.login(userType.getUserType() + loginUser.getUserId()); - setLoginUser(loginUser); - } - - /** - * 鐧诲綍绯荤粺 鍩轰簬 璁惧绫诲瀷 - * 閽堝涓�濂楃敤鎴蜂綋绯� - * - * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅 - */ - public static void loginByDevice(LoginUser loginUser, UserType userType, DeviceType deviceType) { - StpUtil.login(userType.getUserType() + loginUser.getUserId(), deviceType.getDevice()); - setLoginUser(loginUser); - } - - /** - * 璁剧疆鐢ㄦ埛鏁版嵁 - */ - public static void setLoginUser(LoginUser loginUser) { - StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); - } - - /** - * 鑾峰彇鐢ㄦ埛 - **/ - public static LoginUser getLoginUser() { - return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY); - } - - /** - * 鑾峰彇鐢ㄦ埛id - */ - public static Long getUserId() { - 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 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 getUserType(loginId); - } - - public static UserType getUserType(Object loginId) { - if (StringUtils.contains(loginId.toString(), UserType.SYS_USER.getUserType())) { - return UserType.SYS_USER; - } else if (StringUtils.contains(loginId.toString(), UserType.APP_USER.getUserType())) { - return UserType.APP_USER; - } else { - throw new UtilException("鐧诲綍鐢ㄦ埛: LoginId寮傚父 => " + loginId); - } - } - -} 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 0c65664..49828ef 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 @@ -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()); 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 05cff03..0459818 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 @@ -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("/**"); } 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 f311a65..8105186 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 @@ -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; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java index 2318f6f..5098917 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java +++ b/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); } // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹� diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java index 9c91f22..0b41e45 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java +++ b/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绔� 鑷鏍规嵁涓氬姟缂栧啓 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 index e5bacd3..8e97d05 100644 --- 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 @@ -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绔潈闄愯繑鍥� 鑷鏍规嵁涓氬姟缂栧啓 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 a091312..93f7260 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 @@ -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(); 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 9bd21d3..3c7bae3 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,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 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 0905ebc..1c7babf 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 @@ -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(); } 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 6736d7c..b5b4b88 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 @@ -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); 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 736b4e6..e6e12ee 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,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); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java index 7062d96..40cae23 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java +++ b/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()); } } 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 856a5f9..dfa606c 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 @@ -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); -- Gitblit v1.9.3