Forráskód Böngészése

Merge branch 'dev' into 'mp-server-test'

优化

See merge request quanshu/mp-server!477
zhong chunping 3 éve
szülő
commit
84b108a6c4

+ 24 - 23
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,29 +212,6 @@ public class ChannelOrderController extends BaseApiController {
       }
     }
 
-    // 运费计算
-    Integer freightAmt = 0;
-    // 计算运费
-    UserAddr userAddr = orderSettleVO.getAddr();
-    // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
-    ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(shippingTemplateId, userAddr.getProvinceId(), userAddr.getCityId());
-    // 无法查到运费模板则默认为0
-    if (Objects.nonNull(shippingTemplateCalculateVO)) {
-
-      orderSettleVO.setFreightRemark(shippingTemplateCalculateVO.getRemark());
-      orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
-
-      if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
-        int orderNum = param.getOrderNum();
-        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();
-        }
-      }
-    }
-
     // 订单金额计算
     Integer orderAmt = 0;
     Integer pkgNum = 0;
@@ -254,6 +235,26 @@ public class ChannelOrderController extends BaseApiController {
       orderSettleVO.getItems().add(cartVO);
       pkgNum += param.getOrderNum();
     }
+
+
+    // 运费计算
+    Integer freightAmt = 0;
+    // 计算运费
+    UserAddr userAddr = orderSettleVO.getAddr();
+    // TODO: 4L上线需要调整,后期放开就是取的商品里配的运费模板id
+    ShippingTemplateCalculateVO shippingTemplateCalculateVO = shippingTemplateRuleService.getShippingTemplateRuleByTemplateIdAndAreaInfo(shippingTemplateId, userAddr.getProvinceId(), userAddr.getCityId());
+    // 无法查到运费模板则默认为0
+    if (Objects.nonNull(shippingTemplateCalculateVO)) {
+
+      orderSettleVO.setFreightRemark(shippingTemplateCalculateVO.getRemark());
+      orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
+
+      if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
+        // 运费计算
+        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) {