作者 朱兆平

bug-fix:

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

Signed-off-by: mrz <17966059@qq.com>
... ... @@ -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
... ...