Rev 31091 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.service.wallet;import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;import com.spice.profitmandi.dao.cart.CartService;import com.spice.profitmandi.dao.entity.transaction.Order;import com.spice.profitmandi.dao.entity.transaction.Payment;import com.spice.profitmandi.dao.entity.transaction.Transaction;import com.spice.profitmandi.dao.repository.transaction.OrderRepository;import com.spice.profitmandi.dao.repository.transaction.PaymentRepository;import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;import com.spice.profitmandi.service.order.OrderService;import in.shop2020.model.v1.order.WalletReferenceType;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.time.LocalDateTime;import java.util.List;import java.util.stream.Collectors;@Componentpublic class CommonPaymentService {private static final Logger log = LogManager.getLogger(CommonPaymentService.class);@Autowiredprivate WalletService walletService;@Autowiredprivate OrderRepository orderRepository;@Autowiredprivate OrderService orderService;@Autowiredprivate TransactionRepository transactionRepository;@Autowiredprivate PaymentRepository paymentRepository;@Autowiredprivate CartService cartService;public void payThroughWallet(int transactionId) throws ProfitMandiBusinessException {Transaction transaction = transactionRepository.selectById(transactionId);List<Order> orders = orderRepository.selectAllByTransactionId(transactionId);payThroughWallet(transaction, orders);}public void payThroughWallet(Transaction transaction, List<Order> orders) throws ProfitMandiBusinessException {double walletAmount = orders.stream().collect(Collectors.summingDouble(Order::getTotalAmount));walletService.consumeAmountFromWallet(transaction.getRetailerId(), transaction.getId(),WalletReferenceType.PURCHASE, "Against Order purchase", (float) walletAmount, LocalDateTime.now());this.addPayment(transaction, walletAmount);}private void addPayment(Transaction transaction, double walletAmount) {Payment payment = new Payment();payment.setAmount(walletAmount);payment.setGatewayId(8);payment.setStatus(2);payment.setGatewayTxnStatus("SUCCESS");payment.setDescription("Payment Received");payment.setUserId(transaction.getRetailerId());payment.setInitTimestamp(LocalDateTime.now());payment.setSuccessTimestamp(LocalDateTime.now());payment.setDigital(false);payment.setMerchantTxnId(transaction.getId());paymentRepository.persist(payment);}}