From 0da30f462392664ba7a76d47de7e67560046d486 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 26 一月 2022 20:58:05 +0800 Subject: [PATCH] update 优化 查询登录用户数据 统一走缓存 --- /dev/null | 28 -------------- ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java | 2 + 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 | 6 +- ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java | 8 +-- ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 5 -- ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java | 4 - ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 18 +++++++++ ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java | 12 +++--- 9 files changed, 35 insertions(+), 51 deletions(-) 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 3c51e09..b87de51 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 @@ -7,11 +7,10 @@ import com.ruoyi.common.core.domain.entity.SysMenu; 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.helper.LoginHelper; -import com.ruoyi.common.utils.spring.SpringUtils; 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; @@ -41,6 +40,7 @@ private final SysLoginService loginService; private final ISysMenuService menuService; + private final ISysUserService userService; private final SysPermissionService permissionService; /** @@ -78,7 +78,7 @@ @ApiOperation("鑾峰彇鐢ㄦ埛淇℃伅") @GetMapping("getInfo") public AjaxResult<Map<String, Object>> getInfo() { - SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId()); + SysUser user = userService.selectUserById(LoginHelper.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 0fa8e1e..0a24e7c 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 @@ -5,12 +5,10 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; 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.helper.LoginHelper; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysUserService; @@ -91,7 +89,7 @@ @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE) @PutMapping("/updatePwd") public AjaxResult<Void> updatePwd(String oldPassword, String newPassword) { - SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId()); + SysUser user = userService.selectUserById(LoginHelper.getUserId()); String userName = user.getUserName(); String password = user.getPassword(); if (!SecurityUtils.matchesPassword(oldPassword, password)) { 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 4651b00..81e374a 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,10 +1,13 @@ 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.helper.LoginHelper; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.List; import java.util.Set; /** @@ -85,6 +88,21 @@ private String username; /** + * 閮ㄩ棬瀵硅薄 + */ + private SysDept dept; + + /** + * 瑙掕壊瀵硅薄 + */ + private List<SysRole> roles; + + /** + * 鏁版嵁鏉冮檺 褰撳墠瑙掕壊ID + */ + private Long roleId; + + /** * 鑾峰彇鐧诲綍id */ public String getLoginId() { 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 deleted file mode 100644 index e637f47..0000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java +++ /dev/null @@ -1,28 +0,0 @@ -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/handler/PlusDataPermissionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java index 07795d9..24a6847 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 @@ -8,12 +8,12 @@ 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.entity.SysUser; -import com.ruoyi.common.core.service.UserService; +import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.DataScopeType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.DataPermissionHelper; 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; import lombok.extern.slf4j.Slf4j; @@ -74,13 +74,13 @@ inavlidCacheSet.add(mappedStatementId); return where; } - SysUser currentUser = DataPermissionHelper.getVariable("user"); + LoginUser currentUser = DataPermissionHelper.getVariable("user"); if (ObjectUtil.isNull(currentUser)) { - currentUser = SpringUtils.getBean(UserService.class).selectUserById(LoginHelper.getUserId()); + currentUser = LoginHelper.getLoginUser(); DataPermissionHelper.setVariable("user", currentUser); } // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹� - if (ObjectUtil.isNull(currentUser) || currentUser.isAdmin()) { + if (ObjectUtil.isNull(currentUser) || SecurityUtils.isAdmin(currentUser.getUserId())) { return where; } String dataFilterSql = buildDataFilter(dataColumns, isSelect); @@ -108,7 +108,7 @@ StringBuilder sqlString = new StringBuilder(); // 鏇存柊鎴栧垹闄ら渶婊¤冻鎵�鏈夋潯浠� String joinStr = isSelect ? " OR " : " AND "; - SysUser user = DataPermissionHelper.getVariable("user"); + LoginUser user = DataPermissionHelper.getVariable("user"); StandardEvaluationContext context = new StandardEvaluationContext(); context.setBeanResolver(beanResolver); DataPermissionHelper.getContext().forEach(context::setVariable); 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 609c0ac..bf5625f 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 @@ -9,14 +9,12 @@ import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.dto.UserOnlineDTO; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.service.UserService; +import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserType; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.ServletUtils; 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.stereotype.Component; @@ -44,7 +42,7 @@ 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(LoginHelper.getUserId()); + LoginUser user = LoginHelper.getLoginUser(); String tokenValue = StpUtil.getTokenValue(); UserOnlineDTO dto = UserOnlineDTO.builder() .ipaddr(ip) @@ -53,7 +51,7 @@ .os(userAgent.getOs().getName()) .loginTime(System.currentTimeMillis()) .tokenId(tokenValue) - .userName(user.getUserName()) + .userName(user.getUsername()) .build(); if (ObjectUtil.isNotNull(user.getDept())) { dto.setDeptName(user.getDept().getDeptName()); 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 118c36f..741ae4b 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,7 +3,6 @@ import com.ruoyi.common.core.domain.PageQuery; 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; @@ -12,7 +11,7 @@ * * @author Lion Li */ -public interface ISysUserService extends UserService { +public interface ISysUserService { TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery); @@ -47,7 +46,6 @@ * @param userName 鐢ㄦ埛鍚� * @return 鐢ㄦ埛瀵硅薄淇℃伅 */ - @Override SysUser selectUserByUserName(String userName); /** @@ -56,7 +54,6 @@ * @param userId 鐢ㄦ埛ID * @return 鐢ㄦ埛瀵硅薄淇℃伅 */ - @Override SysUser selectUserById(Long userId); /** 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 a19f76d..a9a6a10 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 @@ -137,6 +137,8 @@ loginUser.setUserType(user.getUserType()); loginUser.setMenuPermission(permissionService.getMenuPermission(user)); loginUser.setRolePermission(permissionService.getRolePermission(user)); + loginUser.setRoles(user.getRoles()); + loginUser.setDept(user.getDept()); return loginUser; } 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 5194046..72ec867 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 @@ -10,7 +10,6 @@ import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.core.service.UserService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; @@ -38,7 +37,7 @@ @Slf4j @RequiredArgsConstructor @Service -public class SysUserServiceImpl implements ISysUserService, UserService { +public class SysUserServiceImpl implements ISysUserService { private final SysUserMapper baseMapper; private final SysRoleMapper roleMapper; -- Gitblit v1.9.3