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