--- /dev/null
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
+
+import feign.Client;
+
+public class BaseFeignClientConfiguration {
+
+ @Bean
+ public Client feignClient(
+ @Value("${sw-backend-base-api.client-auth.enabled:false}") boolean enabled,
+ @Value("${sw-backend-base-api.client-auth.key-password:}") String keyPassword,
+ @Value("${sw-backend-base-api.client-auth.key-store:}") String keyStore,
+ @Value("${sw-backend-base-api.client-auth.key-store-password:}") String keyStorePassword,
+ @Value("${sw-backend-base-api.client-auth.trust-store:}") String trustStore,
+ @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword) {
+
+ return FeignClientBuilder.builder()
+ .enabled(enabled)
+ .keyPassword(keyPassword)
+ .keyStore(keyStore)
+ .keyStorePassword(keyStorePassword)
+ .trustStore(trustStore)
+ .trustStorePassword(trustStorePassword)
+ .build()
+ .client();
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.v1.admin;
+
+import feign.hystrix.FallbackFactory;
+
+public class AdminAccountRemoteFallbackFactory implements FallbackFactory<AdminAccountRemoteFeignClient> {
+
+ @Override
+ public AdminAccountRemoteFeignClient create(Throwable cause) {
+ return new AdminAccountRemoteFeignClient() {
+
+ };
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.v1.admin;
+
+import org.springframework.cloud.openfeign.FeignClient;
+
+import com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration.BaseFeignClientConfiguration;
+
+@FeignClient(
+ configuration = {BaseFeignClientConfiguration.class},
+ name = "base-admin-account-remote-feign-client",
+ url = "${sw-backend-base-api.uri}/v1/admin/accounts",
+ fallbackFactory = AdminAccountRemoteFallbackFactory.class
+)
+public interface AdminAccountRemoteFeignClient {
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
+
+import feign.Client;
+
+public class BizFeignClientConfiguration {
+
+ @Bean
+ public Client feignClient(
+ @Value("${sw-backend-biz-api.client-auth.enabled:false}") boolean enabled,
+ @Value("${sw-backend-biz-api.client-auth.key-password:}") String keyPassword,
+ @Value("${sw-backend-biz-api.client-auth.key-store:}") String keyStore,
+ @Value("${sw-backend-biz-api.client-auth.key-store-password:}") String keyStorePassword,
+ @Value("${sw-backend-biz-api.client-auth.trust-store:}") String trustStore,
+ @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword) {
+
+ return FeignClientBuilder.builder()
+ .enabled(enabled)
+ .keyPassword(keyPassword)
+ .keyStore(keyStore)
+ .keyStorePassword(keyStorePassword)
+ .trustStore(trustStore)
+ .trustStorePassword(trustStorePassword)
+ .build()
+ .client();
+ }
+
+}
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz;
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin;
import org.springframework.stereotype.Component;
import feign.hystrix.FallbackFactory;
@Component
-public class BizRemoteFallbackFactory implements FallbackFactory<BizRemoteFeignClient> {
+public class AdminBizRemoteFallbackFactory implements FallbackFactory<AdminBizRemoteFeignClient> {
@Override
- public BizRemoteFeignClient create(Throwable cause) {
- return new BizRemoteFeignClient() {
+ public AdminBizRemoteFeignClient create(Throwable cause) {
+ return new AdminBizRemoteFeignClient() {
@Override
public JSONObject query(boolean loadAll, int pageIndex, int pageSize) {
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz;
+package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import com.alibaba.fastjson.JSONObject;
import com.supwisdom.institute.backend.admin.aggr.apis.model.biz.Biz;
+import com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration.BizFeignClientConfiguration;
@FeignClient(
- name = "biz-biz-remote-feign-client",
+ configuration = {BizFeignClientConfiguration.class},
+ name = "biz-admin-biz-remote-feign-client",
url = "${sw-backend-biz-api.uri}/v1/admin/biz",
- fallbackFactory = BizRemoteFallbackFactory.class
+ fallbackFactory = AdminBizRemoteFallbackFactory.class
)
-public interface BizRemoteFeignClient {
+public interface AdminBizRemoteFeignClient {
@RequestMapping(method = RequestMethod.GET)
JSONObject query(
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.BizRemoteFeignClient;
+import com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin.AdminBizRemoteFeignClient;
import com.supwisdom.institute.backend.admin.aggr.apis.vo.biz.response.data.BizQueryResponseData;
@Service
public class BizService {
@Autowired
- private BizRemoteFeignClient bizRemote;
+ private AdminBizRemoteFeignClient bizRemote;
public BizQueryResponseData query(boolean loadAll, int pageIndex, int pageSize) {
##
# server url for feign
#
-sw-backend-base-api:
+sw-backend-base-api:
uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
client-auth:
- enabled: ${CASSERVER_SA_API_CLIENT_AUTH_ENABLED:true}
- key-password: ${CASSERVER_SA_API_CLIENT_AUTH_KEY_PASSWORD:}
- key-store: ${CASSERVER_SA_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
- key-store-password: ${CASSERVER_SA_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
- trust-store: ${CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
- trust-store-password: ${CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-
-sw-backend-system-api.uri: http://localhost:8081
-sw-backend-biz-api.uri: http://localhost:8081
+ enabled: ${SW_BACKEND_BASE_API_CLIENT_AUTH_ENABLED:true}
+ key-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEY_PASSWORD:}
+ key-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+ key-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+ trust-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+ trust-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-sw-backend-api-admin:
- server:
- url: ${CASSERVER_SA_API_SERVER_URL:https://sw-backend}
+sw-backend-system-api:
+ uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
client-auth:
- enabled: ${CASSERVER_SA_API_CLIENT_AUTH_ENABLED:true}
- key-password: ${CASSERVER_SA_API_CLIENT_AUTH_KEY_PASSWORD:}
- key-store: ${CASSERVER_SA_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
- key-store-password: ${CASSERVER_SA_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
- trust-store: ${CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
- trust-store-password: ${CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
+ enabled: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_ENABLED:true}
+ key-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEY_PASSWORD:}
+ key-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+ key-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+ trust-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+ trust-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
+
+sw-backend-biz-api:
+ uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
+ client-auth:
+ enabled: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_ENABLED:true}
+ key-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEY_PASSWORD:}
+ key-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+ key-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+ trust-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+ trust-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
server:
- port: 8082
+ port: 8081
ssl:
enabled: false
time-zone: Asia/Shanghai
+feign:
+ client:
+ config:
+ default:
+ #errorDecoder: com.supwisdom.leaveschool.common.config.BaseExceptionErrorDecoder
+ connectTimeout: 12000
+ readTimeout: 12000
+ loggerLevel: full
+ hystrix:
+ enabled: true
+ httpclient:
+ enabled: true
+
+hystrix:
+ command:
+ default:
+ execution:
+ timeout:
+ enabled: true
+ isolation:
+ thread:
+ timeoutInMilliseconds: 12000
+
+
##
# infras.online-doc
#
##
# server url for feign
#
-sw-backend-base-api.uri: http://localhost:8081
-sw-backend-system-api.uri: http://localhost:8081
-sw-backend-biz-api.uri: http://localhost:8081
+sw-backend-base-api:
+ uri: http://localhost:8082
+
+sw-backend-system-api:
+ uri: http://localhost:8082
+
+sw-backend-biz-api:
+ uri: http://localhost:8082
com.supwisdom: INFO
+spring:
+ jackson:
+ time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
+
+
+##
+# spring cloud gateway
+#
+ cloud:
+ gateway:
+ metrics:
+ enabled: true
+ routes:
+ - id: aggr-api
+ uri: ${SW_BACKEND_AGGR_API_URI:https://sw-backend-admin-aggr}
+ predicates:
+ - Path=/api/aggr/**
+ filters:
+ - RewritePath=/api/aggr/(?<suffix>.*), /$\{suffix}
+ - id: base-api
+ uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
+ predicates:
+ - Path=/api/base/**
+ filters:
+ - RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
+ - id: system-api
+ uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
+ predicates:
+ - Path=/api/system/**
+ filters:
+ - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
+ - id: biz-api
+ uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
+ predicates:
+ - Path=/api/biz/**
+ filters:
+ - RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
+
+
##
# infras.online-doc
#
enabled: true
routes:
- id: aggr-api
- uri: http://localhost:8082
+ uri: http://localhost:8081
predicates:
- Path=/api/aggr/**
filters:
- RewritePath=/api/aggr/(?<suffix>.*), /$\{suffix}
- id: base-api
- uri: http://localhost:8081
+ uri: http://localhost:8082
predicates:
- Path=/api/base/**
filters:
- RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
+ - id: system-api
+ uri: http://localhost:8082
+ predicates:
+ - Path=/api/system/**
+ filters:
+ - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
- id: biz-api
- uri: http://localhost:8081
+ uri: http://localhost:8082
predicates:
- Path=/api/biz/**
filters:
- RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
-feign:
- client:
- config:
- default:
- #errorDecoder: com.supwisdom.leaveschool.common.config.BaseExceptionErrorDecoder
- connectTimeout: 12000
- readTimeout: 12000
- loggerLevel: full
- hystrix:
- enabled: true
- httpclient:
- enabled: true
-
-hystrix:
- command:
- default:
- execution:
- timeout:
- enabled: true
- isolation:
- thread:
- timeoutInMilliseconds: 12000
-
-
##
# infras.online-doc
#
-package com.supwisdom.institute.backend.admin.aggr.configuration;
+package com.supwisdom.institute.backend.common.core.feign;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
+import lombok.extern.slf4j.Slf4j;
+
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import feign.Client;
-import lombok.extern.slf4j.Slf4j;
@Slf4j
-@Configuration
-public class FeignClientConfiguration {
+@lombok.Builder
+public class FeignClientBuilder {
+
+ private final boolean enabled;
+
+ private String keyPassword;
+ private String keyStore;
+ private String keyStorePassword;
+ private String trustStore;
+ private String trustStorePassword;
+
+ public Client client() {
- @Bean
- public Client feignClient(
- @Value("${cas-server-sa-api.client-auth.enabled:false}") boolean enabled,
- @Value("${cas-server-sa-api.client-auth.key-password:}") String keyPassword,
- @Value("${cas-server-sa-api.client-auth.key-store:}") String keyStore,
- @Value("${cas-server-sa-api.client-auth.key-store-password:}") String keyStorePassword,
- @Value("${cas-server-sa-api.client-auth.trust-store:}") String trustStore,
- @Value("${cas-server-sa-api.client-auth.trust-store-password:}") String trustStorePassword) {
-
if (!enabled) {
return new Client.Default(null, null);
}
server:
- port: 8081
+ port: 8082
ssl:
enabled: false