improving workflow fault tolerance

This commit is contained in:
2025-10-26 23:14:24 +02:00
parent 22ecc4b589
commit b5e891afed
18 changed files with 63 additions and 178 deletions

View File

@@ -50,7 +50,7 @@ public class TransactionService {
return transactionRepository.findAll(spec, pageable);
}
public Transaction save(Transaction transaction){
public Transaction save(Transaction transaction) {
return transactionRepository.save(transaction);
}
}
}

View File

@@ -18,6 +18,7 @@ import zw.qantra.tm.rest.RestService;
import zw.qantra.tm.utils.Utils;
import java.util.LinkedHashMap;
import java.util.UUID;
@Service("CONFIRM_ECONET")
@RequiredArgsConstructor
@@ -80,7 +81,7 @@ public class EconetConfirmationProcessor implements TransactionProcessorInterfac
transaction.setErrorMessage((String) body.get("errorMessage"));
}
return transactionService.save(transaction);
return transaction;
}
@Override

View File

@@ -1,55 +0,0 @@
package zw.qantra.tm.domain.services.processors.handlers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.models.Transaction;
import zw.qantra.tm.domain.enums.Status;
import zw.qantra.tm.domain.models.Recipient;
import zw.qantra.tm.domain.services.RecipientService;
import java.util.List;
@Service
@RequiredArgsConstructor
public class RecipientsUpdateHandler implements LogicHandler<Transaction, Transaction> {
private final RecipientService recipientService;
@Override
public Transaction process(Transaction transaction) {
System.out.println("processing recipients");
if(transaction.getStatus() == Status.SUCCESS){
List<Recipient> recipients = recipientService.getRecipient(transaction.getCreditAccount(), transaction.getUserId());
Recipient recipient = null;
if(recipients.size() > 0){
recipient = recipients.get(0);
}else{
recipient = new Recipient();
recipient.setAccount(transaction.getCreditAccount());
recipient.setUserId(transaction.getUserId());
}
recipient.setLatestProviderLabel(transaction.getProviderLabel());
if(transaction.getCreditName() != null && !transaction.getCreditName().isEmpty()){
recipient.setName(transaction.getCreditName());
}
if(transaction.getCreditEmail() != null && !transaction.getCreditEmail().isEmpty()){
recipient.setEmail(transaction.getCreditEmail());
}
if(transaction.getCreditPhone() != null && !transaction.getCreditPhone().isEmpty()){
recipient.setPhoneNumber(transaction.getCreditPhone());
}
String stringToInitial = transaction.getCreditName() != null && !transaction.getCreditName().isEmpty()
? transaction.getCreditName() : transaction.getBillName();
recipient.setInitials(stringToInitial.substring(0, 2).toUpperCase());
recipientService.save(recipient);
}
return transaction;
}
}

View File

@@ -1,11 +0,0 @@
package zw.qantra.tm.domain.services.processors.handlers;
import zw.qantra.tm.domain.models.Transaction;
public class ValidationHandler implements LogicHandler<Transaction, Transaction> {
@Override
public Transaction process(Transaction transaction) {
System.out.println("processing validation");
return transaction;
}
}