diff --git a/pom.xml b/pom.xml
index c57922e..eb1fcef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,10 @@
mybatis-spring-boot-starter
2.3.1
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
diff --git a/src/main/java/com/durant/annotion/Independent.java b/src/main/java/com/durant/annotion/Independent.java
new file mode 100644
index 0000000..0b4238a
--- /dev/null
+++ b/src/main/java/com/durant/annotion/Independent.java
@@ -0,0 +1,19 @@
+package com.durant.annotion;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/10/3 22:02
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Independent {
+
+
+}
diff --git a/src/main/java/com/durant/aspect/IndependentAspect.java b/src/main/java/com/durant/aspect/IndependentAspect.java
new file mode 100644
index 0000000..f754774
--- /dev/null
+++ b/src/main/java/com/durant/aspect/IndependentAspect.java
@@ -0,0 +1,45 @@
+package com.durant.aspect;
+
+import com.durant.annotion.Independent;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/10/3 22:05
+ */
+@Aspect
+@Component
+public class IndependentAspect {
+ private Object result=null;
+ private Map resultMap=new ConcurrentHashMap<>();
+
+ @Around("@annotation(independent)")
+ public Object independent(ProceedingJoinPoint joinPoint, Independent independent) throws Throwable {
+
+ String id = generateId(joinPoint.getArgs());
+ if (resultMap.containsKey(id)){
+ System.out.println("不要重复提交请求");
+ return resultMap.get(id);
+ }
+
+ result= joinPoint.proceed();
+ resultMap.put(id,result);
+ return result;
+ }
+
+ private String generateId(Object[] args){
+ StringBuilder stringBuilder = new StringBuilder();
+ for (Object arg : args) {
+ stringBuilder.append(arg.hashCode());
+ }
+ return stringBuilder.toString();
+ }
+}
diff --git a/src/main/java/com/durant/controller/LoginController.java b/src/main/java/com/durant/controller/LoginController.java
index 819f057..41fef4f 100644
--- a/src/main/java/com/durant/controller/LoginController.java
+++ b/src/main/java/com/durant/controller/LoginController.java
@@ -1,13 +1,11 @@
package com.durant.controller;
import com.durant.Result;
+import com.durant.annotion.Independent;
import com.durant.dto.request.LoginReq;
import com.durant.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
/**
* @author 冯凯
@@ -16,16 +14,18 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2023/10/3 14:08
*/
@RestController
+@CrossOrigin(origins = "http://localhost:9528")
public class LoginController {
@Autowired
private LoginService loginService;
+ @Independent
@PostMapping("/user/login")
public Result userLogin(@RequestBody LoginReq loginReq){
Result loginReqResult = loginService.userLogin(loginReq);
- if (loginReqResult!=null){
- return Result.success(loginReq);
+ if (loginReqResult.getData()!=null){
+ return Result.success(loginReqResult.getData());
}
return Result.error();