@ -48,7 +48,7 @@ public class DataScopeAspect
if ( ! currentUser . isAdmin ( ) )
if ( ! currentUser . isAdmin ( ) )
{
{
String permission = StringUtils . defaultIfEmpty ( controllerDataScope . permission ( ) , PermissionContextHolder . getContext ( ) ) ;
String permission = StringUtils . defaultIfEmpty ( controllerDataScope . permission ( ) , PermissionContextHolder . getContext ( ) ) ;
dataScopeFilter ( joinPoint , currentUser , controllerDataScope . deptAlias( ) , controllerDataScope . user Alias ( ) , permission ) ;
dataScopeFilter ( joinPoint , currentUser , controllerDataScope . userAlias( ) , controllerDataScope . deptAlias( ) , controllerDataScope . user Field( ) , controllerDataScope . deptField ( ) , permission ) ;
}
}
}
}
}
}
@ -62,7 +62,7 @@ public class DataScopeAspect
* @param userAlias 用 户 别 名
* @param userAlias 用 户 别 名
* @param permission 权 限 字 符
* @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 userAlias, String deptAlias , String userField , String deptField , String permission )
{
{
StringBuilder sqlString = new StringBuilder ( ) ;
StringBuilder sqlString = new StringBuilder ( ) ;
List < String > conditions = new ArrayList < String > ( ) ;
List < String > conditions = new ArrayList < String > ( ) ;
@ -96,31 +96,31 @@ public class DataScopeAspect
if ( scopeCustomIds . size ( ) > 1 )
if ( scopeCustomIds . size ( ) > 1 )
{
{
// 多个自定数据权限使用in查询, 避免多次拼接。
// 多个自定数据权限使用in查询, 避免多次拼接。
sqlString . append ( StringUtils . format ( " OR {}. dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id in ({}) ) ", deptAlias , String . join ( "," , scopeCustomIds ) ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} IN ( SELECT dept_id FROM sys_role_dept WHERE role_id in ({}) ) ", deptAlias , deptField , String . join ( "," , scopeCustomIds ) ) ) ;
}
}
else
else
{
{
sqlString . append ( StringUtils . format ( " OR {}. dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias , role . getRoleId ( ) ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias , deptField , role . getRoleId ( ) ) ) ;
}
}
}
}
else if ( Constants . Dept . DATA_SCOPE_DEPT . equals ( dataScope ) )
else if ( Constants . Dept . DATA_SCOPE_DEPT . equals ( dataScope ) )
{
{
sqlString . append ( StringUtils . format ( " OR {}. dept_id = {} ", deptAlias , user . getDeptId ( ) ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} = {} ", deptAlias , deptField , user . getDeptId ( ) ) ) ;
}
}
else if ( Constants . Dept . DATA_SCOPE_DEPT_AND_CHILD . equals ( dataScope ) )
else if ( Constants . Dept . DATA_SCOPE_DEPT_AND_CHILD . equals ( dataScope ) )
{
{
sqlString . append ( StringUtils . format ( " OR {}. dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias , user . getDeptId ( ) , user . getDeptId ( ) ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias , deptField , user . getDeptId ( ) , user . getDeptId ( ) ) ) ;
}
}
else if ( Constants . Dept . DATA_SCOPE_SELF . equals ( dataScope ) )
else if ( Constants . Dept . DATA_SCOPE_SELF . equals ( dataScope ) )
{
{
if ( StringUtils . isNotBlank ( userAlias ) )
if ( StringUtils . isNotBlank ( userAlias ) )
{
{
sqlString . append ( StringUtils . format ( " OR {}. user_id = {} ", userAlias , user . getUserId ( ) ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} = {} ", userAlias , userField , user . getUserId ( ) ) ) ;
}
}
else
else
{
{
// 数据权限为仅本人且没有userAlias别名不查询任何数据
// 数据权限为仅本人且没有userAlias别名不查询任何数据
sqlString . append ( StringUtils . format ( " OR {}. dept_id = 0 ", deptAlias ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} = 0 ", deptAlias , deptField ) ) ;
}
}
}
}
conditions . add ( dataScope ) ;
conditions . add ( dataScope ) ;
@ -129,7 +129,7 @@ public class DataScopeAspect
// 角色都不包含传递过来的权限字符, 这个时候sqlString也会为空, 所以要限制一下,不查询任何数据
// 角色都不包含传递过来的权限字符, 这个时候sqlString也会为空, 所以要限制一下,不查询任何数据
if ( StringUtils . isEmpty ( conditions ) )
if ( StringUtils . isEmpty ( conditions ) )
{
{
sqlString . append ( StringUtils . format ( " OR {}. dept_id = 0 ", deptAlias ) ) ;
sqlString . append ( StringUtils . format ( " OR {}. {} = 0 ", deptAlias , deptField ) ) ;
}
}
if ( StringUtils . isNotBlank ( sqlString . toString ( ) ) )
if ( StringUtils . isNotBlank ( sqlString . toString ( ) ) )