|
@@ -1,11 +1,19 @@
|
|
package com.jkcredit.zuul.error;
|
|
package com.jkcredit.zuul.error;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.jkcredit.common.model.ResultObject;
|
|
import com.netflix.zuul.ZuulFilter;
|
|
import com.netflix.zuul.ZuulFilter;
|
|
import com.netflix.zuul.context.RequestContext;
|
|
import com.netflix.zuul.context.RequestContext;
|
|
|
|
+import com.netflix.zuul.exception.ZuulException;
|
|
import org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter;
|
|
import org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter;
|
|
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
|
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.UUID;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @author xusonglin
|
|
* @author xusonglin
|
|
* @version V1.0
|
|
* @version V1.0
|
|
@@ -14,26 +22,35 @@ import org.springframework.stereotype.Component;
|
|
public class PostErrorFilter extends SendErrorFilter {
|
|
public class PostErrorFilter extends SendErrorFilter {
|
|
@Override
|
|
@Override
|
|
public String filterType() {
|
|
public String filterType() {
|
|
- return FilterConstants.ERROR_TYPE;
|
|
|
|
|
|
+ return FilterConstants.POST_TYPE;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public int filterOrder() {
|
|
public int filterOrder() {
|
|
- return super.filterOrder();
|
|
|
|
|
|
+ return 10;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean shouldFilter() {
|
|
public boolean shouldFilter() {
|
|
RequestContext context = RequestContext.getCurrentContext();
|
|
RequestContext context = RequestContext.getCurrentContext();
|
|
ZuulFilter filter = (ZuulFilter) context.get("failed.filter");
|
|
ZuulFilter filter = (ZuulFilter) context.get("failed.filter");
|
|
- return (filter != null && filter.filterType().equals("post"));
|
|
|
|
|
|
+ return RequestContext.getCurrentContext().getResponseStatusCode() != 200;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Object run() {
|
|
public Object run() {
|
|
- RequestContext requestContext = RequestContext.getCurrentContext();
|
|
|
|
- RequestContext.getCurrentContext().setResponseStatusCode(500);
|
|
|
|
- Throwable throwable = requestContext.getThrowable();
|
|
|
|
- return super.run();
|
|
|
|
|
|
+ Object e = RequestContext.getCurrentContext().getThrowable();
|
|
|
|
+ if (e != null && e instanceof ZuulException) {
|
|
|
|
+ RequestContext.getCurrentContext().remove("throwable");
|
|
|
|
+ }
|
|
|
|
+ String requestId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())
|
|
|
|
+ + UUID.randomUUID().toString();
|
|
|
|
+ ResultObject resultObject = new ResultObject();
|
|
|
|
+ resultObject.setCode(500);
|
|
|
|
+ resultObject.setMessage("failed");
|
|
|
|
+ resultObject.setRequestId(requestId);
|
|
|
|
+ resultObject.setResult(new ArrayList<>());
|
|
|
|
+ RequestContext.getCurrentContext().setResponseBody(JSON.toJSONString(resultObject));
|
|
|
|
+ return resultObject;
|
|
}
|
|
}
|
|
}
|
|
}
|