zyx 2 years ago
parent
commit
0065f3cc28

+ 0 - 13
src/main/java/com/sxtvs/open/core/advice/APINoDataResponse.java

@@ -1,13 +0,0 @@
-package com.sxtvs.open.core.advice;
-
-import lombok.Data;
-
-@Data
-public class APINoDataResponse  {
-
-    private String message;
-
-    private Integer code;
-
-
-}

+ 7 - 0
src/main/java/com/sxtvs/open/core/advice/APIResponse.java

@@ -1,5 +1,6 @@
 package com.sxtvs.open.core.advice;
 
+import com.sxtvs.open.core.auth.HttpContextUtil;
 import lombok.Data;
 
 @Data
@@ -10,4 +11,10 @@ public class APIResponse {
     private Integer code;
 
     private Object data;
+
+    private String requestId;
+
+    public APIResponse() {
+        this.requestId = HttpContextUtil.mustRequestId();
+    }
 }

+ 15 - 26
src/main/java/com/sxtvs/open/core/advice/APIResponseAdvice.java

@@ -26,7 +26,7 @@ import java.lang.annotation.Annotation;
 import java.util.List;
 
 /**
- *  这个类不要加业务逻辑
+ * 这个类不要加业务逻辑
  */
 @RestControllerAdvice
 @Slf4j
@@ -37,18 +37,18 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
 
     //自动处理APINoDataResponse,包装为APINoDataResponse
     @ExceptionHandler(BizException.class)
-    public APINoDataResponse handleBizException(HttpServletRequest request, BizException ex, HttpServletResponse response) {
+    public APIResponse handleBizException(HttpServletRequest request, BizException ex, HttpServletResponse response) {
         logger.warn("error", ex);
-        APINoDataResponse apiNoDataResponse = new APINoDataResponse();
+        APIResponse apiNoDataResponse = new APIResponse();
         apiNoDataResponse.setCode(ex.getErrorCode());
         apiNoDataResponse.setMessage(ex.getErrorMessage());
         return apiNoDataResponse;
     }
 
     @ExceptionHandler(MaxUploadSizeExceededException.class)
-    public APINoDataResponse handleException(HttpServletRequest request, MaxUploadSizeExceededException ex, HttpServletResponse response) {
+    public APIResponse handleException(HttpServletRequest request, MaxUploadSizeExceededException ex, HttpServletResponse response) {
         logger.warn("error", ex);
-        APINoDataResponse apiResponse = new APINoDataResponse();
+        APIResponse apiResponse = new APIResponse();
         apiResponse.setCode(-1);
         apiResponse.setMessage("文件长度过长");
         return apiResponse;
@@ -57,13 +57,12 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
 
     /**
      * 拦截未知的运行时异常
-     *
      */
     @ExceptionHandler(Throwable.class)
     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
-    public APINoDataResponse serverError(Throwable ex) {
+    public APIResponse serverError(Throwable ex) {
         logger.error("error", ex);
-        APINoDataResponse apiResponse = new APINoDataResponse();
+        APIResponse apiResponse = new APIResponse();
         apiResponse.setCode(-1);
         apiResponse.setMessage("服务器运行异常");
         return apiResponse;
@@ -71,7 +70,7 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
 
     @ExceptionHandler(MethodArgumentNotValidException.class)
     @ResponseStatus(HttpStatus.BAD_REQUEST)
-    public APINoDataResponse validationBodyException(MethodArgumentNotValidException exception) {
+    public APIResponse validationBodyException(MethodArgumentNotValidException exception) {
         StringBuilder sb = new StringBuilder();
         BindingResult result = exception.getBindingResult();
         StringBuilder message = new StringBuilder();
@@ -89,7 +88,7 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
             message.append("参数异常");
         }
         logger.warn("error", sb.toString());
-        APINoDataResponse apiResponse = new APINoDataResponse();
+        APIResponse apiResponse = new APIResponse();
         apiResponse.setCode(-1);
         apiResponse.setMessage(message.toString());
         return apiResponse;
@@ -104,7 +103,7 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
                 return false;
             }
         }
-        return returnType.getParameterType() != APIResponse.class && returnType.getParameterType() != APINoDataResponse.class
+        return returnType.getParameterType() != APIResponse.class
                 && AnnotationUtils.findAnnotation(returnType.getDeclaringClass(), NoAPIResponse.class) == null;
     }
 
@@ -124,21 +123,11 @@ public class APIResponseAdvice implements ResponseBodyAdvice<Object> {
             msg = responseMsg.value();
         }
 
-
-        if (null == body) {
-            APINoDataResponse apiResponse = new APINoDataResponse();
-
-            apiResponse.setCode(0);
-            apiResponse.setMessage(msg);
-            return apiResponse;
-        } else {
-            APIResponse apiResponse = new APIResponse();
-
-            apiResponse.setCode(0);
-            apiResponse.setMessage(msg);
-            apiResponse.setData(body);
-            return apiResponse;
-        }
+        APIResponse apiResponse = new APIResponse();
+        apiResponse.setCode(0);
+        apiResponse.setMessage(msg);
+        apiResponse.setData(body);
+        return apiResponse;
 
     }
 

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

@@ -13,6 +13,13 @@ public class HttpContextUtil {
                 .map(Object::toString);
     }
 
+    public static String mustRequestId() {
+        return Optional.ofNullable(RequestContextHolder.getRequestAttributes())
+                .map(x -> x.getAttribute("requestId", RequestAttributes.SCOPE_REQUEST))
+                .map(Object::toString)
+                .orElse("");
+    }
+
     public static void setRequestId() {
 
         Optional.ofNullable(RequestContextHolder.getRequestAttributes())

+ 1 - 0
src/main/java/com/sxtvs/open/core/conf/Constant.java

@@ -3,6 +3,7 @@ package com.sxtvs.open.core.conf;
 public class Constant {
     public static final String AES_KEY = "2329065635414178";
 
+
     public static final int TOKEN_PARSE_ERROR = 400;
 
     public static final int TOKEN_EXPIRE_ERROR = 401;

+ 2 - 0
src/main/java/com/sxtvs/open/core/conf/WebConfig.java

@@ -28,4 +28,6 @@ public class WebConfig implements WebMvcConfigurer {
         return new LoginInterceptor();
     }
 
+
+
 }