mac %!s(int64=2) %!d(string=hai) anos
pai
achega
790921c970

+ 24 - 0
kxs-gateway/src/main/java/com/kxs/gateway/api/config/ResponseProperties.java

@@ -0,0 +1,24 @@
+package com.kxs.gateway.api.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.List;
+
+/**
+ * 过滤接口后转发到老系统
+ *
+ * @author : liukx
+ * @time : 2020/9/22 - 17:03
+ */
+@Data
+@ConfigurationProperties(prefix = "spring.response")
+public class ResponseProperties {
+
+    /**
+     * 需要过滤的接口
+     */
+    private List<String> filterUrl;
+
+
+}

+ 30 - 4
kxs-gateway/src/main/java/com/kxs/gateway/api/filter/ResponseFilter.java

@@ -1,9 +1,15 @@
 package com.kxs.gateway.api.filter;
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.kxs.gateway.api.config.GatewayConfigProperties;
+import com.kxs.gateway.api.config.ResponseProperties;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.reactivestreams.Publisher;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
 import org.springframework.core.Ordered;
@@ -34,19 +40,26 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.O
  */
 @Component
 @Slf4j
+@EnableConfigurationProperties(ResponseProperties.class)
+@RequiredArgsConstructor
 public class ResponseFilter implements GlobalFilter, Ordered {
 
+    private final ResponseProperties properties;
+
     @Override
     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
 
         ServerHttpRequest request = exchange.getRequest();
         String path = request.getURI().getPath();
-
+        // 排除不需要的路径
+        if(!properties.getFilterUrl().contains(path)){
+            return chain.filter(exchange);
+        }
         ServerHttpResponse originalResponse = exchange.getResponse();
 
         DataBufferFactory bufferFactory = originalResponse.bufferFactory();
 
-        ServerHttpResponseDecorator response = new ServerHttpResponseDecorator(originalResponse) {
+        new ServerHttpResponseDecorator(originalResponse) {
             @NotNull
             @Override
             public Mono<Void> writeWith(@NotNull Publisher<? extends DataBuffer> body) {
@@ -81,6 +94,7 @@ public class ResponseFilter implements GlobalFilter, Ordered {
                             String responseData = String.join("", list);;
 
                             log.info("responseData:" + responseData);
+                            sendMsg(request, responseData);
 
                             byte[] uppedContent = new String(responseData.getBytes(), StandardCharsets.UTF_8).getBytes();
 
@@ -103,8 +117,7 @@ public class ResponseFilter implements GlobalFilter, Ordered {
             }
 
         };
-        return chain.filter(exchange.mutate().response(response).build());
-
+        return chain.filter(exchange);
     }
 
 
@@ -112,4 +125,17 @@ public class ResponseFilter implements GlobalFilter, Ordered {
     public int getOrder() {
         return -1;
     }
+
+    private void sendMsg(ServerHttpRequest request, String data){
+        JSONObject parse = JSON.parseObject(data);
+        Integer status = parse.getInteger("status");
+        if(status == 1){
+            log.info("操作成功,发送消息");
+            //发送消息
+            String msg = parse.getString("msg");
+
+        }
+
+    }
+
 }