|
@@ -0,0 +1,38 @@
|
|
|
+package cn.com.qmth.markingaudit.support;
|
|
|
+
|
|
|
+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;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.qmth.boot.api.exception.ExceptionResponseEntity;
|
|
|
+
|
|
|
+@RestControllerAdvice
|
|
|
+public class ResponseAdvice implements ResponseBodyAdvice<Object> {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
|
|
|
+ Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,
|
|
|
+ ServerHttpResponse response) {
|
|
|
+ if (body instanceof String) {
|
|
|
+ return JSON.toJSONString(Result.of(body));
|
|
|
+ }
|
|
|
+ if (body instanceof Result) {
|
|
|
+ return body;
|
|
|
+ }
|
|
|
+ if (body instanceof ExceptionResponseEntity) {
|
|
|
+ ExceptionResponseEntity t = (ExceptionResponseEntity) body;
|
|
|
+ return Result.of(t.getMessage());
|
|
|
+ }
|
|
|
+ return Result.of(body);
|
|
|
+ }
|
|
|
+}
|