Administrator
7 days ago d936551a55d8b7e0d75c888dc1e6ac16eca6c1d3
refactor(order): 优化订单运费计算逻辑

- 将运费变量delivaryAmount的初始化位置调整到循环之前
- 移除重复的运费变量声明,避免代码冗余
- 确保运费计算在商品遍历过程中正确累加
- 保持订单总金额计算的准确性
1 files modified
7 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -116,6 +116,8 @@
        this.baseMapper.insert(orderInfo);
        BigDecimal total = BigDecimal.ZERO;
        //运费
        BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
        for (AddOrderItemDto item : addOrderDto.getItems()) {
            MallOrderItem orderItem = new MallOrderItem();
@@ -138,6 +140,8 @@
            if(1 != goodsResult){
                throw new FebsException("Discontinued");
            }
            delivaryAmount = delivaryAmount.add(mallGoods.getCarriageAmount());
            BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
            orderItem.setAmount(amount);
@@ -163,9 +167,6 @@
            }
            mallOrderItemMapper.insert(orderItem);
        }
        //运费
        BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
        orderInfo.setCarriage(delivaryAmount);
        total = total.add(delivaryAmount);