fix: 系统功能大优化,仅可查看自己创建的业务数据。

This commit is contained in:
tianyongbao
2024-05-17 14:09:54 +08:00
parent ab4189a401
commit 8d08061fef
48 changed files with 149 additions and 252 deletions

View File

@@ -26,6 +26,11 @@ public @interface DataScope
*/
public String userAlias() default "";
/**
* 业务表的别名
*/
public String businessAlias() default "";
/**
* 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@RequiresPermissions获取多个权限用逗号分隔开来
*/

View File

@@ -1,11 +1,5 @@
package com.ruoyi.common.datascope.aspect;
import java.util.ArrayList;
import java.util.List;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.core.utils.StringUtils;
@@ -15,6 +9,13 @@ import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 数据过滤处理
@@ -74,7 +75,8 @@ public class DataScopeAspect
{
String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), SecurityContextHolder.getPermission());
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
controllerDataScope.userAlias(), permission);
controllerDataScope.userAlias(),
controllerDataScope.businessAlias(), permission);
}
}
}
@@ -88,7 +90,7 @@ public class DataScopeAspect
* @param userAlias 用户别名
* @param permission 权限字符
*/
public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission)
public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String businessAlias, String permission)
{
StringBuilder sqlString = new StringBuilder();
List<String> conditions = new ArrayList<String>();
@@ -137,9 +139,12 @@ public class DataScopeAspect
}
else
{
// 数据权限为仅本人且没有userAlias别名不查询任何数据
sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
if (StringUtils.isNotBlank(businessAlias))
{
sqlString.append(StringUtils.format(" OR {}.create_by ='{}'", businessAlias, user.getUserName()));
}
}
}
conditions.add(dataScope);
}