diff --git a/src/main/java/com/banesco/common/domain/model/BusConfig.java b/src/main/java/com/banesco/common/domain/model/BusinessConfig.java similarity index 91% rename from src/main/java/com/banesco/common/domain/model/BusConfig.java rename to src/main/java/com/banesco/common/domain/model/BusinessConfig.java index b01cef8..dc08d49 100644 --- a/src/main/java/com/banesco/common/domain/model/BusConfig.java +++ b/src/main/java/com/banesco/common/domain/model/BusinessConfig.java @@ -9,7 +9,7 @@ import java.util.Map; @Getter @ToString @RegisterForReflection -public class BusConfig { +public class BusinessConfig { private String url; private TimeoutConfig timeout; private Map config; diff --git a/src/main/java/com/banesco/common/domain/model/RegisterSecurityConfig.java b/src/main/java/com/banesco/common/domain/model/RegisterSecurityConfig.java deleted file mode 100644 index 179ffd0..0000000 --- a/src/main/java/com/banesco/common/domain/model/RegisterSecurityConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.banesco.common.domain.model; - -import io.quarkus.runtime.annotations.RegisterForReflection; -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -@RegisterForReflection -public class RegisterSecurityConfig { - private String url; - private TimeoutConfig timeout; - private SecurityConfig config; -} diff --git a/src/main/java/com/banesco/common/domain/model/SecurityConfig.java b/src/main/java/com/banesco/common/domain/model/SecurityConfig.java deleted file mode 100644 index 9f58063..0000000 --- a/src/main/java/com/banesco/common/domain/model/SecurityConfig.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.banesco.common.domain.model; - -import io.quarkus.runtime.annotations.RegisterForReflection; -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -@RegisterForReflection -public class SecurityConfig { - private String sp; - private String eventCod; - private String bankCod; - private String curCod; -} diff --git a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java index a74d726..4060e7d 100644 --- a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java +++ b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java @@ -1,7 +1,6 @@ package com.banesco.common.infrastructure.config; -import com.banesco.common.domain.model.BusConfig; -import com.banesco.common.domain.model.RegisterSecurityConfig; +import com.banesco.common.domain.model.BusinessConfig; import com.fasterxml.jackson.core.JsonProcessingException; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.extern.slf4j.Slf4j; @@ -27,7 +26,7 @@ public class RestClientConfig { this.objectMapper = objectMapper; } - public BusConfig getBusLegalCustomerConfig() { + public BusinessConfig getBusLegalCustomerConfig() { try { String json = config.getValue("api.rest-client.bus-legal-customer-product-directory", String.class); log.info("Configurando bus-legal-customer-product-directory: {}", json); @@ -37,29 +36,11 @@ public class RestClientConfig { } Map configMap = objectMapper.readValue(json, new TypeReference<>() {}); - return objectMapper.convertValue(configMap, BusConfig.class); + return objectMapper.convertValue(configMap, BusinessConfig.class); } catch (JsonProcessingException e) { throw new IllegalArgumentException("Formato JSON inválido en la configuración: api.rest-client.bus-legal-customer-product-directory", e); } catch (Exception e) { throw new IllegalStateException("Error cargando configuración del servicio", e); } } - - public RegisterSecurityConfig getRegisterSecurityConfig() { - try { - String json = config.getValue("api.rest-client.register-security", String.class); - log.info("Configurando register-security: {}", json); - - if (json == null || json.trim().isEmpty()) { - throw new IllegalStateException("Configuración requerida no encontrada para: api.rest-client.register-security"); - } - - Map configMap = objectMapper.readValue(json, new TypeReference<>() {}); - return objectMapper.convertValue(configMap, RegisterSecurityConfig.class); - } catch (JsonProcessingException e) { - throw new IllegalArgumentException("Formato JSON inválido en la configuración: api.rest-client.register-security", e); - } catch (Exception e) { - throw new IllegalStateException("Error cargando configuración del servicio register-security", e); - } - } } diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java b/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java index 2de64a4..1fc7249 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java @@ -24,7 +24,6 @@ import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; import java.util.List; -import java.util.Map; import java.util.Objects; @Slf4j @@ -81,13 +80,7 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc ) { log.info("Calling business service for client: {}", request.getCustomerIbsNumber()); - return businessUseCase.execute( - true, - request.getCustomerIbsNumber(), - Map.of(), - request.toBusinessHeaders(), - LegalCustomerProductDirectoryResponse.class - ); + return businessUseCase.execute(request, LegalCustomerProductDirectoryResponse.class); } private ApiResponse createSuccessMock() { diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/application/usecase/BusinessUseCase.java b/src/main/java/com/banesco/module/legal_customer_product_directory/application/usecase/BusinessUseCase.java index 519eb43..5216b17 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/application/usecase/BusinessUseCase.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/application/usecase/BusinessUseCase.java @@ -1,15 +1,11 @@ package com.banesco.module.legal_customer_product_directory.application.usecase; import com.banesco.common.domain.model.ApiResponse; - -import java.util.Map; +import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest; public interface BusinessUseCase { ApiResponse execute( - boolean isMock, - String customerIbsNumber, - Map queryParams, - Map headers, + LegalCustomerProductDirectoryRequest params, Class responseType ); } diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java b/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java index d82fa8a..c317ea9 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java @@ -4,6 +4,9 @@ import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.*; import java.util.Map; +import java.util.Objects; + +import static java.util.Map.entry; @Getter @ToString @@ -30,25 +33,10 @@ public class LegalCustomerProductDirectoryRequest { private String limitType; // VALIMIT - Pagador/Receptor (PAG/REC) (filtro) private String casheaIndicator; // VCASHEA - SI/NO (filtro) - public Map toBusinessHeaders() { - return Map.of( - "appId", getAppId(), - "customerReferenceFintechId", getCustomerReferenceFintechId() - ); - } - - public Map toBusinessRequest() { - return Map.of( - "bankNumber", getBankNumber(), - "currencyCode", getCurrencyCode(), - "accountStatus", getAccountStatus(), - "productCvCode", getProductCvCode(), - "productCode", getProductCode(), - "channelCode", getChannelCode(), - "serviceType", getServiceType(), - "affiliationStatus", getAffiliationStatus(), - "limitType", getLimitType(), - "cashIndicator", getCasheaIndicator() + public Map toQueryString() { + return Map.ofEntries( + entry("appId", Objects.toString(getAppId(), "")), + entry("customerReferenceFintechId", Objects.toString(getCustomerReferenceFintechId(), "")) ); } } \ No newline at end of file diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/BusLegalCustomerDirectoryClient.java b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/BusLegalCustomerDirectoryClient.java index 454c20d..d6c115c 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/BusLegalCustomerDirectoryClient.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/BusLegalCustomerDirectoryClient.java @@ -2,12 +2,12 @@ package com.banesco.module.legal_customer_product_directory.infrastructure.clien import com.banesco.common.application.usecase.HttpClientUseCase; import com.banesco.common.domain.exception.ServiceUnavailableException; -import com.banesco.common.domain.exception.SuccessException; import com.banesco.common.domain.model.ApiResponse; -import com.banesco.common.domain.model.BusConfig; +import com.banesco.common.domain.model.BusinessConfig; import com.banesco.common.domain.model.HttpRequest; import com.banesco.common.infrastructure.config.RestClientConfig; import com.banesco.module.legal_customer_product_directory.application.usecase.BusinessUseCase; +import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest; import lombok.extern.slf4j.Slf4j; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @@ -18,7 +18,7 @@ import java.util.Map; @ApplicationScoped public class BusLegalCustomerDirectoryClient implements BusinessUseCase { private final HttpClientUseCase httpClientUseCase; - private final BusConfig busConfig; + private final BusinessConfig businessConfig; @Inject public BusLegalCustomerDirectoryClient( @@ -26,34 +26,28 @@ public class BusLegalCustomerDirectoryClient implements BusinessUseCase { RestClientConfig restClientConfig ) { this.httpClientUseCase = httpClientUseCase; - this.busConfig = restClientConfig.getBusLegalCustomerConfig(); - log.info("Configuración cargada para bus-legal-customer-directory: {}", busConfig); + this.businessConfig = restClientConfig.getBusLegalCustomerConfig(); + log.info("Configuración cargada para bus-legal-customer-directory: {}", businessConfig); } @Override public ApiResponse execute( - boolean isMock, - String customerIbsNumber, - Map queryParams, - Map headers, + LegalCustomerProductDirectoryRequest params, Class responseType ) { - log.info("Consultando información del cliente: {}", customerIbsNumber); + String customerIbsNumber = params.getCustomerIbsNumber(); - if(isMock) { - throw new SuccessException("200", null); - } + log.info("Consultando información del cliente: {}", customerIbsNumber); try { HttpRequest request = HttpRequest.builder() - .url(busConfig.getUrl()) + .url(businessConfig.getUrl()) .method(HttpRequest.HttpMethod.GET) .pathParams(Map.of("customerIbsNumber", customerIbsNumber)) - .queryParams(queryParams) - .headers(headers) + .queryParams(params.toQueryString()) .responseType(responseType) - .connectTimeout(busConfig.getTimeout().getConnect()) - .readTimeout(busConfig.getTimeout().getResponse()) + .connectTimeout(businessConfig.getTimeout().getConnect()) + .readTimeout(businessConfig.getTimeout().getResponse()) .build(); log.debug("Request configurado: {}", request); diff --git a/src/main/java/com/banesco/module/security/application/usecase/SecurityUseCase.java b/src/main/java/com/banesco/module/security/application/usecase/SecurityUseCase.java deleted file mode 100644 index d328b05..0000000 --- a/src/main/java/com/banesco/module/security/application/usecase/SecurityUseCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.banesco.module.security.application.usecase; - -import com.banesco.common.domain.model.ApiResponse; - -public interface SecurityUseCase { - ApiResponse execute(Class responseType); -} diff --git a/src/main/java/com/banesco/module/security/domain/dto/request/SecurityRequest.java b/src/main/java/com/banesco/module/security/domain/dto/request/SecurityRequest.java deleted file mode 100644 index 03c70ae..0000000 --- a/src/main/java/com/banesco/module/security/domain/dto/request/SecurityRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.banesco.module.security.domain.dto.request; - -import io.quarkus.runtime.annotations.RegisterForReflection; -import lombok.*; - -import java.util.Date; - -@Getter -@ToString -@Builder -@NoArgsConstructor -@AllArgsConstructor -@RegisterForReflection -public class SecurityRequest { - private String codBan; - private String codMon; - private String codEve; - private String codEve2; - private String login; - private Date fecHor; - private String nacCli; - private Integer cedRifCli; - private String productoCli; - - private String objeto; - private Integer tipoRespuesta; - private String msgRespuesta; - private Integer tiempoRespuesta; - private String codFintech; - - private String cedRifFintech; - - private String tipoDispositivo; - private String desDispositivo; - private String ipCli; - - private String sp; -} diff --git a/src/main/java/com/banesco/module/security/infrastructure/client/RegisterSecurityClient.java b/src/main/java/com/banesco/module/security/infrastructure/client/RegisterSecurityClient.java deleted file mode 100644 index 32dbba1..0000000 --- a/src/main/java/com/banesco/module/security/infrastructure/client/RegisterSecurityClient.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.banesco.module.security.infrastructure.client; - -import com.banesco.common.application.usecase.HttpClientUseCase; -import com.banesco.common.domain.exception.ServiceUnavailableException; -import com.banesco.common.domain.model.ApiResponse; -import com.banesco.common.domain.model.HttpRequest; -import com.banesco.common.domain.model.RegisterSecurityConfig; -import com.banesco.common.infrastructure.config.RestClientConfig; -import com.banesco.module.security.application.usecase.SecurityUseCase; -import com.banesco.module.security.domain.dto.request.SecurityRequest; -import lombok.extern.slf4j.Slf4j; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.inject.Inject; - -import java.util.HashMap; -import java.util.Map; - -@Slf4j -@ApplicationScoped -public class RegisterSecurityClient implements SecurityUseCase { - private final HttpClientUseCase httpClientUseCase; - private final RegisterSecurityConfig securityConfig; - - @Inject - public RegisterSecurityClient( - HttpClientUseCase httpClientUseCase, - RestClientConfig restClientConfig - ) { - this.httpClientUseCase = httpClientUseCase; - this.securityConfig = restClientConfig.getRegisterSecurityConfig(); - log.info("Configuración cargada para register-security: {}", securityConfig); - } - - @Override - public ApiResponse execute(Class responseType) { - log.info("Registrando traza de seguridad"); - - try { - SecurityRequest requestBody = createSecurityRequestBody(); - Map headers = createHeaders(); - HttpRequest request = buildHttpRequest(requestBody, headers, responseType); - - log.debug("Request body: {}", requestBody); - log.debug("Request configurado: {}", request); - - return httpClientUseCase.execute(request); - - } catch (Exception e) { - log.error("Error registrando traza de seguridad: {}", e.getMessage()); - throw new ServiceUnavailableException("503", e.getMessage(), null); - } - } - - private SecurityRequest createSecurityRequestBody() { - return SecurityRequest.builder() - .codBan(securityConfig.getConfig().getBankCod()) - .codMon(securityConfig.getConfig().getCurCod()) - .codEve(securityConfig.getConfig().getEventCod()) - .codEve2(securityConfig.getConfig().getEventCod()) - .sp(securityConfig.getConfig().getSp()) - .build(); - } - - private Map createHeaders() { - Map headers = new HashMap<>(); - headers.put("Content-Type", "application/json"); - return headers; - } - - private HttpRequest buildHttpRequest(SecurityRequest body, Map headers, Class responseType) { - return HttpRequest.builder() - .url(securityConfig.getUrl()) - .method(HttpRequest.HttpMethod.POST) - .body(body) - .headers(headers) - .responseType(responseType) - .connectTimeout(securityConfig.getTimeout().getConnect()) - .readTimeout(securityConfig.getTimeout().getResponse()) - .build(); - } - - -} \ No newline at end of file diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 72384be..116897f 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -22,6 +22,4 @@ api: key: 'recLogalCustomerProductDirectory' content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validación no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"}]' rest-client: - bus-legal-customer-product-directory: '{"url":"http://localhost:8082/bus-legal-customer-product-directory/retrieve/{customerIbsNumber}/{appId}/{customerReferenceFintechId}","timeout":{"connect":20000,"response":20000},"config":{}}' - register-security: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":20000,"response":20000},"config":{"sp":"spAPI_Traza","eventCod":"CANCTARJ","bankCod":"01","curCod":"BS"}}' - get-service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":20000,"response":20000},"config":{"sp":"spAPI_Traza","eventCod":"CANCTARJ","bankCod":"01","curCod":"BS"}}' \ No newline at end of file + bus-legal-customer-product-directory: '{"url":"http://localhost:8082/bus-legal-customer-product-directory/retrieve/{customerIbsNumber}/{appId}/{customerReferenceFintechId}","timeout":{"connect":20000,"response":20000},"config":{}}' \ No newline at end of file