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