From 7a8c5d704e6ae30e89154e272529b076fc318af2 Mon Sep 17 00:00:00 2001 From: akulikov Date: Sun, 28 May 2023 18:52:30 +0300 Subject: [PATCH] logs --- clearing-parent/gateway-api/pom.xml | 8 +++ .../gatewayapi/config/BeanConfiguration.java | 27 +++++++++ .../config/InboundServerSettings.java | 29 ++++++---- .../gatewayapi/config/RestTemplateConfig.java | 27 +++++++++ .../clearing/gatewayapi/config/WebConfig.java | 12 ++++ .../controller/GatewayController.java | 4 +- .../gatewayapi/errors/GatewayError.java | 23 ++++++++ .../exception/GatewayException.java | 5 ++ .../gatewayapi/logic/ProcessResult.java | 14 +++-- .../src/main/java/service/GatewayService.java | 57 +++++++++++++++++++ .../src/main/resources/application.properties | 7 ++- .../cud/gateway/GatewayTaskRequest.java | 16 ++++++ 12 files changed, 210 insertions(+), 19 deletions(-) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateConfig.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/errors/GatewayError.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/exception/GatewayException.java create mode 100644 clearing-parent/gateway-api/src/main/java/service/GatewayService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/GatewayTaskRequest.java diff --git a/clearing-parent/gateway-api/pom.xml b/clearing-parent/gateway-api/pom.xml index b0a04daec..639971466 100644 --- a/clearing-parent/gateway-api/pom.xml +++ b/clearing-parent/gateway-api/pom.xml @@ -53,6 +53,14 @@ ru.spcex.platform platform-enum + + ru.spcex.clearing + security-util + + + ru.spcex.clearing + clearing-validation + diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java new file mode 100644 index 000000000..c548394cc --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/BeanConfiguration.java @@ -0,0 +1,27 @@ +package ru.spcex.clearing.gatewayapi.config; + +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import ru.spcex.clearing.gatewayapi.errors.GatewayError; +import ru.spcex.clearing.util.security.UserRoleVerification; +import ru.spcex.clearing.util.services.IMDGMessageResolver; +import ru.spcex.platform.enumeration.UserRole; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.IMessageResolver; + +@Configuration +public class BeanConfiguration { + @Bean + public IMessageResolver messageResolver(ImdgProvider imdgProvider) { + return new IMDGMessageResolver(imdgProvider); + } + + @Bean + @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public UserRoleVerification userRoleVerification(ImdgProvider imdgProvider, IMessageResolver messageResolver) { + return new UserRoleVerification(imdgProvider, messageResolver, UserRole.Admin, GatewayError.UserVerifyDenial); + } + +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java index c330b1c2b..ee103a3c5 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java @@ -2,9 +2,10 @@ package ru.spcex.clearing.gatewayapi.config; public class InboundServerSettings { private String host; - private String path; + private String pathLOCM; + private String pathLOSC; private Integer port; - private Boolean ssl; + private Boolean enableSsl; public String getHost() { return host; @@ -22,19 +23,27 @@ public class InboundServerSettings { this.port = port; } - public Boolean getSsl() { - return ssl; + public Boolean getEnableSsl() { + return enableSsl; } - public void setSsl(Boolean ssl) { - this.ssl = ssl; + public void setEnableSsl(Boolean enableSsl) { + this.enableSsl = enableSsl; } - public String getPath() { - return path; + public String getPathLOCM() { + return pathLOCM; } - public void setPath(String path) { - this.path = path; + public void setPathLOCM(String pathLOCM) { + this.pathLOCM = pathLOCM; + } + + public String getPathLOSC() { + return pathLOSC; + } + + public void setPathLOSC(String pathLOSC) { + this.pathLOSC = pathLOSC; } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateConfig.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateConfig.java new file mode 100644 index 000000000..08d62366d --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateConfig.java @@ -0,0 +1,27 @@ +package ru.spcex.clearing.gatewayapi.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +import java.time.Duration; + +@Configuration +public class RestTemplateConfig { + private final RestTemplateBuilder builder; + + @Autowired + public RestTemplateConfig(RestTemplateBuilder builder) { + this.builder = builder; + } + + @Bean("rest-template") + public RestTemplate restTemplate() { + return builder + .setConnectTimeout(Duration.ofMillis(10000)) + .setReadTimeout(Duration.ofMillis(40000)) + .build(); + } +} \ No newline at end of file diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/WebConfig.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/WebConfig.java index 73ac6c244..32fe3fe31 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/WebConfig.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/WebConfig.java @@ -1,6 +1,8 @@ package ru.spcex.clearing.gatewayapi.config; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.filter.CommonsRequestLoggingFilter; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -8,4 +10,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @EnableWebMvc public class WebConfig implements WebMvcConfigurer { + @Bean + public CommonsRequestLoggingFilter loggingFilter() { + CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter(); + filter.setIncludePayload(true); + filter.setIncludeQueryString(true); + filter.setMaxPayloadLength(1000000000); + filter.setAfterMessagePrefix("Income request data: "); + return filter; + } + } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index 4c25aecd7..40e88e30f 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -108,7 +108,9 @@ public class GatewayController { return commonResponse; } - + public CommonResponse errorResponse() { + return null; + } private CommonResponse createResponse(BaseRequest request) { CommonResponse commonResponse = new CommonResponse(); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/errors/GatewayError.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/errors/GatewayError.java new file mode 100644 index 000000000..5f48ca709 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/errors/GatewayError.java @@ -0,0 +1,23 @@ +package ru.spcex.clearing.gatewayapi.errors; + +import ru.spcex.platform.utils.enumeration.IErrorEnumId; + +public enum GatewayError implements IErrorEnumId { + UserVerifyDenial(6443L), + CompanyNotFound(6001L), + SecurityNotFound(6002L), + WrongFieldValue(5004L) + ; + + + private final Long id; + + GatewayError(Long id) { + this.id = id; + } + + @Override + public Long getId() { + return id; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/exception/GatewayException.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/exception/GatewayException.java new file mode 100644 index 000000000..fa4697c00 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/exception/GatewayException.java @@ -0,0 +1,5 @@ +package ru.spcex.clearing.gatewayapi.exception; + +public class GatewayException extends RuntimeException { + +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java index 663d2db83..e81eba739 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java @@ -1,13 +1,15 @@ package ru.spcex.clearing.gatewayapi.logic; -public class ProcessResult { - private boolean ok = true; +import ru.spcex.clearing.gatewayapi.errors.GatewayError; - public boolean isOk() { - return ok; +public class ProcessResult { + private GatewayError error = null; + + public GatewayError getError() { + return error; } - public void setOk(boolean ok) { - this.ok = ok; + public void setError(GatewayError error) { + this.error = error; } } diff --git a/clearing-parent/gateway-api/src/main/java/service/GatewayService.java b/clearing-parent/gateway-api/src/main/java/service/GatewayService.java new file mode 100644 index 000000000..f1a8abb11 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/service/GatewayService.java @@ -0,0 +1,57 @@ +package service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import ru.spcex.clearing.gatewayapi.config.InboundServerSettings; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.gateway.GatewayTaskRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; +import ru.spcex.clearing.util.security.UserRoleVerification; +import ru.spcex.platform.enumeration.Task; + +@Service +public class GatewayService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final UserRoleVerification userRoleVerification; + private final RestTemplate restTemplate; + private final InboundServerSettings inboundServerSettings; + + public GatewayService(Consumer kafkaQueue, + Producer kafkaProducer, + RestTemplate restTemplate, + UserRoleVerification userRoleVerification, + InboundServerSettings inboundServerSettings) { + super(kafkaQueue, kafkaProducer); + this.restTemplate = restTemplate; + this.userRoleVerification = userRoleVerification; + this.inboundServerSettings = inboundServerSettings; + } + + @Override + public void afterPropertiesSet() throws Exception { + callback(GatewayTaskRequest.class) + .setFunction(this::requestOnDemandCompany) + .forDestination(Task.loadParty_LOCM.topic(), callbacks::put); + callback(GatewayTaskRequest.class) + .setFunction(this::requestOnDemandSecurity) + .forDestination(Task.loadIssue_LOSC.topic(), callbacks::put); + init(); + } + + public RequestInfoUpdate requestOnDemandCompany(BaseRequest userRequest) { + + return null; + } + + public RequestInfoUpdate requestOnDemandSecurity(BaseRequest userRequest) { + + return null; + } +} diff --git a/clearing-parent/gateway-api/src/main/resources/application.properties b/clearing-parent/gateway-api/src/main/resources/application.properties index 28dd2901f..b39b94fac 100644 --- a/clearing-parent/gateway-api/src/main/resources/application.properties +++ b/clearing-parent/gateway-api/src/main/resources/application.properties @@ -1,5 +1,7 @@ server.port=8080 server.servlet.context-path=/gateway-api +logging.level.org.springframework.web=DEBUG +logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG spring.main.web-application-type=servlet @@ -23,7 +25,8 @@ gateway-api.kafka-consumer.auto-offset-reset=latest gateway-api.kafka-consumer.linger-ms=1 gateway-api.kafka-consumer.buffer-memory=33554432 -gateway-api.inbound-server.ssl=true +gateway-api.inbound-server.enable-ssl=true gateway-api.inbound-server.host=localhost gateway-api.inbound-server.port=9999 -gateway-api.inbound-server.path=/inbound_request \ No newline at end of file +gateway-api.inbound-server.pathLOCM=/inbound_request +gateway-api.inbound-server.pathLOSC=/inbound_request \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/GatewayTaskRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/GatewayTaskRequest.java new file mode 100644 index 000000000..119f9430a --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/gateway/GatewayTaskRequest.java @@ -0,0 +1,16 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.gateway; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class GatewayTaskRequest { + @JsonProperty + public String task; + + public String getTask() { + return task; + } + + public void setTask(String task) { + this.task = task; + } +}