Parcourir la source

拼接逻辑删除优化

24282 il y a 1 an
Parent
commit
907e61631d

+ 1 - 11
ruoyi-common/src/main/java/com/ruoyi/common/annotation/LogicIgnore.java

@@ -11,15 +11,5 @@ import java.lang.annotation.*;
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface LogicIgnore {
-
-    /**
-     * 排除表名
-     */
-    String[] tableName() default {};
-
-    /**
-     * 排除表别名
-     */
-    String[] alias() default {};
-
+    
 }

+ 2 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/aspect/LogicAspect.java

@@ -23,6 +23,7 @@ public class LogicAspect {
      */
     @Around("@annotation(logicIgnore) || @within(logicIgnore)")
     public Object around(ProceedingJoinPoint point, LogicIgnore logicIgnore) throws Throwable {
+        Boolean logicHolder = LogicHolder.getLogicHolder();
         try {
             // 开启忽略
             LogicHolder.setLogicHolder(true);
@@ -30,7 +31,7 @@ public class LogicAspect {
             return point.proceed();
         } finally {
             // 关闭忽略
-            LogicHolder.clear();
+            LogicHolder.setLogicHolder(logicHolder);
         }
     }
 

+ 7 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/mybatis/interceptor/LogicInterceptor.java

@@ -133,6 +133,9 @@ public class LogicInterceptor extends BaseMultiTableInnerInterceptor implements
 
         // 处理删除
         if (sct == SqlCommandType.DELETE) {
+            if (LogicHolder.getLogicHolder()) {
+                return;
+            }
             PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql();
             String sql = mpBs.sql();
             if (sql.trim().toLowerCase().startsWith("update")) {
@@ -169,6 +172,10 @@ public class LogicInterceptor extends BaseMultiTableInnerInterceptor implements
 
     @Override
     protected void processSelect(Select select, int index, String sql, Object obj) {
+        if (LogicHolder.getLogicHolder()) {
+            return;
+        }
+
         final String whereSegment = (String) obj;
         processSelectBody(select.getSelectBody(), whereSegment);
         List<WithItem> withItemsList = select.getWithItemsList();