From 9a25ce2c885cdb8a6b8ae568cef012f237495023 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Mon, 25 Nov 2024 17:38:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E5=9F=8E=E9=85=8D=E9=80=81=E8=B4=B9?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ShopStoreSameCityTransportBaseService.java | 30 ++++- ...StoreSameCityTransportBaseServiceImpl.java | 122 ++++++++++++++---- ...ShopStoreSameCityTransportServiceImpl.java | 2 +- 3 files changed, 129 insertions(+), 25 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreSameCityTransportBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreSameCityTransportBaseService.java index 1c57b571..1b02acf3 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreSameCityTransportBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreSameCityTransportBaseService.java @@ -13,6 +13,8 @@ import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase; import com.suisung.mall.common.pojo.dto.ShopStoreSameCityTransportBaseDTO; import org.springframework.data.util.Pair; +import java.math.BigDecimal; + public interface ShopStoreSameCityTransportBaseService { /** @@ -36,8 +38,15 @@ public interface ShopStoreSameCityTransportBaseService { * @param storeId * @return */ - ShopStoreSameCityTransportBaseDTO getDetailById(Long storeId); + ShopStoreSameCityTransportBaseDTO getShopStoreSameCityTransportBaseDTOById(Long storeId); + /** + * 根据店铺Id获取同城配送基础运费记录 + * + * @param storeId + * @return + */ + ShopStoreSameCityTransportBase getShopStoreSameCityTransportBaseById(Long storeId); /** * 保存同城配送基础设置(存在更新,不存在新增) @@ -46,4 +55,21 @@ public interface ShopStoreSameCityTransportBaseService { * @return */ Pair saveOrUpdateShopStoreSameCityTransportBase(ShopStoreSameCityTransportBase shopStoreSameCityTransportBase); -} + + + /** + * 计算同城订单配送费 + * + * @param storeId 店铺Id + * @param orderLongitude (订单送达地)目的地经度 + * @param orderLatitude (订单送达地)目的地维度 + * @param distanceMeter 距离(单位米) + * @param weightGram 重量(单位克) + * @param orderProductAmount 订单商品原价金额 + * @param orderDiscountAmount 订单商品折扣金额(订单原价减去每个商品折扣费) + * @param orderPayAmount 订单实际支付金额(折扣金额-优惠券-积分扣-人工干预扣费),不包含运费 + * @return 同城配送费 + */ + BigDecimal computeSameCityTransportFee(Long storeId, BigDecimal orderLongitude, BigDecimal orderLatitude, Integer distanceMeter, Integer weightGram, BigDecimal orderProductAmount, BigDecimal orderDiscountAmount, BigDecimal orderPayAmount); + +} \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportBaseServiceImpl.java index 904b3d40..7e8e7d4a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportBaseServiceImpl.java @@ -18,13 +18,15 @@ import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreSameCityTransport; import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase; import com.suisung.mall.common.pojo.dto.ShopStoreSameCityTransportBaseDTO; +import com.suisung.mall.common.utils.PositionUtil; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.chain.controller.admin.ShopChainUserController; import com.suisung.mall.shop.store.mapper.ShopStoreSameCityTransportBaseMapper; import com.suisung.mall.shop.store.service.ShopStoreBaseService; import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService; import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService; -import org.springframework.beans.factory.annotation.Autowired; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; @@ -38,12 +40,12 @@ import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser; @Service public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl implements ShopStoreSameCityTransportBaseService { + private static final Logger logger = LoggerFactory.getLogger(ShopStoreSameCityTransportBaseServiceImpl.class); @Resource private ShopStoreSameCityTransportService shopStoreSameCityTransportService; - @Resource private ShopStoreBaseService shopStoreBaseService; - @Autowired + @Resource private ShopChainUserController user; /** @@ -54,13 +56,13 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl pair = saveOrUpdateShopStoreSameCityTransportBase(transportBase); + Pair pair = saveOrUpdateShopStoreSameCityTransportBase(transportBase); // 新增或更新同城配送扩展设置列表 shopStoreSameCityTransportBaseDTO.setTransportBase(transportBase); shopStoreSameCityTransportBaseDTO.rebuildTransportList(); shopStoreSameCityTransportService.saveOrUpdateShopStoreSameCityTransportList(shopStoreSameCityTransportBaseDTO.getTransportList()); - if (pair.getFirst()>0) { + if (pair.getFirst() > 0) { return CommonResult.success(null, pair.getSecond()); } @@ -112,7 +114,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("store_id", storeId); - queryWrapper.orderByAsc("transport_base_id"); - ShopStoreSameCityTransportBase transportBase = getOne(queryWrapper); + ShopStoreSameCityTransportBase transportBase = getShopStoreSameCityTransportBaseById(storeId); if (transportBase == null) { transportBase = new ShopStoreSameCityTransportBase(); transportBase.setStore_id(storeId); @@ -163,7 +162,26 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl saveOrUpdateShopStoreSameCityTransportBase(ShopStoreSameCityTransportBase transportBase) { + /** + * 根据店铺Id获取同城配送基础运费记录 + * + * @param storeId + * @return + */ + @Override + public ShopStoreSameCityTransportBase getShopStoreSameCityTransportBaseById(Long storeId) { + if (storeId == null || storeId <= 0) { + return null; + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id", storeId); + queryWrapper.eq("status", ConstantError.Enable); + + return getOne(queryWrapper); + } + + public Pair saveOrUpdateShopStoreSameCityTransportBase(ShopStoreSameCityTransportBase transportBase) { if (transportBase == null || transportBase.getStore_id() == null || transportBase.getStore_id() <= 0) { return Pair.of(0L, "缺少店铺Id必要参数!"); } @@ -209,4 +227,64 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl transportBase.getDistance_base() && transportBase.getDistance_increase_km() != null && transportBase.getDistance_increase_fee() != null) { + deliveryBaseFee.add(transportBase.getDelivery_base_fee().multiply(BigDecimal.valueOf(distance - transportBase.getDistance_base()))); + } + + // 每增加一个重量累加运费(重量暂时忽略,配置的时候设置0) + if (weightGram > transportBase.getWeight_base() && transportBase.getWeight_increase_kg() != null && transportBase.getWeight_increase_fee() != null) { + deliveryBaseFee.add(transportBase.getWeight_increase_fee().multiply(BigDecimal.valueOf(weightGram - transportBase.getWeight_base()))); + } + // 基础配送费计算完毕 + + + // 获取运费配送范围和优惠信息 + List transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(transportBase.getTransport_base_id()); + + // 通过配送范围和起送金额,决定使用哪个配送费优惠规则 + + return null; + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java index 43ae0b5e..62e3ae3e 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java @@ -68,7 +68,7 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl