public PlaceOrderResponse placeOrder()

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