作者 朱兆平

bug-fix:

1. 增加SQL拦截器对注解的适配

Signed-off-by: mrz <17966059@qq.com>
@@ -3,6 +3,7 @@ package com.tianbo.analysis.intercept; @@ -3,6 +3,7 @@ package com.tianbo.analysis.intercept;
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONArray; 4 import com.alibaba.fastjson.JSONArray;
5 import com.alibaba.fastjson.JSONObject; 5 import com.alibaba.fastjson.JSONObject;
  6 +import com.tianbo.analysis.annotation.DataPermission;
6 import com.tianbo.analysis.thread.SessionUserContext; 7 import com.tianbo.analysis.thread.SessionUserContext;
7 import lombok.extern.slf4j.Slf4j; 8 import lombok.extern.slf4j.Slf4j;
8 import net.sf.jsqlparser.expression.Expression; 9 import net.sf.jsqlparser.expression.Expression;
@@ -24,6 +25,7 @@ import org.apache.ibatis.session.ResultHandler; @@ -24,6 +25,7 @@ import org.apache.ibatis.session.ResultHandler;
24 import org.apache.ibatis.session.RowBounds; 25 import org.apache.ibatis.session.RowBounds;
25 import org.springframework.stereotype.Component; 26 import org.springframework.stereotype.Component;
26 27
  28 +import java.lang.reflect.Method;
27 import java.text.SimpleDateFormat; 29 import java.text.SimpleDateFormat;
28 import java.util.ArrayList; 30 import java.util.ArrayList;
29 import java.util.Date; 31 import java.util.Date;
@@ -51,6 +53,19 @@ public class DataPermissionInterceptor implements Interceptor { @@ -51,6 +53,19 @@ public class DataPermissionInterceptor implements Interceptor {
51 53
52 @Override 54 @Override
53 public Object intercept(Invocation invocation) throws Throwable { 55 public Object intercept(Invocation invocation) throws Throwable {
  56 + //判定要拦截的MAPPER 注解,使用了@DataPermission注解的才会被拦截
  57 + Method method = invocation.getMethod();
  58 + // 获取Mapper接口的Class对象
  59 + Class<?> mapperClass = method.getDeclaringClass();
  60 + // 检查类或方法是否标记了@DataPermission注解
  61 + boolean isAnnotated = method.isAnnotationPresent(DataPermission.class)
  62 + || mapperClass.isAnnotationPresent(DataPermission.class);
  63 +
  64 + // 如果没有标记注解,直接调用原方法
  65 + if (!isAnnotated){
  66 + return invocation.proceed();
  67 + }
  68 +
54 //从invocation搞到sql 69 //从invocation搞到sql
55 String processSql = ExecutorPluginUtils.getSqlByInvocation(invocation); 70 String processSql = ExecutorPluginUtils.getSqlByInvocation(invocation);
56 //复制原sql,用于产生新sql 71 //复制原sql,用于产生新sql