mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化 LoginUser 解耦
This commit is contained in:
		@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package com.ruoyi.common.core.domain.dto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 角色
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Lion Li
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					public class RoleDTO implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 角色ID
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Long roleId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 角色名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String roleName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 角色权限
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String roleKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String dataScope;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
package com.ruoyi.common.core.domain.model;
 | 
					package com.ruoyi.common.core.domain.model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysDept;
 | 
					import com.ruoyi.common.core.domain.dto.RoleDTO;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
					 | 
				
			||||||
import com.ruoyi.common.helper.LoginHelper;
 | 
					import com.ruoyi.common.helper.LoginHelper;
 | 
				
			||||||
import lombok.Data;
 | 
					import lombok.Data;
 | 
				
			||||||
import lombok.NoArgsConstructor;
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
@@ -32,6 +31,11 @@ public class LoginUser implements Serializable {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long deptId;
 | 
					    private Long deptId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 部门名
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String deptName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 用户唯一标识
 | 
					     * 用户唯一标识
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -87,15 +91,10 @@ public class LoginUser implements Serializable {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private String username;
 | 
					    private String username;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 部门对象
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private SysDept dept;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 角色对象
 | 
					     * 角色对象
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private List<SysRole> roles;
 | 
					    private List<RoleDTO> roles;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 数据权限 当前角色ID
 | 
					     * 数据权限 当前角色ID
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ import lombok.Getter;
 | 
				
			|||||||
 * <p>
 | 
					 * <p>
 | 
				
			||||||
 * 语法支持 spel 模板表达式
 | 
					 * 语法支持 spel 模板表达式
 | 
				
			||||||
 * <p>
 | 
					 * <p>
 | 
				
			||||||
 * 内置数据 user 当前用户 内容参考 SysUser
 | 
					 * 内置数据 user 当前用户 内容参考 LoginUser
 | 
				
			||||||
 * 如需扩展数据 可使用 {@link com.ruoyi.common.helper.DataPermissionHelper} 操作
 | 
					 * 如需扩展数据 可使用 {@link com.ruoyi.common.helper.DataPermissionHelper} 操作
 | 
				
			||||||
 * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
 | 
					 * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
 | 
				
			||||||
 * 如需扩展更多自定义服务 可以参考 sdss 自行编写
 | 
					 * 如需扩展更多自定义服务 可以参考 sdss 自行编写
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ import cn.hutool.core.util.ClassUtil;
 | 
				
			|||||||
import cn.hutool.core.util.ObjectUtil;
 | 
					import cn.hutool.core.util.ObjectUtil;
 | 
				
			||||||
import com.ruoyi.common.annotation.DataColumn;
 | 
					import com.ruoyi.common.annotation.DataColumn;
 | 
				
			||||||
import com.ruoyi.common.annotation.DataPermission;
 | 
					import com.ruoyi.common.annotation.DataPermission;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
					import com.ruoyi.common.core.domain.dto.RoleDTO;
 | 
				
			||||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
					import com.ruoyi.common.core.domain.model.LoginUser;
 | 
				
			||||||
import com.ruoyi.common.enums.DataScopeType;
 | 
					import com.ruoyi.common.enums.DataScopeType;
 | 
				
			||||||
import com.ruoyi.common.exception.ServiceException;
 | 
					import com.ruoyi.common.exception.ServiceException;
 | 
				
			||||||
@@ -112,7 +112,7 @@ public class PlusDataPermissionHandler {
 | 
				
			|||||||
        StandardEvaluationContext context = new StandardEvaluationContext();
 | 
					        StandardEvaluationContext context = new StandardEvaluationContext();
 | 
				
			||||||
        context.setBeanResolver(beanResolver);
 | 
					        context.setBeanResolver(beanResolver);
 | 
				
			||||||
        DataPermissionHelper.getContext().forEach(context::setVariable);
 | 
					        DataPermissionHelper.getContext().forEach(context::setVariable);
 | 
				
			||||||
        for (SysRole role : user.getRoles()) {
 | 
					        for (RoleDTO role : user.getRoles()) {
 | 
				
			||||||
            user.setRoleId(role.getRoleId());
 | 
					            user.setRoleId(role.getRoleId());
 | 
				
			||||||
            // 获取角色权限泛型
 | 
					            // 获取角色权限泛型
 | 
				
			||||||
            DataScopeType type = DataScopeType.findCode(role.getDataScope());
 | 
					            DataScopeType type = DataScopeType.findCode(role.getDataScope());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,6 @@ import cn.dev33.satoken.config.SaTokenConfig;
 | 
				
			|||||||
import cn.dev33.satoken.listener.SaTokenListener;
 | 
					import cn.dev33.satoken.listener.SaTokenListener;
 | 
				
			||||||
import cn.dev33.satoken.stp.SaLoginModel;
 | 
					import cn.dev33.satoken.stp.SaLoginModel;
 | 
				
			||||||
import cn.dev33.satoken.stp.StpUtil;
 | 
					import cn.dev33.satoken.stp.StpUtil;
 | 
				
			||||||
import cn.hutool.core.util.ObjectUtil;
 | 
					 | 
				
			||||||
import cn.hutool.http.useragent.UserAgent;
 | 
					import cn.hutool.http.useragent.UserAgent;
 | 
				
			||||||
import cn.hutool.http.useragent.UserAgentUtil;
 | 
					import cn.hutool.http.useragent.UserAgentUtil;
 | 
				
			||||||
import com.ruoyi.common.constant.Constants;
 | 
					import com.ruoyi.common.constant.Constants;
 | 
				
			||||||
@@ -52,10 +51,8 @@ public class UserActionListener implements SaTokenListener {
 | 
				
			|||||||
                .loginTime(System.currentTimeMillis())
 | 
					                .loginTime(System.currentTimeMillis())
 | 
				
			||||||
                .tokenId(tokenValue)
 | 
					                .tokenId(tokenValue)
 | 
				
			||||||
                .userName(user.getUsername())
 | 
					                .userName(user.getUsername())
 | 
				
			||||||
 | 
					                .deptName(user.getDeptName())
 | 
				
			||||||
                .build();
 | 
					                .build();
 | 
				
			||||||
            if (ObjectUtil.isNotNull(user.getDept())) {
 | 
					 | 
				
			||||||
                dto.setDeptName(user.getDept().getDeptName());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, dto, tokenConfig.getTimeout(), TimeUnit.SECONDS);
 | 
					            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, dto, tokenConfig.getTimeout(), TimeUnit.SECONDS);
 | 
				
			||||||
            log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
 | 
					            log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
 | 
				
			||||||
        } else if (userType == UserType.APP_USER) {
 | 
					        } else if (userType == UserType.APP_USER) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,10 @@
 | 
				
			|||||||
package com.ruoyi.system.service;
 | 
					package com.ruoyi.system.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.dev33.satoken.stp.StpUtil;
 | 
					import cn.dev33.satoken.stp.StpUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.bean.BeanUtil;
 | 
				
			||||||
import cn.hutool.core.util.ObjectUtil;
 | 
					import cn.hutool.core.util.ObjectUtil;
 | 
				
			||||||
import com.ruoyi.common.constant.Constants;
 | 
					import com.ruoyi.common.constant.Constants;
 | 
				
			||||||
 | 
					import com.ruoyi.common.core.domain.dto.RoleDTO;
 | 
				
			||||||
import com.ruoyi.common.core.domain.entity.SysUser;
 | 
					import com.ruoyi.common.core.domain.entity.SysUser;
 | 
				
			||||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
					import com.ruoyi.common.core.domain.model.LoginUser;
 | 
				
			||||||
import com.ruoyi.common.core.service.LogininforService;
 | 
					import com.ruoyi.common.core.service.LogininforService;
 | 
				
			||||||
@@ -12,13 +14,17 @@ import com.ruoyi.common.exception.user.CaptchaException;
 | 
				
			|||||||
import com.ruoyi.common.exception.user.CaptchaExpireException;
 | 
					import com.ruoyi.common.exception.user.CaptchaExpireException;
 | 
				
			||||||
import com.ruoyi.common.exception.user.UserException;
 | 
					import com.ruoyi.common.exception.user.UserException;
 | 
				
			||||||
import com.ruoyi.common.helper.LoginHelper;
 | 
					import com.ruoyi.common.helper.LoginHelper;
 | 
				
			||||||
import com.ruoyi.common.utils.*;
 | 
					import com.ruoyi.common.utils.DateUtils;
 | 
				
			||||||
 | 
					import com.ruoyi.common.utils.MessageUtils;
 | 
				
			||||||
 | 
					import com.ruoyi.common.utils.SecurityUtils;
 | 
				
			||||||
 | 
					import com.ruoyi.common.utils.ServletUtils;
 | 
				
			||||||
import com.ruoyi.common.utils.redis.RedisUtils;
 | 
					import com.ruoyi.common.utils.redis.RedisUtils;
 | 
				
			||||||
import lombok.RequiredArgsConstructor;
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.servlet.http.HttpServletRequest;
 | 
					import javax.servlet.http.HttpServletRequest;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.concurrent.TimeUnit;
 | 
					import java.util.concurrent.TimeUnit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -137,8 +143,9 @@ public class SysLoginService {
 | 
				
			|||||||
        loginUser.setUserType(user.getUserType());
 | 
					        loginUser.setUserType(user.getUserType());
 | 
				
			||||||
        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
 | 
					        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
 | 
				
			||||||
        loginUser.setRolePermission(permissionService.getRolePermission(user));
 | 
					        loginUser.setRolePermission(permissionService.getRolePermission(user));
 | 
				
			||||||
        loginUser.setRoles(user.getRoles());
 | 
					        loginUser.setDeptName(user.getDept().getDeptName());
 | 
				
			||||||
        loginUser.setDept(user.getDept());
 | 
					        List<RoleDTO> roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class);
 | 
				
			||||||
 | 
					        loginUser.setRoles(roles);
 | 
				
			||||||
        return loginUser;
 | 
					        return loginUser;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user