cup 3 anni fa
parent
commit
01e3181cd6

+ 6 - 16
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -16,6 +16,7 @@ import com.qs.mp.common.domain.DeliveryCompany;
 import com.qs.mp.common.enums.*;
 import com.qs.mp.common.service.IDeliveryCompanyService;
 import com.qs.mp.common.service.IShippingTemplateRuleService;
+import com.qs.mp.common.service.IShippingTemplateService;
 import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.system.domain.SysUser;
 import com.qs.mp.system.service.ISysUserService;
@@ -113,6 +114,9 @@ public class ChannelOrderController extends BaseApiController {
   @Value("${shipping.channel}")
   public Long shippingTemplateId;
 
+  @Autowired
+  private IShippingTemplateService shippingTemplateService;
+
 
 
   /**
@@ -208,9 +212,6 @@ public class ChannelOrderController extends BaseApiController {
       }
     }
 
-    // 购买数量
-    int orderNum = 0;
-
     // 订单金额计算
     Integer orderAmt = 0;
     Integer pkgNum = 0;
@@ -225,8 +226,6 @@ public class ChannelOrderController extends BaseApiController {
         cartVO.setOrderNum(channelCart.getOrderNum());
         orderSettleVO.getItems().add(cartVO);
         pkgNum += channelCart.getOrderNum();
-        // 获取购买数量
-        orderNum += channelCart.getOrderNum();
       }
     } else {
       TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
@@ -235,8 +234,6 @@ public class ChannelOrderController extends BaseApiController {
       cartVO.setOrderNum(param.getOrderNum());
       orderSettleVO.getItems().add(cartVO);
       pkgNum += param.getOrderNum();
-      // 获取购买数量
-      orderNum = param.getOrderNum();
     }
 
 
@@ -253,18 +250,11 @@ public class ChannelOrderController extends BaseApiController {
       orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
 
       if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
-        freightAmt = shippingTemplateCalculateVO.getDefaultPrice();
-        if (orderNum - shippingTemplateCalculateVO.getDefaultNumber() >= shippingTemplateCalculateVO.getCreateNumber()) {
-          // 运费:首件价格 + ((商品数量 - 首件数量) / 续件数量)向上取整 * 续件价格
-          int createNumber = shippingTemplateCalculateVO.getCreateNumber();
-          freightAmt += ((int) Math.ceil(NumberUtil.div(orderNum - shippingTemplateCalculateVO.getDefaultNumber(), createNumber))) * shippingTemplateCalculateVO.getCreatePrice();
-        }
+        // 运费计算
+        freightAmt = shippingTemplateService.calculateFreightAmt(pkgNum, shippingTemplateCalculateVO);
       }
     }
 
-
-
-
     // 设置运费
     orderSettleVO.setFreightAmt(freightAmt);
 

+ 5 - 7
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -87,6 +87,9 @@ public class UserDeliverOrderController extends BaseApiController {
   @Autowired
   private IShippingTemplateRuleService shippingTemplateRuleService;
 
+  @Autowired
+  private IShippingTemplateService shippingTemplateService;
+
   @Value("${shipping.user}")
   public Long shippingTemplateId;
 
@@ -189,13 +192,8 @@ public class UserDeliverOrderController extends BaseApiController {
 
       if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
         int goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
-        freightAmt = shippingTemplateCalculateVO.getDefaultPrice();
-        if (goodsNum - shippingTemplateCalculateVO.getDefaultNumber() >= shippingTemplateCalculateVO.getCreateNumber()) {
-
-          // 运费:首件价格 + ((商品数量 - 首件数量) / 续件数量)向上取整 * 续件价格
-          int createNumber = shippingTemplateCalculateVO.getCreateNumber();
-          freightAmt += ((int) Math.ceil(NumberUtil.div(goodsNum - shippingTemplateCalculateVO.getDefaultNumber(), createNumber))) * shippingTemplateCalculateVO.getCreatePrice();
-        }
+        // 计算运费
+        freightAmt = shippingTemplateService.calculateFreightAmt(goodsNum,shippingTemplateCalculateVO);
       }
 
     }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/common/service/IShippingTemplateService.java

@@ -1,7 +1,9 @@
 package com.qs.mp.common.service;
 
 import com.qs.mp.admin.domain.param.ShippingTemplateParam;
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
 import com.qs.mp.admin.domain.vo.ShippingTemplateVO;
+import com.qs.mp.channel.domain.vo.ChannelOrderSettleVO;
 import com.qs.mp.common.domain.ShippingTemplate;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -44,4 +46,11 @@ public interface IShippingTemplateService extends IService<ShippingTemplate> {
      */
     boolean deleteShippingTemplate(Long id);
 
+    /**
+     * 计算运费
+     * @param num  购买数量
+     * @param shippingTemplateCalculateVO   运费模板计算入参类
+     * @return
+     */
+    int calculateFreightAmt(Integer num, ShippingTemplateCalculateVO shippingTemplateCalculateVO);
 }

+ 17 - 0
mp-service/src/main/java/com/qs/mp/common/service/impl/ShippingTemplateServiceImpl.java

@@ -1,21 +1,26 @@
 package com.qs.mp.common.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.admin.domain.param.ShippingTemplateParam;
 import com.qs.mp.admin.domain.param.ShippingTemplateRuleAreaParam;
 import com.qs.mp.admin.domain.param.ShippingTemplateRuleParam;
+import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
 import com.qs.mp.admin.domain.vo.ShippingTemplateRuleAreaVO;
 import com.qs.mp.admin.domain.vo.ShippingTemplateRuleVO;
 import com.qs.mp.admin.domain.vo.ShippingTemplateVO;
+import com.qs.mp.channel.domain.vo.ChannelOrderSettleVO;
 import com.qs.mp.common.domain.ShippingTemplate;
 import com.qs.mp.common.domain.ShippingTemplateRule;
 import com.qs.mp.common.domain.ShippingTemplateRuleArea;
+import com.qs.mp.common.enums.ShippingTemplateRuleTypeEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.mapper.ShippingTemplateMapper;
 import com.qs.mp.common.service.IShippingTemplateRuleAreaService;
 import com.qs.mp.common.service.IShippingTemplateRuleService;
 import com.qs.mp.common.service.IShippingTemplateService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.user.domain.UserAddr;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +50,18 @@ public class ShippingTemplateServiceImpl extends ServiceImpl<ShippingTemplateMap
     @Autowired
     private IShippingTemplateRuleAreaService shippingTemplateRuleAreaService;
 
+    @Override
+    public int calculateFreightAmt(Integer num, ShippingTemplateCalculateVO shippingTemplateCalculateVO) {
+        int freightAmt = shippingTemplateCalculateVO.getDefaultPrice();
+        if (num - shippingTemplateCalculateVO.getDefaultNumber() >= shippingTemplateCalculateVO.getCreateNumber()) {
+            // 运费:首件价格 + ((商品数量 - 首件数量) / 续件数量)向上取整 * 续件价格
+            int createNumber = shippingTemplateCalculateVO.getCreateNumber();
+            freightAmt += ((int) Math.ceil(NumberUtil.div(num - shippingTemplateCalculateVO.getDefaultNumber(), createNumber))) * shippingTemplateCalculateVO.getCreatePrice();
+        }
+        return freightAmt;
+    }
+
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteShippingTemplate(Long id) {