RuoYi
2020-09-04 857a5b26e72193fa38d0ea884cf54d04cd2e1b0c
ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java
@@ -12,10 +12,10 @@
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.datascope.service.AwaitUserService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.UserInfo;
import com.ruoyi.system.api.model.LoginUser;
/**
 * 数据过滤处理
@@ -57,7 +57,7 @@
    public static final String DATA_SCOPE = "dataScope";
    @Autowired
    private AwaitUserService awaitUserService;
    private TokenService tokenService;
    // 配置织入点
    @Pointcut("@annotation(com.ruoyi.common.datascope.annotation.DataScope)")
@@ -80,12 +80,12 @@
            return;
        }
        // 获取当前的用户
        UserInfo loginUser = awaitUserService.info();
        SysUser currentUser = loginUser.getSysUser();
        if (currentUser != null)
        LoginUser loginUser = tokenService.getLoginUser();
        if (StringUtils.isNotNull(loginUser))
        {
            SysUser currentUser = loginUser.getSysUser();
            // 如果是超级管理员,则不过滤数据
            if (!currentUser.isAdmin())
            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
            {
                dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
                        controllerDataScope.userAlias());
@@ -98,7 +98,8 @@
     * 
     * @param joinPoint 切点
     * @param user 用户
     * @param alias 别名
     * @param deptAlias 部门别名
     * @param userAlias 用户别名
     */
    public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias)
    {
@@ -144,8 +145,12 @@
        if (StringUtils.isNotBlank(sqlString.toString()))
        {
            BaseEntity baseEntity = (BaseEntity) joinPoint.getArgs()[0];
            baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
            Object params = joinPoint.getArgs()[0];
            if (StringUtils.isNotNull(params) && params instanceof BaseEntity)
            {
                BaseEntity baseEntity = (BaseEntity) params;
                baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
            }
        }
    }