Răsfoiți Sursa

update 优化 查询登录用户数据 统一走缓存

疯狂的狮子li 3 ani în urmă
părinte
comite
0da30f4623

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -7,11 +7,10 @@ import com.ruoyi.common.core.domain.AjaxResult;
 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 @@ public class SysLoginController {
 
     private final SysLoginService loginService;
     private final ISysMenuService menuService;
+    private final ISysUserService userService;
     private final SysPermissionService permissionService;
 
     /**
@@ -78,7 +78,7 @@ public class SysLoginController {
     @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);
         // 权限集合

+ 1 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java

@@ -5,12 +5,10 @@ import com.ruoyi.common.constant.UserConstants;
 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 @@ public class SysProfileController extends BaseController {
     @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)) {

+ 18 - 0
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 @@ public class LoginUser implements Serializable {
     private String username;
 
     /**
+     * 部门对象
+     */
+    private SysDept dept;
+
+    /**
+     * 角色对象
+     */
+    private List<SysRole> roles;
+
+    /**
+     * 数据权限 当前角色ID
+     */
+    private Long roleId;
+
+    /**
      * 获取登录id
      */
     public String getLoginId() {

+ 0 - 28
ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java

@@ -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);
-
-}

+ 6 - 6
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java

@@ -8,12 +8,12 @@ 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.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 @@ public class PlusDataPermissionHandler {
             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 @@ public class PlusDataPermissionHandler {
         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);

+ 3 - 5
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java

@@ -9,14 +9,12 @@ import cn.hutool.http.useragent.UserAgent;
 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 @@ public class UserActionListener implements SaTokenListener {
         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 @@ public class UserActionListener implements SaTokenListener {
                 .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());

+ 1 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -3,7 +3,6 @@ package com.ruoyi.system.service;
 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 @@ import java.util.List;
  *
  * @author Lion Li
  */
-public interface ISysUserService extends UserService {
+public interface ISysUserService {
 
 
     TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery);
@@ -47,7 +46,6 @@ public interface ISysUserService extends UserService {
      * @param userName 用户名
      * @return 用户对象信息
      */
-    @Override
     SysUser selectUserByUserName(String userName);
 
     /**
@@ -56,7 +54,6 @@ public interface ISysUserService extends UserService {
      * @param userId 用户ID
      * @return 用户对象信息
      */
-    @Override
     SysUser selectUserById(Long userId);
 
     /**

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java

@@ -137,6 +137,8 @@ public class SysLoginService {
         loginUser.setUserType(user.getUserType());
         loginUser.setMenuPermission(permissionService.getMenuPermission(user));
         loginUser.setRolePermission(permissionService.getRolePermission(user));
+        loginUser.setRoles(user.getRoles());
+        loginUser.setDept(user.getDept());
         return loginUser;
     }
 

+ 1 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -10,7 +10,6 @@ import com.ruoyi.common.core.domain.PageQuery;
 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 @@ import java.util.stream.Collectors;
 @Slf4j
 @RequiredArgsConstructor
 @Service
-public class SysUserServiceImpl implements ISysUserService, UserService {
+public class SysUserServiceImpl implements ISysUserService {
 
     private final SysUserMapper baseMapper;
     private final SysRoleMapper roleMapper;