mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +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;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysDept;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysRole;
 | 
			
		||||
import com.ruoyi.common.core.domain.dto.RoleDTO;
 | 
			
		||||
import com.ruoyi.common.helper.LoginHelper;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
@@ -32,6 +31,11 @@ public class LoginUser implements Serializable {
 | 
			
		||||
     */
 | 
			
		||||
    private Long deptId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 部门名
 | 
			
		||||
     */
 | 
			
		||||
    private String deptName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 用户唯一标识
 | 
			
		||||
     */
 | 
			
		||||
@@ -87,15 +91,10 @@ public class LoginUser implements Serializable {
 | 
			
		||||
     */
 | 
			
		||||
    private String username;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 部门对象
 | 
			
		||||
     */
 | 
			
		||||
    private SysDept dept;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 角色对象
 | 
			
		||||
     */
 | 
			
		||||
    private List<SysRole> roles;
 | 
			
		||||
    private List<RoleDTO> roles;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 数据权限 当前角色ID
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import lombok.Getter;
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 语法支持 spel 模板表达式
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 内置数据 user 当前用户 内容参考 SysUser
 | 
			
		||||
 * 内置数据 user 当前用户 内容参考 LoginUser
 | 
			
		||||
 * 如需扩展数据 可使用 {@link com.ruoyi.common.helper.DataPermissionHelper} 操作
 | 
			
		||||
 * 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
 | 
			
		||||
 * 如需扩展更多自定义服务 可以参考 sdss 自行编写
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import cn.hutool.core.util.ClassUtil;
 | 
			
		||||
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.dto.RoleDTO;
 | 
			
		||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
			
		||||
import com.ruoyi.common.enums.DataScopeType;
 | 
			
		||||
import com.ruoyi.common.exception.ServiceException;
 | 
			
		||||
@@ -112,7 +112,7 @@ public class PlusDataPermissionHandler {
 | 
			
		||||
        StandardEvaluationContext context = new StandardEvaluationContext();
 | 
			
		||||
        context.setBeanResolver(beanResolver);
 | 
			
		||||
        DataPermissionHelper.getContext().forEach(context::setVariable);
 | 
			
		||||
        for (SysRole role : user.getRoles()) {
 | 
			
		||||
        for (RoleDTO role : user.getRoles()) {
 | 
			
		||||
            user.setRoleId(role.getRoleId());
 | 
			
		||||
            // 获取角色权限泛型
 | 
			
		||||
            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.stp.SaLoginModel;
 | 
			
		||||
import cn.dev33.satoken.stp.StpUtil;
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
import cn.hutool.http.useragent.UserAgent;
 | 
			
		||||
import cn.hutool.http.useragent.UserAgentUtil;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
@@ -52,10 +51,8 @@ public class UserActionListener implements SaTokenListener {
 | 
			
		||||
                .loginTime(System.currentTimeMillis())
 | 
			
		||||
                .tokenId(tokenValue)
 | 
			
		||||
                .userName(user.getUsername())
 | 
			
		||||
                .deptName(user.getDeptName())
 | 
			
		||||
                .build();
 | 
			
		||||
            if (ObjectUtil.isNotNull(user.getDept())) {
 | 
			
		||||
                dto.setDeptName(user.getDept().getDeptName());
 | 
			
		||||
            }
 | 
			
		||||
            RedisUtils.setCacheObject(Constants.ONLINE_TOKEN_KEY + tokenValue, dto, tokenConfig.getTimeout(), TimeUnit.SECONDS);
 | 
			
		||||
            log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
 | 
			
		||||
        } else if (userType == UserType.APP_USER) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,10 @@
 | 
			
		||||
package com.ruoyi.system.service;
 | 
			
		||||
 | 
			
		||||
import cn.dev33.satoken.stp.StpUtil;
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
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.model.LoginUser;
 | 
			
		||||
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.UserException;
 | 
			
		||||
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 lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -137,8 +143,9 @@ 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());
 | 
			
		||||
        loginUser.setDeptName(user.getDept().getDeptName());
 | 
			
		||||
        List<RoleDTO> roles = BeanUtil.copyToList(user.getRoles(), RoleDTO.class);
 | 
			
		||||
        loginUser.setRoles(roles);
 | 
			
		||||
        return loginUser;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user