lizw преди 3 години
родител
ревизия
c07075a539
променени са 1 файла, в които са добавени 19 реда и са изтрити 20 реда
  1. 19 20
      gateway-server/src/main/java/com/galaxis/wms/filter/SelectRouteGlobalFilter.java

+ 19 - 20
gateway-server/src/main/java/com/galaxis/wms/filter/SelectRouteGlobalFilter.java

@@ -65,28 +65,27 @@ public class SelectRouteGlobalFilter implements GlobalFilter, Ordered {
         String uri = null;
         String body = null;
         String bwkey = null;
-        if (request.getQueryParams().containsKey("wsdl")) {
-            bwkey = request.getQueryParams().getFirst("BWKEY");
-            if (StringUtils.isNotBlank(bwkey)) {
+        String expression = "//BWKEY[1]";
+        try {
+            body = exchange.getAttribute(GlobalConstant.CACHED_REQUEST_BODY_STR_ATTR);
+            bwkey = XPathUtils.evaluate(body, expression);
+            if (bwkey != null) {
                 uri = wmsMapping.get(bwkey);
             }
-            if (StringUtils.isBlank(uri)) {
-                uri = SC;
-            }
-            request.getQueryParams().remove("BWKEY");
-        } else {
-            String expression = "//BWKEY[1]";
-            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");
-            }
+        } 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");
+        }
+        boolean hasWsdl = request.getQueryParams().containsKey("wsdl");
+        if (hasWsdl && StringUtils.isBlank(body) && StringUtils.isBlank(uri)) {
+            uri = SC;
+        }
+        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;