From babe96140173914aa19545334d1c0cf9ced38d58 Mon Sep 17 00:00:00 2001 From: yanglin Date: Wed, 5 Mar 2025 11:31:42 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3581:=20=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/ess/server/entity/EssLog.java | 12 ++++- .../ess/server/http/EssWebMvcConfigurer.java | 24 ++++++++++ .../ess/server/http/RequestNoInterceptor.java | 45 +++++++++++++++++++ .../nanopart/ess/server/utils/UUIDUtil.java | 26 +++++++++++ 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/EssWebMvcConfigurer.java create mode 100644 ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/RequestNoInterceptor.java create mode 100644 ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/utils/UUIDUtil.java diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssLog.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssLog.java index 4a415383..93d1f261 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssLog.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssLog.java @@ -1,6 +1,8 @@ package cn.axzo.nanopart.ess.server.entity; +import org.apache.commons.lang3.StringUtils; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; @@ -9,6 +11,7 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; import com.google.common.base.Throwables; import cn.axzo.nanopart.ess.api.utils.YesOrNo; +import cn.axzo.nanopart.ess.server.http.RequestNoInterceptor; import cn.axzo.pokonyan.config.mybatisplus.BaseEntity; import lombok.Getter; import lombok.Setter; @@ -49,10 +52,17 @@ public class EssLog extends BaseEntity { public void addLogContent(String key, Object value) { if (logContent == null) - logContent = new JSONObject(); + initializeLogContent(); logContent.put(key, value); } + private void initializeLogContent() { + logContent = new JSONObject(); + String requestNo = RequestNoInterceptor.getRequestNo(); + if (StringUtils.isNotBlank(requestNo)) + logContent.put("requestNo", requestNo); + } + public void setError(Exception exception) { if (exception == null) return; diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/EssWebMvcConfigurer.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/EssWebMvcConfigurer.java new file mode 100644 index 00000000..742a9243 --- /dev/null +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/EssWebMvcConfigurer.java @@ -0,0 +1,24 @@ +package cn.axzo.nanopart.ess.server.http; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import lombok.RequiredArgsConstructor; + +/** + * @author yanglin + */ +@Configuration +@RequiredArgsConstructor +public class EssWebMvcConfigurer implements WebMvcConfigurer { + + private final RequestNoInterceptor requestNoInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(requestNoInterceptor) + .addPathPatterns("/**"); + } + +} \ No newline at end of file diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/RequestNoInterceptor.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/RequestNoInterceptor.java new file mode 100644 index 00000000..cafbb846 --- /dev/null +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/http/RequestNoInterceptor.java @@ -0,0 +1,45 @@ + +package cn.axzo.nanopart.ess.server.http; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import cn.axzo.nanopart.ess.server.utils.UUIDUtil; +import lombok.NonNull; + +/** + * @author yanglin + */ +@Component +public class RequestNoInterceptor implements HandlerInterceptor { + + private static final ThreadLocal REQUEST_NO = new ThreadLocal<>(); + + @Override + public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, + @NonNull Object handler) { + REQUEST_NO.set(UUIDUtil.uuidString()); + return true; + } + + @Override + public void postHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, + @NonNull Object handler, ModelAndView modelAndView) { + REQUEST_NO.remove(); + } + + @Override + public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, + @NonNull Object handler, Exception ex) { + REQUEST_NO.remove(); + } + + public static String getRequestNo() { + return REQUEST_NO.get(); + } + +} diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/utils/UUIDUtil.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/utils/UUIDUtil.java new file mode 100644 index 00000000..e82834ca --- /dev/null +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/utils/UUIDUtil.java @@ -0,0 +1,26 @@ +package cn.axzo.nanopart.ess.server.utils; + +import java.util.UUID; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +/** + * UUID生成器 + * + * @author cold_blade + * @date 2023/10/5 + * @version 1.0 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class UUIDUtil { + + public static String uuidString() { + String str = UUID.randomUUID().toString(); + return str.replaceAll("-", ""); + } + + public static String uuidRawString() { + return UUID.randomUUID().toString(); + } +}