diff --git a/src/main/java/com/example/building/service/impl/OrderServiceImpl.java b/src/main/java/com/example/building/service/impl/OrderServiceImpl.java index f71d880..fcd50ca 100644 --- a/src/main/java/com/example/building/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/example/building/service/impl/OrderServiceImpl.java @@ -366,10 +366,17 @@ public class OrderServiceImpl implements OrderService { // 重新计算金额 BigDecimal totalAmount = BigDecimal.ZERO; + // 删除旧的订单明细前,先恢复库存 + List oldItems = orderItemMapper.selectList(new LambdaQueryWrapper() + .eq(OrderItem::getOrderId, orderId)); + for (OrderItem oldItem : oldItems) { + increaseStock(oldItem.getProductId(), oldItem.getQuantity(), orderId, operatorId); + } + // 删除旧的订单明细 orderItemMapper.delete(new LambdaQueryWrapper().eq(OrderItem::getOrderId, orderId)); - // 重新创建订单明细 + // 重新创建订单明细,并扣减库存 List orderItems = new ArrayList<>(); for (CreateOrderRequest.OrderItemDTO itemDTO : request.getItems()) { Product product = productMapper.selectById(itemDTO.getProductId()); @@ -403,6 +410,8 @@ public class OrderServiceImpl implements OrderService { item.setSubtotal(subtotal); orderItems.add(item); orderItemMapper.insert(item); + // 扣减库存 + decreaseStock(product.getProductId(), itemDTO.getQuantity(), orderId, operatorId); } order.setTotalAmount(totalAmount);