package cc.mrbird.febs.common.advise; import cc.mrbird.febs.common.contants.AppContants; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import com.alibaba.fastjson.JSONObject; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; /** * @author wzy * @date 2022-06-14 **/ @ControllerAdvice public class MyResponseBodyAdvise implements ResponseBodyAdvice { @Override public boolean supports(MethodParameter methodParameter, Class aClass) { return true; } @Override public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { String name = methodParameter.getMethod().getName(); if("findPlatformBannerList".equals(name)){ return o; } if("newsDetails".equals(name)){ return o; } if("findNews".equals(name)){ return o; } if("findNewsInPage".equals(name)){ return o; } if("findNewsInfoCategory".equals(name)){ return o; } if (!AppContants.ENCRYPT_METHOD.contains(name)) { return o; } return SecureUtil.rsa(AppContants.REQ_PRIVATE_KEY, AppContants.REQ_PUBLIC_KEY) .encryptBase64(JSONObject.toJSONString(o), KeyType.PublicKey); } }