From c698a63d38add7fe43440099f59049b290006602 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 05 二月 2026 10:26:02 +0800
Subject: [PATCH] feat: 使用DefaultType替换RequestParam注解

---
 src/main/java/com/ruoyi/home/annotation/DefaultType.java    |   22 +++++++++++
 src/main/java/com/ruoyi/home/aspectj/DefaultTypeAspect.java |   40 ++++++++++++++++++++
 2 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/annotation/DefaultType.java b/src/main/java/com/ruoyi/home/annotation/DefaultType.java
new file mode 100644
index 0000000..5a83486
--- /dev/null
+++ b/src/main/java/com/ruoyi/home/annotation/DefaultType.java
@@ -0,0 +1,22 @@
+package com.ruoyi.home.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * <br>
+ * 缁熻绫诲瀷榛樿鍊兼敞瑙�
+ * 榛樿 type = 1
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/2/5
+ */
+
+@Target(ElementType.PARAMETER)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DefaultType {
+
+    String value() default "1";
+}
diff --git a/src/main/java/com/ruoyi/home/aspectj/DefaultTypeAspect.java b/src/main/java/com/ruoyi/home/aspectj/DefaultTypeAspect.java
new file mode 100644
index 0000000..ac473d6
--- /dev/null
+++ b/src/main/java/com/ruoyi/home/aspectj/DefaultTypeAspect.java
@@ -0,0 +1,40 @@
+package com.ruoyi.home.aspectj;
+
+import com.ruoyi.home.annotation.DefaultType;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Parameter;
+
+/**
+ * <br>
+ * 缁熻绫诲瀷榛樿鍊兼敞瑙e垏闈�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/2/5
+ */
+
+@Aspect
+@Component
+public class DefaultTypeAspect {
+
+    @Around("execution(* com.ruoyi.home.controller.*.*(.., @com.ruoyi.home.annotation.DefaultType (*), ..))")
+    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
+        Object[] args = joinPoint.getArgs();
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Parameter[] parameters = signature.getMethod().getParameters();
+
+        for (int i = 0; i < parameters.length; i++) {
+            DefaultType annotation = parameters[i].getAnnotation(DefaultType.class);
+            if (annotation != null && args[i] == null) {
+                args[i] = Integer.parseInt(annotation.value());
+            }
+        }
+        return joinPoint.proceed(args);
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3