Search in sources :

Example 1 with OrderCreateInfoDTO

use of com.whoiszxl.cqrs.dto.OrderCreateInfoDTO in project shopzz by whoiszxl.

the class OrderServiceImpl method createOrderInfo.

/**
 * 创建订单和订单条目信息
 * @param orderSubmitCommand 提交的订单信息
 * @return
 */
private OrderCreateInfoDTO createOrderInfo(OrderSubmitCommand orderSubmitCommand) {
    // 1. 创建订单id和编号
    String orderNo = OrderUtils.makeOrderNo();
    long orderId = idWorker.nextId();
    // 2. 创建订单和订单条目的基本信息
    Order order = buildOrder(orderId, orderNo, orderSubmitCommand);
    List<OrderItem> orderItems = buildOrderItems(orderId, orderNo);
    // 3. 创建返回实体
    OrderCreateInfoDTO orderCreateInfoDTO = new OrderCreateInfoDTO();
    orderCreateInfoDTO.setOrder(order);
    orderCreateInfoDTO.setOrderItemList(orderItems);
    orderCreateInfoDTO.setFare(BigDecimal.ZERO);
    return orderCreateInfoDTO;
}
Also used : Order(com.whoiszxl.entity.Order) OrderCreateInfoDTO(com.whoiszxl.cqrs.dto.OrderCreateInfoDTO) OrderItem(com.whoiszxl.entity.OrderItem)

Example 2 with OrderCreateInfoDTO

use of com.whoiszxl.cqrs.dto.OrderCreateInfoDTO in project shopzz by whoiszxl.

the class OrderServiceImpl method orderSubmit.

@Override
@Transactional
public Long orderSubmit(OrderSubmitCommand orderSubmitCommand) {
    // 1. 校验订单
    OrderCheckDTO orderCheckDTO = this.checkOrder(orderSubmitCommand);
    // 2. 创建订单
    OrderCreateInfoDTO orderCreateInfoDTO = createOrderInfo(orderSubmitCommand);
    // 3. 设置价格 TODO sku详细的拆分价格待计算
    orderCreateInfoDTO.setPayPrice(orderCheckDTO.getFinalDiscountPrice());
    orderCreateInfoDTO.getOrder().setTotalAmount(orderCheckDTO.getFinalPrice());
    orderCreateInfoDTO.getOrder().setFinalPayAmount(orderCheckDTO.getFinalDiscountPrice());
    // 4. 订单与订单item入库
    this.save(orderCreateInfoDTO.getOrder());
    orderItemService.saveBatch(orderCreateInfoDTO.getOrderItemList());
    // 5. 创建一个操作日志订单状态管理器,在订单状态流转到待付款状态时记录操作记录
    loggerOrderStateManager.create(orderCreateInfoDTO.getOrder());
    // 6. 扣减库存
    subSaleStockAndAddLockStockBySkuId(orderCreateInfoDTO.getOrderItemList());
    // 7. 优惠券核销
    if (orderSubmitCommand.getCouponId() != null) {
        writeOffCoupon(orderSubmitCommand.getCouponId(), orderCreateInfoDTO.getOrder().getId());
    }
    // 8. 清空购物车选中的item
    cartService.clearCheckedCart();
    return orderCreateInfoDTO.getOrder().getId();
}
Also used : OrderCreateInfoDTO(com.whoiszxl.cqrs.dto.OrderCreateInfoDTO) OrderCheckDTO(com.whoiszxl.cqrs.dto.OrderCheckDTO) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

OrderCreateInfoDTO (com.whoiszxl.cqrs.dto.OrderCreateInfoDTO)2 OrderCheckDTO (com.whoiszxl.cqrs.dto.OrderCheckDTO)1 Order (com.whoiszxl.entity.Order)1 OrderItem (com.whoiszxl.entity.OrderItem)1 Transactional (org.springframework.transaction.annotation.Transactional)1