package kf.buss.om.opsserver.interceptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import kf.buss.om.opsserver.utils.JSONUtils;
import kf.plt.service.common.msg.ObjectRestResponse;
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.http.server.ServletServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
/**
* @author wx
* @Description:
* @Title:
* @Package
* @date 2021/2/8 11:22
*/
@ControllerAdvice
public class getResponseAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
/**
* @Description: 该方法是拦截到返回值(即response中的数据),然后操作返回值,并返回
*
**/
@Override
public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
System.out.println("进入beforeBodyWrite方法");
ServletServerHttpResponse responseTemp = (ServletServerHttpResponse) serverHttpResponse;
HttpServletResponse response = responseTemp.getServletResponse();
if (body instanceof ObjectRestResponse) {
ObjectRestResponse result = (ObjectRestResponse) body;
Object data = result.getMessage();
// JSONObject jsonObject = JSONObject.parseObject(JSON.toJSON(result).toString());
// String status = (String) jsonObject.get("status");
// if (status.equals("200")){
// //resultJson是data对象
// Object resultData = jsonObject.get("data");
// if (resultData != null){
// //判断是否JSON字符串
// String s = JSON.toJSON(resultData).toString();
// boolean isJsonString = JSONUtils.isJSONString(s);
// if (isJsonString){
// JSONObject dataJson = JSONObject.parseObject(JSON.toJSON(s).toString());
// dataJson.put("status","200");
// jsonObject.put("data",dataJson);
// }else {
// //不是JSON字符串就加一个DATA进去
// HashMap<String, Object> map = new HashMap<>();
// map.put("status","200");
// jsonObject.put("data",map);
// }
// }else {
// HashMap<String, Object> map = new HashMap<>();
// map.put("status","200");
// jsonObject.put("data",map);
// }
// }
// body = JSONObject.parse(jsonObject.toJSONString());
System.out.println("拦截返回值:============"+data.toString());
}
return body;
}
}