增加 resttemplate 代理配置,支持 http , socks5 两种,通过配置 resttemplate.proxy.{host, port, type} 定义
diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties
index 6fa530b..3b2dd4a 100644
--- a/config/application-devel-pg-local.properties
+++ b/config/application-devel-pg-local.properties
@@ -29,3 +29,6 @@
 spring.cloud.consul.enabled=false
 spring.cloud.consul.host=172.28.201.70
 spring.cloud.consul.port=8500
+resttemplate.proxy.type=http
+resttemplate.proxy.host=127.0.0.1
+resttemplate.proxy.port=1087
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index 7e2fb15..e256b06 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -5,10 +5,12 @@
 import net.javacrumbs.shedlock.core.LockProvider
 import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.beans.factory.annotation.Value
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
 import org.springframework.boot.autoconfigure.data.redis.RedisProperties
 import org.springframework.boot.builder.SpringApplicationBuilder
+import org.springframework.boot.context.properties.ConfigurationProperties
 import org.springframework.boot.web.servlet.ServletComponentScan
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
 import org.springframework.cache.annotation.EnableCaching
@@ -28,7 +30,10 @@
 import org.springframework.http.client.ClientHttpRequestFactory
 import org.springframework.http.client.SimpleClientHttpRequestFactory
 import org.springframework.scheduling.annotation.EnableScheduling
+import org.springframework.stereotype.Component
 import org.springframework.web.client.RestTemplate
+import java.net.InetSocketAddress
+import java.net.Proxy
 
 
 @Configuration
@@ -79,11 +84,30 @@
 
 @Configuration
 class RestTemplateConfig {
+    @Component
+    @ConfigurationProperties("resttemplate.proxy")
+    class RestTemplateProxyConfig {
+        @Value("\${type:}")
+        lateinit var type: String
+        @Value("\${host:}")
+        lateinit var host: String
+        @Value("\${port:0}")
+        var port: Int = 0
+    }
+
     @Bean
-    fun simpleClientHttpRequestFactory(): SimpleClientHttpRequestFactory {
+    fun simpleClientHttpRequestFactory(proxyConfig: RestTemplateProxyConfig): SimpleClientHttpRequestFactory {
         val factory = SimpleClientHttpRequestFactory()
         factory.setConnectTimeout(15000)
         factory.setReadTimeout(5000)
+        if (proxyConfig.type.isNotEmpty()) {
+            val proxyType = when (proxyConfig.type) {
+                "http" -> Proxy.Type.HTTP
+                "socks5" -> Proxy.Type.SOCKS
+                else -> Proxy.Type.DIRECT
+            }
+            factory.setProxy(Proxy(proxyType, InetSocketAddress(proxyConfig.host, proxyConfig.port)))
+        }
         return factory
     }