package org.ruoyi.aspect;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.aspectj.lang.JoinPoint;
|
import org.aspectj.lang.annotation.AfterReturning;
|
import org.aspectj.lang.annotation.AfterThrowing;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Before;
|
import org.ruoyi.annotation.DataPermission;
|
import org.ruoyi.helper.DataPermissionHelper;
|
|
/**
|
* 数据权限处理
|
*
|
* @author Lion Li
|
*/
|
@Slf4j
|
@Aspect
|
public class DataPermissionAspect {
|
|
/**
|
* 处理请求前执行
|
*/
|
@Before(value = "@annotation(dataPermission)")
|
public void doBefore(JoinPoint joinPoint, DataPermission dataPermission) {
|
DataPermissionHelper.setPermission(dataPermission);
|
}
|
|
/**
|
* 处理完请求后执行
|
*
|
* @param joinPoint 切点
|
*/
|
@AfterReturning(pointcut = "@annotation(dataPermission)")
|
public void doAfterReturning(JoinPoint joinPoint, DataPermission dataPermission) {
|
DataPermissionHelper.removePermission();
|
}
|
|
/**
|
* 拦截异常操作
|
*
|
* @param joinPoint 切点
|
* @param e 异常
|
*/
|
@AfterThrowing(value = "@annotation(dataPermission)", throwing = "e")
|
public void doAfterThrowing(JoinPoint joinPoint, DataPermission dataPermission, Exception e) {
|
DataPermissionHelper.removePermission();
|
}
|
|
}
|