From 019526fbe921a574f76e629ad7b3079f933a630a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 21 Nov 2021 01:39:43 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=A7=A3=E8=80=A6=20LoginUser=20?= =?UTF-8?q?=E4=B8=8E=20SysUser=20=E5=BC=BA=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/SysUserOnlineController.java | 2 +- .../controller/system/SysLoginController.java | 4 ++- .../system/SysProfileController.java | 15 ++-------- .../controller/system/SysRoleController.java | 6 ++-- .../common/core/domain/model/LoginUser.java | 24 ++++++++++------ .../common/core/service/UserService.java | 28 +++++++++++++++++++ .../framework/aspectj/DataScopeAspect.java | 6 ++-- .../ruoyi/system/service/ISysUserService.java | 5 +++- .../system/service/PermissionService.java | 17 +++++++++-- .../impl/SysUserOnlineServiceImpl.java | 13 +++++++-- .../service/impl/SysUserServiceImpl.java | 3 +- .../service/impl/UserDetailsServiceImpl.java | 2 +- 12 files changed, 88 insertions(+), 37 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java 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 728bfd078..013748376 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 @@ public class SysUserOnlineController extends BaseController { 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 d73ebc20d..9e518234d 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.core.domain.model.LoginBody; 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 @@ public class SysLoginController { private final SysLoginService loginService; private final ISysMenuService menuService; + private final ISysUserService userService; private final SysPermissionService permissionService; /** @@ -65,7 +67,7 @@ public class SysLoginController { @ApiOperation("获取用户信息") @GetMapping("getInfo") public AjaxResult> getInfo() { - SysUser user = SecurityUtils.getLoginUser().getUser(); + SysUser user = userService.selectUserById(SecurityUtils.getUserId()); // 角色集合 Set 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 d3b18f1e6..440eebb7e 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 @@ public class SysProfileController extends BaseController { @GetMapping public AjaxResult> profile() { LoginUser loginUser = getLoginUser(); - SysUser user = loginUser.getUser(); + SysUser user = userService.selectUserById(loginUser.getUserId()); Map ajax = new HashMap<>(); ajax.put("user", user); ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); @@ -71,16 +71,10 @@ public class SysProfileController extends BaseController { 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 @@ public class SysProfileController extends BaseController { } 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 @@ public class SysProfileController extends BaseController { 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 39b828d94..19cda5e45 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 @@ public class SysRoleController extends BaseController { 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 9f7727abb..b138c529a 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 @@ public class LoginUser implements UserDetails { private Set permissions; /** - * 用户信息 + * 用户名 */ - private SysUser user; + private String username; - public LoginUser(SysUser user, Set permissions) { - this.user = user; + /** + * 密码 + */ + private String password; + + public LoginUser(String username, String password, Set permissions) { + this.username = username; + this.password = password; this.permissions = permissions; } - public LoginUser(Long userId, Long deptId, SysUser user, Set permissions) { + public LoginUser(Long userId, Long deptId, String username, String password, Set 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 000000000..e637f4731 --- /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 e4a6cdcdb..40cedcaff 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.BaseEntity; 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 @@ public class DataScopeAspect { // 获取当前的用户 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 d6e8d9d3d..a901e0abe 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 @@ package com.ruoyi.system.service; 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 @@ import java.util.List; * * @author Lion Li */ -public interface ISysUserService extends IService { +public interface ISysUserService extends IService, UserService { TableDataInfo selectPageUserList(SysUser user); @@ -46,6 +47,7 @@ public interface ISysUserService extends IService { * @param userName 用户名 * @return 用户对象信息 */ + @Override SysUser selectUserByUserName(String userName); /** @@ -54,6 +56,7 @@ public interface ISysUserService extends IService { * @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 ce9af68dd..e41333391 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 @@ public class PermissionService { 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 @@ public class PermissionService { 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 cf5afc54c..874f76ccd 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; /** @@ -14,6 +17,9 @@ import org.springframework.stereotype.Service; @Service public class SysUserOnlineServiceImpl implements ISysUserOnlineService { + @Autowired + private ISysUserService userService; + /** * 通过登录地址查询信息 * @@ -68,9 +74,10 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService { */ @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 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService { 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 08724cbb7..62d497d45 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.SysRole; 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 @@ import java.util.List; */ @Slf4j @Service -public class SysUserServiceImpl extends ServicePlusImpl implements ISysUserService { +public class SysUserServiceImpl extends ServicePlusImpl 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 6b1c1e0f8..14801e9dc 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 class UserDetailsServiceImpl implements UserDetailsService { } 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)); } }