package cc.mrbird.febs.common.advise; import cc.mrbird.febs.common.utils.AppContants; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Value; 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 { @Value("${system.debug}") private boolean isDebug; @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("login".equals(name)){ return o; } if (!AppContants.ENCRYPT_METHOD.contains(name)) { return o; } RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY); return rsa.encryptBase64(JSONObject.toJSONString(o), KeyType.PublicKey); } }