From 4a7433917b1e711200f11c841f6f725882658366 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 23 Jun 2026 13:48:06 +0800
Subject: [PATCH] feat(order): 添加国家配送费用配置功能

---
 src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java                             |    3 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java    |   23 +++++++++++++++++++----
 src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java |    8 +++++++-
 3 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
index 5d5d49c..b553543 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
+++ b/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;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 72462ca..9daa349 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/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);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java
index b53a90a..5bfabc7 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallCountryDeliveryServiceImpl.java
+++ b/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());

--
Gitblit v1.9.1