zyx 2 éve
szülő
commit
109562ddce

+ 24 - 0
src/main/java/com/sxtvs/open/core/auth/HttpContextUtil.java

@@ -0,0 +1,24 @@
+package com.sxtvs.open.core.auth;
+
+import cn.hutool.core.util.IdUtil;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+
+import java.util.Optional;
+
+public class HttpContextUtil {
+    public static Optional<String> getRequestId() {
+        return Optional.ofNullable(RequestContextHolder.getRequestAttributes())
+                .map(x -> x.getAttribute("requestId", RequestAttributes.SCOPE_REQUEST))
+                .map(Object::toString);
+    }
+
+    public static void setRequestId() {
+
+        Optional.ofNullable(RequestContextHolder.getRequestAttributes())
+                .ifPresent(x -> {
+                    var requestId = IdUtil.nanoId();
+                    x.setAttribute("requestId", requestId, RequestAttributes.SCOPE_REQUEST);
+                });
+    }
+}

+ 1 - 2
src/main/java/com/sxtvs/open/core/auth/LoginInterceptor.java

@@ -17,8 +17,7 @@ public class LoginInterceptor implements AsyncHandlerInterceptor {
         if (!(handler instanceof HandlerMethod)) {
             return true;
         }
-        var requestId = IdUtil.nanoId();
-        request.setAttribute("requestId",requestId);
+        HttpContextUtil.setRequestId();
         HandlerMethod handlerMethod = (HandlerMethod) handler;
         Method method = handlerMethod.getMethod();
 

+ 3 - 3
src/main/java/com/sxtvs/open/core/sls/AliyunLogger.java

@@ -6,6 +6,7 @@ import com.aliyun.openservices.aliyun.log.producer.ProducerConfig;
 import com.aliyun.openservices.aliyun.log.producer.ProjectConfig;
 import com.aliyun.openservices.aliyun.log.producer.errors.ProducerException;
 import com.aliyun.openservices.log.common.LogItem;
+import com.sxtvs.open.core.auth.HttpContextUtil;
 import jakarta.annotation.PostConstruct;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestAttributes;
@@ -74,9 +75,8 @@ public class AliyunLogger {
             item.PushBack("at", traceElement.getClassName() + "." + traceElement.getMethodName()
                     + "(" + traceElement.getFileName() + ":" + traceElement.getLineNumber() + ")");
         }
-        var requestIdOp = Optional.ofNullable(RequestContextHolder.getRequestAttributes())
-                .map(x -> x.getAttribute("requestId", RequestAttributes.SCOPE_REQUEST));
-        requestIdOp.ifPresent(x -> item.PushBack("requestId", x.toString()));
+        var requestIdOp = HttpContextUtil.getRequestId();
+        requestIdOp.ifPresent(x -> item.PushBack("requestId", x));
 
         int length = kv.length;
         if (length % 2 != 0) {