Administrator
6 days ago 4a7433917b1e711200f11c841f6f725882658366
feat(order): 添加国家配送费用配置功能

- 在 AddOrderDto 中新增国家编码字段
- 注入 MallCountryDeliveryMapper 用于查询配送费用
- 移除旧的配送费用计算逻辑
- 实现基于国家编码的配送费用查询机制
- 添加默认配送费用配置支持
- 更新订单创建流程中的运费计算逻辑
3 files modified
34 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 23 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
@@ -29,6 +29,9 @@
    @ApiModelProperty(value = "配送费")
    private BigDecimal deliveryAmount;
    @ApiModelProperty(value = "国家编码")
    private String countryCode;
    @ApiModelProperty(value = "1-普通订单/2-积分订单")
    private Integer orderType;
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -71,6 +71,7 @@
    private final IApiMallMemberService memberService;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final RedisUtils redisUtils;
    private final MallCountryDeliveryMapper mallCountryDeliveryMapper;
    private final AgentProducer agentProducer;
    private final ApiChatPayService apiChatPayService;
@@ -116,8 +117,6 @@
        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();
@@ -140,8 +139,6 @@
            if(1 != goodsResult){
                throw new FebsException("Discontinued");
            }
            delivaryAmount = delivaryAmount.add(mallGoods.getCarriageAmount());
            BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
            orderItem.setAmount(amount);
@@ -167,6 +164,24 @@
            }
            mallOrderItemMapper.insert(orderItem);
        }
        //运费
        MallCountryDelivery delivery = mallCountryDeliveryMapper.selectOne(
                Wrappers.lambdaQuery(MallCountryDelivery.class)
                        .eq(MallCountryDelivery::getCountryCode, addOrderDto.getCountryCode().toUpperCase())
                        .eq(MallCountryDelivery::getStatus, 1)
        );
        MallCountryDelivery defaultDelivery = mallCountryDeliveryMapper.selectOne(
                Wrappers.lambdaQuery(MallCountryDelivery.class)
                        .eq(MallCountryDelivery::getCountryCode, "DEFAULT")
                        .eq(MallCountryDelivery::getStatus, 1)
        );
        BigDecimal delivaryAmount = defaultDelivery.getShippingFee();
        if (delivery != null) {
            delivaryAmount = delivery.getShippingFee();
        }
        orderInfo.setCarriage(delivaryAmount);
        total = total.add(delivaryAmount);
src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java
@@ -94,8 +94,14 @@
        );
        if (delivery == null) {
            MallCountryDelivery defaultDelivery = mallCountryDeliveryMapper.selectOne(
                    Wrappers.lambdaQuery(MallCountryDelivery.class)
                            .eq(MallCountryDelivery::getCountryCode, "DEFAULT")
                            .eq(MallCountryDelivery::getStatus, 1)
            );
            // 没有配置则返回默认运费 0(可根据业务调整)
            return new FebsResponse().success().data(BigDecimal.ZERO);
            return new FebsResponse().success().data(defaultDelivery.getShippingFee());
        }
        return new FebsResponse().success().data(delivery.getShippingFee());