content: 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();
      }
  
  }
  