疯狂的狮子li
2022-01-27 29462b83ff802c3855a8e338a3ea5d220fc0e7bc
update 优化 LoginUser 解耦
已添加1个文件
已修改5个文件
77 ■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java
¶Ô±ÈÐÂÎļþ
@@ -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;
}
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.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;
@@ -31,6 +30,11 @@
     * éƒ¨é—¨ID
     */
    private Long deptId;
    /**
     * éƒ¨é—¨å
     */
    private String deptName;
    /**
     * ç”¨æˆ·å”¯ä¸€æ ‡è¯†
@@ -88,14 +92,9 @@
    private String username;
    /**
     * éƒ¨é—¨å¯¹è±¡
     */
    private SysDept dept;
    /**
     * è§’色对象
     */
    private List<SysRole> roles;
    private List<RoleDTO> roles;
    /**
     * æ•°æ®æƒé™ å½“前角色ID
ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java
@@ -9,7 +9,7 @@
 * <p>
 * è¯­æ³•支持 spel æ¨¡æ¿è¡¨è¾¾å¼
 * <p>
 * å†…置数据 user å½“前用户 å†…容参考 SysUser
 * å†…置数据 user å½“前用户 å†…容参考 LoginUser
 * å¦‚需扩展数据 å¯ä½¿ç”¨ {@link com.ruoyi.common.helper.DataPermissionHelper} æ“ä½œ
 * å†…置服务 sdss ç³»ç»Ÿæ•°æ®æƒé™æœåŠ¡ å†…容参考 SysDataScopeService
 * å¦‚需扩展更多自定义服务 å¯ä»¥å‚考 sdss è‡ªè¡Œç¼–写
ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
@@ -7,7 +7,7 @@
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 @@
        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());
ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java
@@ -4,7 +4,6 @@
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 @@
                .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) {
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -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.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 @@
        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;
    }