Quellcode durchsuchen

feat 主流云存储均以支持

vor 1 Monat
Ursprung
Commit
b146691933

+ 14 - 7
edu-travel-common/edu-travel-common-datasource/src/main/java/edu/travel/datasource/ProjectInterceptor.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
 import net.sf.jsqlparser.JSQLParserException;
 import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.Parenthesis;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
 import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
@@ -20,6 +19,8 @@ import org.apache.ibatis.mapping.BoundSql;
 import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.RowBounds;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
@@ -31,12 +32,20 @@ import java.sql.SQLException;
  *  处理基础架构中统一带上 project 字段
  */
 public class ProjectInterceptor implements InnerInterceptor {
+    Logger logger = LoggerFactory.getLogger(ProjectInterceptor.class);
     @Override
     public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
         HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
         String project = request.getHeader("project");
         if (StringUtils.isNotBlank(project)) {
             String originSql = boundSql.getSql();
+            logger.debug("origin sql: " + originSql);
+//            Map parameterMap = (Map) parameter;
+//            // QueryWrapper,实际上就是 在 代码查询的地方创建的QueryWrapper。
+//            Object obj = parameterMap.get("ew");
+//            QueryWrapper queryWrapper = (QueryWrapper) obj;
+//            queryWrapper.eq("project", project);
+//            queryWrapper.eq("delete_flag",0);
             //获取 Statement 执行sql的对象
             Statement statement = null;
             try {
@@ -61,15 +70,12 @@ public class ProjectInterceptor implements InnerInterceptor {
                 deleteFlag.setLeftExpression(new Column("delete_flag"));
                 deleteFlag.setRightExpression(new StringValue("0"));
                 String plainSelectString = plainSelect.toString();
-                if (plainSelectString.contains("project") && plainSelectString.contains("delete_flag")) {
-
-                }else {
-                    if (where != null) {
-                        AndExpression targetExpression = new AndExpression(projectEq, deleteFlag);
+                if (!plainSelectString.contains("project = ") && !plainSelectString.contains("delete_flag = ")) {
+                    AndExpression targetExpression = new AndExpression(projectEq, deleteFlag);
+                    if (plainSelectString.contains("where") || plainSelectString.contains("WHERE")) {
                         AndExpression andExpression = new AndExpression(where, targetExpression);
                         plainSelect.setWhere(andExpression);
                     }else {
-                        AndExpression targetExpression = new AndExpression(projectEq, deleteFlag);
                         plainSelect.setWhere(targetExpression);
                     }
 
@@ -79,6 +85,7 @@ public class ProjectInterceptor implements InnerInterceptor {
             }
             // 修改完成的sql 再设置回去
             PluginUtils.MPBoundSql mpBoundSql = PluginUtils.mpBoundSql(boundSql);
+            System.out.println(targetSql);
             mpBoundSql.sql(targetSql);
 
         }