疯狂的狮子li
2021-10-27 695cb6d76b838b1e4cb161bae335faa948dca12a
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -4,21 +4,14 @@
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.framework.web.service.TokenService;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.Map;
/**
@@ -60,32 +53,19 @@
    */
   public static final String DATA_SCOPE = "dataScope";
   // 配置织入点
   @Pointcut("@annotation(com.ruoyi.common.annotation.DataScope)")
   public void dataScopePointCut() {
   }
   @Before("dataScopePointCut()")
   public void doBefore(JoinPoint point) throws Throwable {
   @Before("@annotation(controllerDataScope)")
   public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
      clearDataScope(point);
      handleDataScope(point);
      handleDataScope(point, controllerDataScope);
   }
   protected void handleDataScope(final JoinPoint joinPoint) {
      // 获得注解
      DataScope controllerDataScope = getAnnotationLog(joinPoint);
      if (controllerDataScope == null) {
         return;
      }
   protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope) {
      // 获取当前的用户
      LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
      if (StringUtils.isNotNull(loginUser)) {
         SysUser currentUser = loginUser.getUser();
         // 如果是超级管理员,则不过滤数据
         if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
            dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
               controllerDataScope.userAlias(), controllerDataScope.isUser());
         }
      SysUser currentUser = SecurityUtils.getUser();
      // 如果是超级管理员,则不过滤数据
      if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
         dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
            controllerDataScope.userAlias(), controllerDataScope.isUser());
      }
   }
@@ -133,20 +113,6 @@
      if (StringUtils.isNotBlank(sqlString.toString())) {
         putDataScope(joinPoint, sqlString.substring(4));
      }
   }
   /**
    * 是否存在注解,如果存在就获取
    */
   private DataScope getAnnotationLog(JoinPoint joinPoint) {
      Signature signature = joinPoint.getSignature();
      MethodSignature methodSignature = (MethodSignature) signature;
      Method method = methodSignature.getMethod();
      if (method != null) {
         return method.getAnnotation(DataScope.class);
      }
      return null;
   }
   /**