feat: 订单创建时扣减库存,确认完成时不再扣减,取消时恢复库存
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Agent
2026-04-03 04:19:20 +00:00
parent 4da4b1f922
commit a0aa1432ab

View File

@@ -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<OrderItem> items = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
.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<OrderItem> items = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
.eq(OrderItem::getOrderId, orderId));
for (OrderItem item : items) {
decreaseStock(item.getProductId(), item.getQuantity(), orderId, operatorId);
// 确认完成:订单在创建时已扣减库存,此处不再扣减
// 只需更新状态为已完成
}
}
// 取消不需要恢复库存(因为创建时没扣减)
// 取消订单需要恢复库存(因为创建时已扣减)
if (status == 2) {
order.setStatus(status);
orderMapper.updateById(order);