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