Browse Source

运费计算封装

xdd 2 months ago
parent
commit
c4ef85a991

+ 9 - 8
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -1203,7 +1203,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         } else {
             address = userAddressMapper.selectFsUserAddressById(param.getUserAddressId());
         }
-        Asserts.notNull(address,"用户收货地址不能为空!");
         FsStoreProductPackage storeProductPackage=productPackageService.selectFsStoreProductPackageById(param.getPackageId());
         String uuid = IdUtil.randomUUID();
         BigDecimal totalMoney=storeProductPackage.getPayMoney();
@@ -1217,7 +1216,11 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             }
         }
         // 计算运费
-        BigDecimal postMoney = calPostMoney(storeProductPackage, address);
+        BigDecimal postMoney = BigDecimal.ZERO;
+        if(address != null){
+            postMoney = calPostMoney(storeProductPackage, address);
+        }
+
 
         redisCache.setCacheObject("orderKey:"+uuid, storeProductPackage.getPackageId().toString(), 300, TimeUnit.SECONDS);
 
@@ -1265,7 +1268,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         }else {
             throw new IllegalArgumentException("当前套餐没有设置运费模板!");
         }
-        return postMoney;
+        return postMoney.setScale(2,RoundingMode.HALF_UP);
     }
 
     private BigDecimal getProductSum(FsStoreProductPackage storeProductPackage,Integer type){
@@ -1284,21 +1287,19 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             } else if(ObjectUtil.equal(ShippingTempEnum.TYPE_2.getValue(),type)){
                 FsStoreProductAttrValue fsStoreProductAttrValues
                         = fsStoreProductAttrValueService.selectFsStoreProductAttrValueById(id);
-                sum = sum.add(fsStoreProductAttrValues.getWeight());
-                sum = sum.multiply(BigDecimal.valueOf(count));
+                sum = sum.add(fsStoreProductAttrValues.getWeight().multiply(BigDecimal.valueOf(count)));
                 // 按体积
             } else if(ObjectUtil.equal(ShippingTempEnum.TYPE_3.getValue(),type)){
                 FsStoreProductAttrValue fsStoreProductAttrValues
                         = fsStoreProductAttrValueService.selectFsStoreProductAttrValueById(id);
-                sum = sum.add(fsStoreProductAttrValues.getVolume());
-                sum = sum.multiply(BigDecimal.valueOf(count));
+                sum = sum.add(fsStoreProductAttrValues.getWeight().multiply(BigDecimal.valueOf(count)));
             }
         }
         // 不满1kg按1kg计算
         if(sum.compareTo(BigDecimal.ONE) < 0){
             sum = BigDecimal.ONE;
         }
-        return sum;
+        return sum.setScale(0,RoundingMode.UP);
     }
 
     @Override