progress on integration to sbz

This commit is contained in:
2025-06-23 10:45:05 +02:00
parent 9ae78635c7
commit fdd3a224ed
14 changed files with 247 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
package zw.qantra.tm.domain.services;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
@@ -11,25 +12,22 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import zw.qantra.tm.domain.dtos.SBZProductDto;
import zw.qantra.tm.domain.models.Provider;
import zw.qantra.tm.domain.repositories.ChargeRepository;
import zw.qantra.tm.domain.repositories.ProviderRepository;
import zw.qantra.tm.rest.RestService;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class ProviderService {
@Getter
private final ProviderRepository providerRepository;
private final RestService restService;
@Value("${sbz.aggregator.url}")
private String aggregatorUrl;
public ProviderRepository getProviderRepository() {
return providerRepository;
}
public List<SBZProductDto> getProviderProducts(UUID providerId) {
String token = restService.getMerchantToken();
@@ -57,8 +55,36 @@ public class ProviderService {
return products;
}
public List<Provider> getProviders() {
return providerRepository.findAll();
public Object getProviders(String category) {
String token = restService.getMerchantToken();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setBearerAuth(token);
List<Provider> existingProviders;
if (category != null) {
existingProviders = getProviderRepository().findByCategory(category);
} else {
existingProviders = getProviderRepository().findAll();
}
List<String> existingProviderIds = existingProviders.stream()
.map(Provider::getClientId)
.collect(Collectors.toList());
String existingProviderIdsString = String.join(",", existingProviderIds);
LinkedHashMap response = this.restService.getAs(
aggregatorUrl + "/merchant/aggregation/providers?supportedCurrencies=USD&clientIdIn=" + existingProviderIdsString,
headers,
LinkedHashMap.class
);
LinkedHashMap body = (LinkedHashMap) response.get("body");
List<LinkedHashMap> content = (List<LinkedHashMap>) body.get("content");
return content;
}
public Optional<Provider> getProvider(UUID id) {