fix: 编辑订单时恢复旧库存并扣减新库存
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Agent
2026-04-03 12:25:39 +00:00
parent 8f01832b65
commit 1427538598

View File

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