diff --git a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Signature.java b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Signature.java index 23e3ca81..a51cd13c 100644 --- a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Signature.java +++ b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Signature.java @@ -39,4 +39,10 @@ public @interface Signature { */ Class>[] args(); + /** + * use regexp + * + * @return java method name is use regexp + */ + boolean useRegexp() default false; } diff --git a/easy-es-extension/src/main/java/org/dromara/easyes/extension/plugins/Plugin.java b/easy-es-extension/src/main/java/org/dromara/easyes/extension/plugins/Plugin.java index cc99d957..d2b2632e 100644 --- a/easy-es-extension/src/main/java/org/dromara/easyes/extension/plugins/Plugin.java +++ b/easy-es-extension/src/main/java/org/dromara/easyes/extension/plugins/Plugin.java @@ -3,6 +3,8 @@ package org.dromara.easyes.extension.plugins; import org.dromara.easyes.annotation.Intercepts; import org.dromara.easyes.annotation.Signature; +import org.dromara.easyes.common.exception.EasyEsException; +import org.dromara.easyes.common.utils.CollectionUtils; import org.dromara.easyes.common.utils.ExceptionUtils; import org.dromara.easyes.extension.context.Interceptor; import org.dromara.easyes.extension.context.Invocation; @@ -10,10 +12,9 @@ import org.dromara.easyes.extension.context.Invocation; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** *
@@ -76,14 +77,26 @@ public class Plugin implements InvocationHandler {
// 检查被@Signature标记的方法是否存在
for (Signature sig : sigs) {
Set
+ * Copyright © 2025 Hundsun Technologies Inc. All Rights Reserved
+ **/
+
+/**
+ * 测试方法使用正则表达式
+ *
+ * @author huangjy
+ */
+@Intercepts(
+ {
+ @Signature(type = BaseEsMapper.class, method = "select.*", args = {LambdaEsQueryWrapper.class}, useRegexp = true),
+ @Signature(type = BaseEsMapper.class, method = "search", args = {SearchRequest.class, RequestOptions.class}),
+ @Signature(type = BaseEsMapper.class, method = "insert|update", args = {Object.class}, useRegexp = true),
+ @Signature(type = BaseEsMapper.class, method = ".*ById", args = {Object.class}, useRegexp = true),
+ }
+)
+@Component
+public class TenantLineInnerInterceptor implements Interceptor {
+ @Override
+ public Object intercept(Invocation invocation) throws Throwable {
+ // TODO 这里可以写你自己的拦截处理逻辑,此处仅打印
+ // Object[] args = invocation.getArgs();
+ // Object arg = args[0];
+ // if (arg instanceof LambdaEsQueryWrapper) {
+ // LambdaEsQueryWrapper wrapper = ((LambdaEsQueryWrapper) args[0]);
+ // wrapper.eq("tenantId", "1");
+ // return invocation.proceed();
+ // }
+ System.out.println("增则拦截方法");
+ return invocation.proceed();
+ }
+}
diff --git a/easy-es-test/src/test/java/org/dromara/easyes/test/performance/PerformanceTest.java b/easy-es-test/src/test/java/org/dromara/easyes/test/performance/PerformanceTest.java
index fbf93815..e61f527d 100644
--- a/easy-es-test/src/test/java/org/dromara/easyes/test/performance/PerformanceTest.java
+++ b/easy-es-test/src/test/java/org/dromara/easyes/test/performance/PerformanceTest.java
@@ -15,11 +15,11 @@ import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
-import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.elasticsearch.xcontent.XContentType;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;