From ecf4fbb68445cf412d5e946f67f92c9928df8273 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 22 八月 2022 16:53:16 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0'

---
 src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
new file mode 100644
index 0000000..e1088e5
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/GlobalResponseAdvice.java
@@ -0,0 +1,53 @@
+package com.genersoft.iot.vmp.conf;
+
+import com.alibaba.fastjson.JSON;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
+import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+/**
+ * 鍏ㄥ眬缁熶竴杩斿洖缁撴灉
+ * @author lin
+ */
+@RestControllerAdvice
+public class GlobalResponseAdvice implements ResponseBodyAdvice<Object> {
+
+
+    @Override
+    public boolean supports(@NotNull MethodParameter returnType, @NotNull Class<? extends HttpMessageConverter<?>> converterType) {
+        return true;
+    }
+
+    @Override
+    public Object beforeBodyWrite(Object body, @NotNull MethodParameter returnType, @NotNull MediaType selectedContentType, @NotNull Class<? extends HttpMessageConverter<?>> selectedConverterType, @NotNull ServerHttpRequest request, @NotNull ServerHttpResponse response) {
+        // 鎺掗櫎api鏂囨。鐨勬帴鍙o紝杩欎釜鎺ュ彛涓嶉渶瑕佺粺涓�
+        String[] excludePath = {"/v3/api-docs","/api/v1","/index/hook"};
+        for (String path : excludePath) {
+            if (request.getURI().getPath().startsWith(path)) {
+                return body;
+            }
+        }
+
+        if (body instanceof WVPResult) {
+            return body;
+        }
+
+        if (body instanceof ErrorCode) {
+            ErrorCode errorCode = (ErrorCode) body;
+            return new WVPResult<>(errorCode.getCode(), errorCode.getMsg(), null);
+        }
+
+        if (body instanceof String) {
+            return JSON.toJSONString(WVPResult.success(body));
+        }
+
+        return WVPResult.success(body);
+    }
+}

--
Gitblit v1.8.0