Update general

This commit is contained in:
Ramon Ramirez 2026-01-10 19:05:45 -04:00
parent 1684d8036a
commit ebd3f1caf1
12 changed files with 27 additions and 234 deletions

View File

@ -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<String, Object> config;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<String, Object> 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<String, Object> 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);
}
}
}

View File

@ -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<LegalCustomerProductDirectoryResponse> createSuccessMock() {

View File

@ -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 {
<T> ApiResponse<T> execute(
boolean isMock,
String customerIbsNumber,
Map<String, String> queryParams,
Map<String, String> headers,
LegalCustomerProductDirectoryRequest params,
Class<T> responseType
);
}

View File

@ -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<String, String> toBusinessHeaders() {
return Map.of(
"appId", getAppId(),
"customerReferenceFintechId", getCustomerReferenceFintechId()
);
}
public Map<String, String> 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<String, String> toQueryString() {
return Map.ofEntries(
entry("appId", Objects.toString(getAppId(), "")),
entry("customerReferenceFintechId", Objects.toString(getCustomerReferenceFintechId(), ""))
);
}
}

View File

@ -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 <T> ApiResponse<T> execute(
boolean isMock,
String customerIbsNumber,
Map<String, String> queryParams,
Map<String, String> headers,
LegalCustomerProductDirectoryRequest params,
Class<T> 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);

View File

@ -1,7 +0,0 @@
package com.banesco.module.security.application.usecase;
import com.banesco.common.domain.model.ApiResponse;
public interface SecurityUseCase {
<T> ApiResponse<T> execute(Class<T> responseType);
}

View File

@ -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;
}

View File

@ -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 <T> ApiResponse<T> execute(Class<T> responseType) {
log.info("Registrando traza de seguridad");
try {
SecurityRequest requestBody = createSecurityRequestBody();
Map<String, String> 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<String, String> createHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
return headers;
}
private HttpRequest buildHttpRequest(SecurityRequest body, Map<String, String> 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();
}
}

View File

@ -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"}}'
bus-legal-customer-product-directory: '{"url":"http://localhost:8082/bus-legal-customer-product-directory/retrieve/{customerIbsNumber}/{appId}/{customerReferenceFintechId}","timeout":{"connect":20000,"response":20000},"config":{}}'