From 019526fbe921a574f76e629ad7b3079f933a630a Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期日, 21 十一月 2021 01:39:43 +0800
Subject: [PATCH] update 解耦 LoginUser 与 SysUser 强关联
---
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 | 4 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java | 6 +-
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java | 13 +++-
ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java | 28 +++++++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 5 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java | 15 +----
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java | 6 +
ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java | 17 ++++-
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java | 2
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 24 +++++---
12 files changed, 88 insertions(+), 37 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
index 728bfd0..0137483 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
@@ -53,7 +53,7 @@
if (StringUtils.equals(ipaddr, user.getIpaddr())) {
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
}
- } else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) {
+ } else if (StringUtils.isNotEmpty(userName)) {
if (StringUtils.equals(userName, user.getUsername())) {
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
}
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 d73ebc2..9e51823 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,6 +8,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.service.ISysMenuService;
+import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.SysLoginService;
import com.ruoyi.system.service.SysPermissionService;
import io.swagger.annotations.Api;
@@ -38,6 +39,7 @@
private final SysLoginService loginService;
private final ISysMenuService menuService;
+ private final ISysUserService userService;
private final SysPermissionService permissionService;
/**
@@ -65,7 +67,7 @@
@ApiOperation("鑾峰彇鐢ㄦ埛淇℃伅")
@GetMapping("getInfo")
public AjaxResult<Map<String, Object>> getInfo() {
- SysUser user = SecurityUtils.getLoginUser().getUser();
+ SysUser user = userService.selectUserById(SecurityUtils.getUserId());
// 瑙掕壊闆嗗悎
Set<String> roles = permissionService.getRolePermission(user);
// 鏉冮檺闆嗗悎
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 d3b18f1..440eebb 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
@@ -47,7 +47,7 @@
@GetMapping
public AjaxResult<Map<String, Object>> profile() {
LoginUser loginUser = getLoginUser();
- SysUser user = loginUser.getUser();
+ SysUser user = userService.selectUserById(loginUser.getUserId());
Map<String, Object> ajax = new HashMap<>();
ajax.put("user", user);
ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
@@ -71,16 +71,10 @@
return AjaxResult.error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
}
LoginUser loginUser = getLoginUser();
- SysUser sysUser = loginUser.getUser();
+ SysUser sysUser = userService.selectUserById(loginUser.getUserId());
user.setUserId(sysUser.getUserId());
user.setPassword(null);
if (userService.updateUserProfile(user) > 0) {
- // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅
- sysUser.setNickName(user.getNickName());
- sysUser.setPhonenumber(user.getPhonenumber());
- sysUser.setEmail(user.getEmail());
- sysUser.setSex(user.getSex());
- tokenService.setLoginUser(loginUser);
return AjaxResult.success();
}
return AjaxResult.error("淇敼涓汉淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
@@ -108,7 +102,7 @@
}
if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) {
// 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜
- loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
+ loginUser.setPassword(SecurityUtils.encryptPassword(newPassword));
tokenService.setLoginUser(loginUser);
return AjaxResult.success();
}
@@ -132,9 +126,6 @@
String avatar = oss.getUrl();
if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) {
ajax.put("imgUrl", avatar);
- // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚
- loginUser.getUser().setAvatar(avatar);
- tokenService.setLoginUser(loginUser);
return AjaxResult.success(ajax);
}
}
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 39b828d..19cda5e 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
@@ -105,9 +105,9 @@
if (roleService.updateRole(role) > 0) {
// 鏇存柊缂撳瓨鐢ㄦ埛鏉冮檺
LoginUser loginUser = getLoginUser();
- if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) {
- loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
- loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
+ SysUser sysUser = userService.selectUserById(loginUser.getUserId());
+ if (StringUtils.isNotNull(sysUser) && !sysUser.isAdmin()) {
+ loginUser.setPermissions(permissionService.getMenuPermission(sysUser));
tokenService.setLoginUser(loginUser);
}
return AjaxResult.success();
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 9f7727a..b138c52 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.fasterxml.jackson.annotation.JsonIgnore;
-import com.ruoyi.common.core.domain.entity.SysUser;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@@ -75,31 +74,38 @@
private Set<String> permissions;
/**
- * 鐢ㄦ埛淇℃伅
+ * 鐢ㄦ埛鍚�
*/
- private SysUser user;
+ private String username;
- public LoginUser(SysUser user, Set<String> permissions) {
- this.user = user;
+ /**
+ * 瀵嗙爜
+ */
+ private String password;
+
+ public LoginUser(String username, String password, Set<String> permissions) {
+ this.username = username;
+ this.password = password;
this.permissions = permissions;
}
- public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions) {
+ public LoginUser(Long userId, Long deptId, String username, String password, Set<String> permissions) {
this.userId = userId;
this.deptId = deptId;
- this.user = user;
+ this.username = username;
+ this.password = password;
this.permissions = permissions;
}
@JsonIgnore
@Override
public String getPassword() {
- return user.getPassword();
+ return password;
}
@Override
public String getUsername() {
- return user.getUserName();
+ return username;
}
/**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java
new file mode 100644
index 0000000..e637f47
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.common.core.service;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+/**
+ * 閫氱敤 鐢ㄦ埛涓氬姟
+ *
+ * @author Lion Li
+ */
+public interface UserService {
+
+ /**
+ * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
+ *
+ * @param userName 鐢ㄦ埛鍚�
+ * @return 鐢ㄦ埛瀵硅薄淇℃伅
+ */
+ SysUser selectUserByUserName(String userName);
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
+ *
+ * @param userId 鐢ㄦ埛ID
+ * @return 鐢ㄦ埛瀵硅薄淇℃伅
+ */
+ SysUser selectUserById(Long userId);
+
+}
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 e4a6cdc..40cedca 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
@@ -5,9 +5,11 @@
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.service.UserService;
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;
@@ -64,8 +66,8 @@
// 鑾峰彇褰撳墠鐨勭敤鎴�
LoginUser loginUser = SecurityUtils.getLoginUser();
if (StringUtils.isNotNull(loginUser)) {
- SysUser currentUser = loginUser.getUser();
- // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹�
+ SysUser currentUser = SpringUtils.getBean(UserService.class).selectUserById(loginUser.getUserId());
+ // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹�
if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
controllerDataScope.userAlias(), controllerDataScope.isUser());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index d6e8d9d..a901e0a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.service.UserService;
import java.util.List;
@@ -11,7 +12,7 @@
*
* @author Lion Li
*/
-public interface ISysUserService extends IService<SysUser> {
+public interface ISysUserService extends IService<SysUser>, UserService {
TableDataInfo<SysUser> selectPageUserList(SysUser user);
@@ -46,6 +47,7 @@
* @param userName 鐢ㄦ埛鍚�
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
+ @Override
SysUser selectUserByUserName(String userName);
/**
@@ -54,6 +56,7 @@
* @param userId 鐢ㄦ埛ID
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
+ @Override
SysUser selectUserById(Long userId);
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java
index ce9af68..e413333 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java
@@ -1,9 +1,12 @@
package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.service.UserService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -91,10 +94,14 @@
return false;
}
LoginUser loginUser = SecurityUtils.getLoginUser();
- if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) {
+ if (StringUtils.isNull(loginUser)) {
return false;
}
- for (SysRole sysRole : loginUser.getUser().getRoles()) {
+ SysUser sysUser = SpringUtils.getBean(UserService.class).selectUserById(loginUser.getUserId());
+ if (CollectionUtils.isEmpty(sysUser.getRoles())) {
+ return false;
+ }
+ for (SysRole sysRole : sysUser.getRoles()) {
String roleKey = sysRole.getRoleKey();
if (SUPER_ADMIN.equals(roleKey) || roleKey.equals(StringUtils.trim(role))) {
return true;
@@ -124,7 +131,11 @@
return false;
}
LoginUser loginUser = SecurityUtils.getLoginUser();
- if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) {
+ if (StringUtils.isNull(loginUser)) {
+ return false;
+ }
+ SysUser sysUser = SpringUtils.getBean(UserService.class).selectUserById(loginUser.getUserId());
+ if (CollectionUtils.isEmpty(sysUser.getRoles())) {
return false;
}
for (String role : roles.split(ROLE_DELIMETER)) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
index cf5afc5..874f76c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
@@ -1,9 +1,12 @@
package com.ruoyi.system.service.impl;
+import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.ISysUserOnlineService;
+import com.ruoyi.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -13,6 +16,9 @@
*/
@Service
public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
+
+ @Autowired
+ private ISysUserService userService;
/**
* 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
@@ -68,9 +74,10 @@
*/
@Override
public SysUserOnline loginUserToUserOnline(LoginUser user) {
- if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) {
+ if (StringUtils.isNull(user)) {
return null;
}
+ SysUser sysUser = userService.selectUserById(user.getUserId());
SysUserOnline sysUserOnline = new SysUserOnline();
sysUserOnline.setTokenId(user.getToken());
sysUserOnline.setUserName(user.getUsername());
@@ -79,8 +86,8 @@
sysUserOnline.setBrowser(user.getBrowser());
sysUserOnline.setOs(user.getOs());
sysUserOnline.setLoginTime(user.getLoginTime());
- if (StringUtils.isNotNull(user.getUser().getDept())) {
- sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
+ if (StringUtils.isNotNull(sysUser.getDept())) {
+ sysUserOnline.setDeptName(sysUser.getDept().getDeptName());
}
return sysUserOnline;
}
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 08724cb..62d497d 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
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
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.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
@@ -35,7 +36,7 @@
*/
@Slf4j
@Service
-public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser, SysUser> implements ISysUserService {
+public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser, SysUser> implements ISysUserService, UserService {
@Autowired
private SysRoleMapper roleMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
index 6b1c1e0..14801e9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java
@@ -47,6 +47,6 @@
}
public UserDetails createLoginUser(SysUser user) {
- return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
+ return new LoginUser(user.getUserId(), user.getDeptId(), user.getUserName(), user.getPassword(), permissionService.getMenuPermission(user));
}
}
--
Gitblit v1.9.3