|
|
@@ -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);
|
|
|
+ }
|
|
|
+}
|