From 29462b83ff802c3855a8e338a3ea5d220fc0e7bc Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 27 一月 2022 09:50:18 +0800
Subject: [PATCH] update 优化 LoginUser 解耦
---
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java | 13 +++++-
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java | 5 --
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 15 +++----
ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java | 2
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java | 4 +-
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java | 38 +++++++++++++++++++
6 files changed, 59 insertions(+), 18 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java
new file mode 100644
index 0000000..e25243f
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.common.core.domain.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 瑙掕壊
+ *
+ * @author Lion Li
+ */
+
+@Data
+@NoArgsConstructor
+public class RoleDTO implements Serializable {
+
+ /**
+ * 瑙掕壊ID
+ */
+ private Long roleId;
+
+ /**
+ * 瑙掕壊鍚嶇О
+ */
+ private String roleName;
+
+ /**
+ * 瑙掕壊鏉冮檺
+ */
+ private String roleKey;
+
+ /**
+ * 鏁版嵁鑼冨洿锛�1锛氭墍鏈夋暟鎹潈闄愶紱2锛氳嚜瀹氫箟鏁版嵁鏉冮檺锛�3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺锛�4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶紱5锛氫粎鏈汉鏁版嵁鏉冮檺锛�
+ */
+ private String dataScope;
+
+}
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 81e374a..9f7186c 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
@@ -1,7 +1,6 @@
package com.ruoyi.common.core.domain.model;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.dto.RoleDTO;
import com.ruoyi.common.helper.LoginHelper;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -31,6 +30,11 @@
* 閮ㄩ棬ID
*/
private Long deptId;
+
+ /**
+ * 閮ㄩ棬鍚�
+ */
+ private String deptName;
/**
* 鐢ㄦ埛鍞竴鏍囪瘑
@@ -88,14 +92,9 @@
private String username;
/**
- * 閮ㄩ棬瀵硅薄
- */
- private SysDept dept;
-
- /**
* 瑙掕壊瀵硅薄
*/
- private List<SysRole> roles;
+ private List<RoleDTO> roles;
/**
* 鏁版嵁鏉冮檺 褰撳墠瑙掕壊ID
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
index 58bc761..6432465 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
@@ -9,7 +9,7 @@
* <p>
* 璇硶鏀寔 spel 妯℃澘琛ㄨ揪寮�
* <p>
- * 鍐呯疆鏁版嵁 user 褰撳墠鐢ㄦ埛 鍐呭鍙傝�� SysUser
+ * 鍐呯疆鏁版嵁 user 褰撳墠鐢ㄦ埛 鍐呭鍙傝�� LoginUser
* 濡傞渶鎵╁睍鏁版嵁 鍙娇鐢� {@link com.ruoyi.common.helper.DataPermissionHelper} 鎿嶄綔
* 鍐呯疆鏈嶅姟 sdss 绯荤粺鏁版嵁鏉冮檺鏈嶅姟 鍐呭鍙傝�� SysDataScopeService
* 濡傞渶鎵╁睍鏇村鑷畾涔夋湇鍔� 鍙互鍙傝�� sdss 鑷缂栧啓
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 24a6847..5e76242 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
@@ -7,7 +7,7 @@
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.annotation.DataColumn;
import com.ruoyi.common.annotation.DataPermission;
-import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.dto.RoleDTO;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.DataScopeType;
import com.ruoyi.common.exception.ServiceException;
@@ -112,7 +112,7 @@
StandardEvaluationContext context = new StandardEvaluationContext();
context.setBeanResolver(beanResolver);
DataPermissionHelper.getContext().forEach(context::setVariable);
- for (SysRole role : user.getRoles()) {
+ for (RoleDTO role : user.getRoles()) {
user.setRoleId(role.getRoleId());
// 鑾峰彇瑙掕壊鏉冮檺娉涘瀷
DataScopeType type = DataScopeType.findCode(role.getDataScope());
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 bf5625f..2cef33c 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
@@ -4,7 +4,6 @@
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import com.ruoyi.common.constant.Constants;
@@ -52,10 +51,8 @@
.loginTime(System.currentTimeMillis())
.tokenId(tokenValue)
.userName(user.getUsername())
+ .deptName(user.getDeptName())
.build();
- if (ObjectUtil.isNotNull(user.getDept())) {
- dto.setDeptName(user.getDept().getDeptName());
- }
RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, dto, tokenConfig.getTimeout(), TimeUnit.SECONDS);
log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
} else if (userType == UserType.APP_USER) {
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 a9a6a10..60e3ca7 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
@@ -1,8 +1,10 @@
package com.ruoyi.system.service;
import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.dto.RoleDTO;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.service.LogininforService;
@@ -12,13 +14,17 @@
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.DateUtils;
+import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.redis.RedisUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -137,8 +143,9 @@
loginUser.setUserType(user.getUserType());
loginUser.setMenuPermission(permissionService.getMenuPermission(user));
loginUser.setRolePermission(permissionService.getRolePermission(user));
- loginUser.setRoles(user.getRoles());
- loginUser.setDept(user.getDept());
+ loginUser.setDeptName(user.getDept().getDeptName());
+ List<RoleDTO> roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class);
+ loginUser.setRoles(roles);
return loginUser;
}
--
Gitblit v1.9.3