add
This commit is contained in:
@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.qiaoba.auth.annotation.DataScope;
|
||||
import com.qiaoba.auth.entity.LoginUser;
|
||||
import com.qiaoba.auth.entity.dto.RoleDto;
|
||||
import com.qiaoba.auth.utils.SecurityUtil;
|
||||
import com.qiaoba.common.base.entity.DataScopeParam;
|
||||
import com.qiaoba.common.base.utils.DatabaseUtil;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
@ -13,6 +15,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 数据过滤处理
|
||||
@ -47,25 +50,32 @@ public class DataScopeAspect {
|
||||
*/
|
||||
public static final String DATA_SCOPE_SELF = "5";
|
||||
|
||||
/**
|
||||
* 数据权限过滤关键字
|
||||
*/
|
||||
public static final String DATA_SCOPE = "dataScope";
|
||||
|
||||
@Before("@annotation(controllerDataScope)")
|
||||
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
|
||||
LoginUser loginUser = SecurityUtil.getLoginUser();
|
||||
if (Objects.isNull(loginUser)) {
|
||||
return;
|
||||
}
|
||||
Object[] args = point.getArgs();
|
||||
for (Object arg : args) {
|
||||
if (Objects.nonNull(arg) && arg instanceof DataScopeParam) {
|
||||
dataScopeFilter((DataScopeParam) arg, loginUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据范围过滤
|
||||
*
|
||||
* @param joinPoint 切点
|
||||
* @param param 入参
|
||||
* @param user 用户
|
||||
* @param deptAlias 部门别名
|
||||
* @param userAlias 用户别名
|
||||
*/
|
||||
public static void dataScopeFilter(JoinPoint joinPoint, LoginUser user, String deptAlias, String userAlias) {
|
||||
public static void dataScopeFilter(DataScopeParam param, LoginUser user, String deptAlias, String userAlias) {
|
||||
StringBuilder sqlString = new StringBuilder();
|
||||
List<String> conditions = new ArrayList<String>();
|
||||
|
||||
@ -104,6 +114,10 @@ public class DataScopeAspect {
|
||||
if (CollUtil.isEmpty(conditions)) {
|
||||
sqlString.append(StrUtil.format(" OR {}.dept_id = 0 ", deptAlias));
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(sqlString)) {
|
||||
param.setDataScope(" AND (" + sqlString.substring(4) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user