GlobalResponseAdvice.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.genersoft.iot.vmp.conf;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter;
  4. import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
  5. import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
  6. import org.jetbrains.annotations.NotNull;
  7. import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.core.MethodParameter;
  10. import org.springframework.http.MediaType;
  11. import org.springframework.http.converter.HttpMessageConverter;
  12. import org.springframework.http.server.ServerHttpRequest;
  13. import org.springframework.http.server.ServerHttpResponse;
  14. import org.springframework.web.bind.annotation.RestControllerAdvice;
  15. import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
  16. /**
  17. * 全局统一返回结果
  18. * @author lin
  19. */
  20. @RestControllerAdvice
  21. public class GlobalResponseAdvice implements ResponseBodyAdvice<Object> {
  22. @Override
  23. public boolean supports(@NotNull MethodParameter returnType, @NotNull Class<? extends HttpMessageConverter<?>> converterType) {
  24. return true;
  25. }
  26. @Override
  27. public Object beforeBodyWrite(Object body, @NotNull MethodParameter returnType, @NotNull MediaType selectedContentType, @NotNull Class<? extends HttpMessageConverter<?>> selectedConverterType, @NotNull ServerHttpRequest request, @NotNull ServerHttpResponse response) {
  28. // 排除api文档的接口,这个接口不需要统一
  29. String[] excludePath = {"/v3/api-docs","/api/v1","/index/hook","/api/video-"};
  30. for (String path : excludePath) {
  31. if (request.getURI().getPath().startsWith(path)) {
  32. return body;
  33. }
  34. }
  35. if (body instanceof WVPResult) {
  36. return body;
  37. }
  38. if (body instanceof ErrorCode) {
  39. ErrorCode errorCode = (ErrorCode) body;
  40. return new WVPResult<>(errorCode.getCode(), errorCode.getMsg(), null);
  41. }
  42. if (body instanceof String) {
  43. return JSON.toJSONString(WVPResult.success(body));
  44. }
  45. return WVPResult.success(body);
  46. }
  47. /**
  48. * 防止返回string时出错
  49. * @return
  50. */
  51. /*@Bean
  52. public HttpMessageConverters custHttpMessageConverter() {
  53. return new HttpMessageConverters(new FastJsonHttpMessageConverter());
  54. }*/
  55. }