lizw il y a 3 ans
Parent
commit
adbadcf230

+ 24 - 13
gateway-server/src/main/java/com/galaxis/wms/filter/SelectRouteGlobalFilter.java

@@ -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;

+ 7 - 0
gateway-server/src/main/java/com/galaxis/wms/utils/ExchangeUtils.java

@@ -24,6 +24,8 @@ public class ExchangeUtils {
         serverHttpRequest.getHeaders().forEach((name, values) -> headers.put(name, new ArrayList<>(values)));
         final MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>(serverHttpRequest.getCookies().size());
         cookies.addAll(serverHttpRequest.getCookies());
+        final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>(serverHttpRequest.getQueryParams().size());
+        queryParams.addAll(serverHttpRequest.getQueryParams());
         ServerHttpRequest newRequest = new ServerHttpRequestDecorator(serverHttpRequest) {
             @NonNull
             @Override
@@ -36,6 +38,11 @@ public class ExchangeUtils {
             public MultiValueMap<String, HttpCookie> getCookies() {
                 return cookies;
             }
+
+            @Override
+            public MultiValueMap<String, String> getQueryParams() {
+                return queryParams;
+            }
         };
         return exchange.mutate().request(newRequest).build();
     }