|
@@ -62,20 +62,31 @@ public class SelectRouteGlobalFilter implements GlobalFilter, Ordered {
|
|
|
final String path = request.getPath().value();
|
|
|
final String method = StringUtils.upperCase(request.getMethodValue());
|
|
|
log.info("--> [{}] {}", method, path);
|
|
|
- String expression = "//BWKEY[1]";
|
|
|
- String body = null;
|
|
|
- String bwkey = null;
|
|
|
String uri = null;
|
|
|
- try {
|
|
|
- body = exchange.getAttribute(GlobalConstant.CACHED_REQUEST_BODY_STR_ATTR);
|
|
|
- bwkey = XPathUtils.evaluate(body, expression);
|
|
|
- uri = wmsMapping.get(bwkey);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取物流中心编码失败 | bwkey={} | body=[\n{}\n]", bwkey, body, e);
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(uri)) {
|
|
|
- log.warn("未配置物流中心编码[{}]的服务端映射", bwkey);
|
|
|
- throw NotFoundException.create(true, "404 Not Found");
|
|
|
+ if (request.getQueryParams().containsKey("wsdl")) {
|
|
|
+ String bwkey = request.getQueryParams().getFirst("BWKEY");
|
|
|
+ if (StringUtils.isNotBlank(bwkey)) {
|
|
|
+ uri = wmsMapping.get(bwkey);
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(uri)) {
|
|
|
+ uri = SC;
|
|
|
+ }
|
|
|
+ request.getQueryParams().remove("BWKEY");
|
|
|
+ } else {
|
|
|
+ String expression = "//BWKEY[1]";
|
|
|
+ String body = null;
|
|
|
+ String bwkey = null;
|
|
|
+ try {
|
|
|
+ body = exchange.getAttribute(GlobalConstant.CACHED_REQUEST_BODY_STR_ATTR);
|
|
|
+ bwkey = XPathUtils.evaluate(body, expression);
|
|
|
+ uri = wmsMapping.get(bwkey);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取物流中心编码失败 | bwkey={} | body=[\n{}\n]", bwkey, body, e);
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(uri)) {
|
|
|
+ log.warn("未配置物流中心编码[{}]的服务端映射", bwkey);
|
|
|
+ throw NotFoundException.create(true, "404 Not Found");
|
|
|
+ }
|
|
|
}
|
|
|
final Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
|
|
|
assert route != null;
|