|
...
|
...
|
@@ -92,16 +92,22 @@ public class DataScopeAspect |
|
|
|
{
|
|
|
|
StringBuilder sqlString = new StringBuilder();
|
|
|
|
List<String> conditions = new ArrayList<String>();
|
|
|
|
List<String> scopeCustomIds = new ArrayList<String>();
|
|
|
|
user.getRoles().forEach(role -> {
|
|
|
|
if (DATA_SCOPE_CUSTOM.equals(role.getDataScope()) && StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
|
|
|
|
{
|
|
|
|
scopeCustomIds.add(Convert.toStr(role.getRoleId()));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
for (SysRole role : user.getRoles())
|
|
|
|
{
|
|
|
|
String dataScope = role.getDataScope();
|
|
|
|
if (!DATA_SCOPE_CUSTOM.equals(dataScope) && conditions.contains(dataScope))
|
|
|
|
if (conditions.contains(dataScope))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions())
|
|
|
|
&& !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
|
|
|
|
if (!StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission)))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -113,9 +119,15 @@ public class DataScopeAspect |
|
|
|
}
|
|
|
|
else if (DATA_SCOPE_CUSTOM.equals(dataScope))
|
|
|
|
{
|
|
|
|
sqlString.append(StringUtils.format(
|
|
|
|
" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias,
|
|
|
|
role.getRoleId()));
|
|
|
|
if (scopeCustomIds.size() > 1)
|
|
|
|
{
|
|
|
|
// 多个自定数据权限使用in查询,避免多次拼接。
|
|
|
|
sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id in ({}) ) ", deptAlias, String.join(",", scopeCustomIds)));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, role.getRoleId()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (DATA_SCOPE_DEPT.equals(dataScope))
|
|
|
|
{
|
|
...
|
...
|
@@ -123,9 +135,7 @@ public class DataScopeAspect |
|
|
|
}
|
|
|
|
else if (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 {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId()));
|
|
|
|
}
|
|
|
|
else if (DATA_SCOPE_SELF.equals(dataScope))
|
|
|
|
{
|
...
|
...
|
|