...
|
...
|
@@ -3,6 +3,7 @@ package com.tianbo.analysis.intercept; |
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.tianbo.analysis.annotation.DataPermission;
|
|
|
import com.tianbo.analysis.thread.SessionUserContext;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import net.sf.jsqlparser.expression.Expression;
|
...
|
...
|
@@ -24,6 +25,7 @@ import org.apache.ibatis.session.ResultHandler; |
|
|
import org.apache.ibatis.session.RowBounds;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
...
|
...
|
@@ -51,6 +53,19 @@ public class DataPermissionInterceptor implements Interceptor { |
|
|
|
|
|
@Override
|
|
|
public Object intercept(Invocation invocation) throws Throwable {
|
|
|
//判定要拦截的MAPPER 注解,使用了@DataPermission注解的才会被拦截
|
|
|
Method method = invocation.getMethod();
|
|
|
// 获取Mapper接口的Class对象
|
|
|
Class<?> mapperClass = method.getDeclaringClass();
|
|
|
// 检查类或方法是否标记了@DataPermission注解
|
|
|
boolean isAnnotated = method.isAnnotationPresent(DataPermission.class)
|
|
|
|| mapperClass.isAnnotationPresent(DataPermission.class);
|
|
|
|
|
|
// 如果没有标记注解,直接调用原方法
|
|
|
if (!isAnnotated){
|
|
|
return invocation.proceed();
|
|
|
}
|
|
|
|
|
|
//从invocation搞到sql
|
|
|
String processSql = ExecutorPluginUtils.getSqlByInvocation(invocation);
|
|
|
//复制原sql,用于产生新sql
|
...
|
...
|
|