in online_bontique_demo/checkoutService/src/main/java/org/apache/dubbo/shop/checkout/CheckoutServiceImpl.java [78:108]
public PlaceOrderResponse placeOrder(PlaceOrderRequest request) {
log.info("[PlaceOrder] user_id={} user_currency={}", request.getUserId(), request.getUserCurrency());
String orderId = UUID.randomUUID().toString();
OrderPrep prep = prepareOrderItemsAndShippingQuoteFromCart(request.getUserId(), request.getUserCurrency(), request.getAddress());
Money total = new Money(request.getUserCurrency(), 0L, 0);
total = MoneyUtils.sum(total, prep.getShippingCostLocalized());
for (OrderItem item : prep.getOrderItems()) {
Money multPrice = MoneyUtils.multiplySlow(item.getCost(), item.getItem().getQuantity());
total = MoneyUtils.sum(total, multPrice);
}
String txId = changeCard(total, request.getCreditCard());
log.info("payment went through (transaction_id: {})", txId);
String shipmentTrackingId = shipOrder(request.getAddress(), prep.getCartItems());
emptyUserCart(request.getUserId());
OrderResult orderResult = new OrderResult();
orderResult.setOrderId(orderId);
orderResult.setShippingTrackingId(shipmentTrackingId);
orderResult.setShippingCost(prep.getShippingCostLocalized());
orderResult.setShippingAddress(request.getAddress());
orderResult.setItems(prep.getOrderItems());
sendOrderConfirmation(request.getEmail(), orderResult);
return new PlaceOrderResponse(orderResult);
}