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 76ce3d5..34e879d 100644 --- a/src/main/java/com/example/building/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/example/building/service/impl/OrderServiceImpl.java @@ -119,8 +119,8 @@ public class OrderServiceImpl implements OrderService { item.setSubtotal(subtotal); orderItems.add(item); - // 4. 暂时不扣减库存,等确认完成时再扣减 - // decreaseStock(product.getProductId(), itemDTO.getQuantity(), order.getOrderId(), operatorId); + // 4. 创建订单时立即扣减库存 + decreaseStock(product.getProductId(), itemDTO.getQuantity(), order.getOrderId(), operatorId); } // 设置订单原价 @@ -253,7 +253,13 @@ public class OrderServiceImpl implements OrderService { throw new RuntimeException("订单状态不允许取消"); } - // 未完成订单没有扣减库存,不需要恢复 + // 取消订单需要恢复库存(因为创建时已扣减库存) + List items = orderItemMapper.selectList(new LambdaQueryWrapper() + .eq(OrderItem::getOrderId, orderId)); + for (OrderItem item : items) { + increaseStock(item.getProductId(), item.getQuantity(), orderId, operatorId); + } + // 更新订单状态 order.setStatus(2); // 已取消 orderMapper.updateById(order); @@ -302,14 +308,11 @@ public class OrderServiceImpl implements OrderService { } if (status == 1) { - // 确认完成:扣减库存 - List items = orderItemMapper.selectList(new LambdaQueryWrapper() - .eq(OrderItem::getOrderId, orderId)); - for (OrderItem item : items) { - decreaseStock(item.getProductId(), item.getQuantity(), orderId, operatorId); - } + // 确认完成:订单在创建时已扣减库存,此处不再扣减 + // 只需更新状态为已完成 } - // 取消不需要恢复库存(因为创建时没扣减) + // 取消订单需要恢复库存(因为创建时已扣减) + if (status == 2) { order.setStatus(status); orderMapper.updateById(order);