|
|
@@ -1,69 +0,0 @@
|
|
|
-package com.lxq.common.excel.config;
|
|
|
-
|
|
|
-import cn.hutool.core.text.CharSequenceUtil;
|
|
|
-import com.lxq.common.excel.http.RemoteSysService;
|
|
|
-import jakarta.servlet.http.HttpServletRequest;
|
|
|
-import lombok.RequiredArgsConstructor;
|
|
|
-import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
-import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction;
|
|
|
-import org.springframework.context.annotation.Bean;
|
|
|
-import org.springframework.context.annotation.Configuration;
|
|
|
-import org.springframework.http.HttpHeaders;
|
|
|
-import org.springframework.web.context.request.RequestContextHolder;
|
|
|
-import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
-import org.springframework.web.reactive.function.client.ClientRequest;
|
|
|
-import org.springframework.web.reactive.function.client.WebClient;
|
|
|
-import org.springframework.web.reactive.function.client.support.WebClientAdapter;
|
|
|
-import org.springframework.web.service.invoker.HttpServiceProxyFactory;
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * 系统假装客户端配置
|
|
|
- *
|
|
|
- * @author 没秃顶的码农
|
|
|
- * @date 2024-07-26
|
|
|
- */
|
|
|
-@Configuration
|
|
|
-@RequiredArgsConstructor
|
|
|
-public class ExcelSystemFeignClientConfiguration {
|
|
|
-
|
|
|
- /**
|
|
|
- * 负载均衡器
|
|
|
- */
|
|
|
- private final ReactorLoadBalancerExchangeFilterFunction reactorLoadBalancerExchangeFilterFunction;
|
|
|
-
|
|
|
- private static final String SERVICE_NAME = ServiceNameConstants.CLIENT_NAME + ServiceNameConstants.SYSTEM_SERVICE;
|
|
|
-
|
|
|
- @Bean("ExcelSystemFeignClient")
|
|
|
- public WebClient oauthRequestInterceptor() {
|
|
|
-
|
|
|
- return WebClient.builder()
|
|
|
- // 给请求添加过滤器,添加自定义的认证头
|
|
|
- .filter((request, next) -> {
|
|
|
- ClientRequest.Builder filtered = ClientRequest.from(request);
|
|
|
-
|
|
|
- ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
|
|
|
- .getRequestAttributes();
|
|
|
- // 不是web请求不传递token
|
|
|
- if (requestAttributes != null) {
|
|
|
- HttpServletRequest httpServletRequest = requestAttributes.getRequest();
|
|
|
- String token = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION);
|
|
|
- if (!CharSequenceUtil.isBlank(token)) {
|
|
|
- // 传递token
|
|
|
- filtered.header(HttpHeaders.AUTHORIZATION, token);
|
|
|
- }
|
|
|
- }
|
|
|
- return next.exchange(filtered.build());
|
|
|
- }).filter(reactorLoadBalancerExchangeFilterFunction)
|
|
|
- .baseUrl(SERVICE_NAME)
|
|
|
- .build();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Bean("ExcelRemoteSysService")
|
|
|
- RemoteSysService remoteSysService(@Qualifier("ExcelSystemFeignClient") WebClient client) {
|
|
|
- HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).blockTimeout(ServiceNameConstants.REQ_TIMEOUT).build();
|
|
|
- return factory.createClient(RemoteSysService.class);
|
|
|
- }
|
|
|
-
|
|
|
-}
|