|
|
@@ -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");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|