liubo %!s(int64=3) %!d(string=hai) anos
pai
achega
866bd431b1

+ 52 - 0
zd-common/common-core/src/main/java/com/zd/common/core/aspect/ResponseAdvice.java

@@ -0,0 +1,52 @@
+package com.zd.common.core.aspect;
+
+import com.zd.model.domain.AjaxResult;
+import com.zd.model.domain.R;
+import com.zd.model.domain.ResultData;
+import com.zd.model.page.TableDataInfo;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
+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 java.lang.reflect.Type;
+import java.util.Map;
+
+/**
+ * 返回值增强器
+ *
+ * @Author: zhoupan
+ * @Date: 2021/09/09/10:34
+ * @Description:
+ */
+@RestControllerAdvice
+@ConditionalOnMissingClass("ZdGatewayApplication")
+public class ResponseAdvice implements ResponseBodyAdvice<Object> {
+
+    @Override
+    public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
+        Type type = methodParameter.getGenericParameterType();
+        return !type.equals(TableDataInfo.class) &&
+                !type.equals(AjaxResult.class) &&
+                !type.equals(ResultData.class) &&
+                !type.equals(R.class) &&
+                !type.equals(String.class);
+    }
+
+    @Override
+    public Object beforeBodyWrite(Object o,
+                                  MethodParameter methodParameter, MediaType mediaType,
+                                  Class<? extends HttpMessageConverter<?>> aClass,
+                                  ServerHttpRequest serverHttpRequest,
+                                  ServerHttpResponse serverHttpResponse) {
+
+        if (methodParameter.getMethod().getName().equals("error")) {
+            return ResultData.fail(((Map<String, Object>) o).get("error").toString());
+        }
+        return ResultData.success(o);
+    }
+}