更改内部配送费计算方法
This commit is contained in:
parent
9136af8a52
commit
52ff9dabe0
@ -258,6 +258,9 @@ public class ShopMchEntry implements Serializable {
|
|||||||
@ApiModelProperty(value = "是否绑定分账接收方:1-是;2-否;")
|
@ApiModelProperty(value = "是否绑定分账接收方:1-是;2-否;")
|
||||||
private Integer has_bind_receiver;
|
private Integer has_bind_receiver;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "父入驻id(总店入驻id)")
|
||||||
|
private Integer parent_id;
|
||||||
|
|
||||||
@ApiModelProperty(value = "该商家入驻记录是否有效,0:无效,1:有效")
|
@ApiModelProperty(value = "该商家入驻记录是否有效,0:无效,1:有效")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
|||||||
@ -99,7 +99,7 @@ public class LakalaController extends BaseControllerImpl {
|
|||||||
|
|
||||||
// return lakalaApiService.tradeQuery(paramsJSON.getInt("storeId"), paramsJSON.getStr("orderId"));
|
// return lakalaApiService.tradeQuery(paramsJSON.getInt("storeId"), paramsJSON.getStr("orderId"));
|
||||||
|
|
||||||
return lklTkService.getLklShopId("8226330541100J8", "");
|
return lklTkService.openMerchantAddTerm("8226330541100J8");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -827,18 +827,18 @@ public class LklTkServiceImpl {
|
|||||||
String reviewPass = dataJSON.getStr("reviewPass");
|
String reviewPass = dataJSON.getStr("reviewPass");
|
||||||
String merCupNo = dataJSON.getStr("externalCustomerNo"); //拉卡拉外部商户号
|
String merCupNo = dataJSON.getStr("externalCustomerNo"); //拉卡拉外部商户号
|
||||||
String merInnerNo = dataJSON.getStr("customerNo"); //拉卡拉内部商户号
|
String merInnerNo = dataJSON.getStr("customerNo"); //拉卡拉内部商户号
|
||||||
String termNos = dataJSON.getStr("termNos"); //拉卡拉分配的业务终端号
|
String termNo = dataJSON.getStr("termNo"); //拉卡拉分配的业务终端号
|
||||||
|
|
||||||
logger.debug("解析通知数据完成 - 审核状态: {},外部商户号: {},内部商户号: {},终端号: {}",
|
logger.debug("解析通知数据完成 - 审核状态: {},外部商户号: {},内部商户号: {},终端号: {}",
|
||||||
reviewPass, merCupNo, merInnerNo, termNos);
|
reviewPass, merCupNo, merInnerNo, termNo);
|
||||||
|
|
||||||
// 合并参数校验
|
// 合并参数校验
|
||||||
if (dataJSON.isEmpty() ||
|
if (dataJSON.isEmpty() ||
|
||||||
StrUtil.isBlank(reviewPass) ||
|
StrUtil.isBlank(reviewPass) ||
|
||||||
StrUtil.isBlank(merCupNo) ||
|
StrUtil.isBlank(merCupNo) ||
|
||||||
StrUtil.isBlank(merInnerNo) ||
|
StrUtil.isBlank(merInnerNo) ||
|
||||||
StrUtil.isBlank(termNos)) {
|
StrUtil.isBlank(termNo)) {
|
||||||
logger.warn("拉卡拉进件异步通知参数解析出错,数据: {}", data);
|
logger.warn("拉卡拉改进异步通知参数解析出错,数据: {}", data);
|
||||||
return new JSONObject().set("code", "500").set("message", "参数解析出错");
|
return new JSONObject().set("code", "500").set("message", "参数解析出错");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -869,7 +869,7 @@ public class LklTkServiceImpl {
|
|||||||
// 更新已进件成功的商户号和设备号
|
// 更新已进件成功的商户号和设备号
|
||||||
logger.debug("开始更新商户拉卡拉审核状态");
|
logger.debug("开始更新商户拉卡拉审核状态");
|
||||||
Boolean success = shopMchEntryService.updateMerchEntryLklAuditStatusByLklMerCupNo(
|
Boolean success = shopMchEntryService.updateMerchEntryLklAuditStatusByLklMerCupNo(
|
||||||
merInnerNo, merCupNo, termNos, CommonConstant.Enable, null, data);
|
merInnerNo, merCupNo, termNo, CommonConstant.Enable, null, data);
|
||||||
|
|
||||||
if (!Boolean.TRUE.equals(success)) {
|
if (!Boolean.TRUE.equals(success)) {
|
||||||
logger.error("拉卡拉进件审核通过但更新商户号失败,商户ID: {}", mchId);
|
logger.error("拉卡拉进件审核通过但更新商户号失败,商户ID: {}", mchId);
|
||||||
|
|||||||
@ -1422,14 +1422,17 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
if (!shopOrderBase.getOperate_flag().equals("0")) {
|
if (!shopOrderBase.getOperate_flag().equals("0")) {
|
||||||
return CommonResult.failed("该状态不允许发货操作");
|
return CommonResult.failed("该状态不允许发货操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
Pair<Boolean, String> pair = wxOrderShippingService.uploadShippingInfoToWx(2, shopOrderBase.getOrder_id());
|
Pair<Boolean, String> pair = wxOrderShippingService.uploadShippingInfoToWx(2, shopOrderBase.getOrder_id());
|
||||||
if (pair.getFirst()) {
|
if (pair.getFirst()) {
|
||||||
Integer orderStatus = StateCode.ORDER_STATE_SHIPPED;//已发货
|
Integer orderStatus = StateCode.ORDER_STATE_SHIPPED;//已发货
|
||||||
Integer orderIsOutStatus = StateCode.ORDER_PICKING_STATE_YES; // 已出库
|
Integer orderIsOutStatus = StateCode.ORDER_PICKING_STATE_YES; // 已出库
|
||||||
shopOrderInfoService.changeOrderStatus(orderId, orderStatus, orderIsOutStatus, 0);
|
shopOrderInfoService.changeOrderStatus(orderId, orderStatus, orderIsOutStatus, 0);
|
||||||
|
|
||||||
//完成订单后修改订单异常操作流程进入完成订单环节
|
//完成订单后修改订单异常操作流程进入完成订单环节
|
||||||
shopOrderBase.setOperate_flag("1");
|
shopOrderBase.setOperate_flag("1");
|
||||||
shopOrderBaseService.updateById(shopOrderBase);
|
shopOrderBaseService.updateById(shopOrderBase);
|
||||||
|
|
||||||
//出库扣减思迅库存star
|
//出库扣减思迅库存star
|
||||||
// RMK 第三方数据同步相关:redis 给这个商品减去对应的库存
|
// RMK 第三方数据同步相关:redis 给这个商品减去对应的库存
|
||||||
QueryWrapper<ShopOrderItem> itemQueryWrapper = new QueryWrapper<>();
|
QueryWrapper<ShopOrderItem> itemQueryWrapper = new QueryWrapper<>();
|
||||||
@ -1438,6 +1441,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
if (picking(order_item_rows)) {
|
if (picking(order_item_rows)) {
|
||||||
logger.info("自行发货商品扣减库存成功");
|
logger.info("自行发货商品扣减库存成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!order_item_rows.isEmpty()) {
|
if (!order_item_rows.isEmpty()) {
|
||||||
for (ShopOrderItem shopOrderItem : order_item_rows) {
|
for (ShopOrderItem shopOrderItem : order_item_rows) {
|
||||||
Map<String, Integer> stockDeltaMap = new HashMap<>();
|
Map<String, Integer> stockDeltaMap = new HashMap<>();
|
||||||
|
|||||||
@ -889,162 +889,171 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Integer computeSameCityInnerDeliveryFee(Integer storeId, String orderLongitude, String orderLatitude, Integer orderWeightGram, BigDecimal orderProductAmount, BigDecimal orderDiscountAmount, BigDecimal orderPayAmount) {
|
public Integer computeSameCityInnerDeliveryFee(Integer storeId, String orderLongitude, String orderLatitude, Integer orderWeightGram, BigDecimal orderProductAmount, BigDecimal orderDiscountAmount, BigDecimal orderPayAmount) {
|
||||||
// 参数校验
|
SameCityDeliveryFeeRespDTO sameCityDeliveryFeeRespDTO = computeSameCityTransportFee(Convert.toLong(storeId), orderLongitude, orderLatitude, orderWeightGram, orderProductAmount, orderDiscountAmount, orderPayAmount, false);
|
||||||
if (storeId == null || orderLongitude == null || orderLatitude == null || storeId <= 0) {
|
if (sameCityDeliveryFeeRespDTO == null
|
||||||
logger.warn("同城配送缺少必要参数,无法计算配送费。");
|
|| sameCityDeliveryFeeRespDTO.getDeliveryFee() == null
|
||||||
|
|| sameCityDeliveryFeeRespDTO.getDeliveryFee().compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取店铺基本信息
|
return sameCityDeliveryFeeRespDTO.getDeliveryFee().multiply(new BigDecimal(100)).intValue();
|
||||||
ShopStoreBase storeBase = shopStoreBaseService.get(storeId);
|
|
||||||
if (storeBase == null) {
|
|
||||||
logger.warn("同城配送缺少店铺基本信息,无法计算配送费。");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
String storeName = storeBase.getStore_name();
|
// 参数校验
|
||||||
String storeLng = storeBase.getStore_longitude();
|
// if (storeId == null || orderLongitude == null || orderLatitude == null || storeId <= 0) {
|
||||||
String storeLat = storeBase.getStore_latitude();
|
// logger.warn("同城配送缺少必要参数,无法计算配送费。");
|
||||||
if (StrUtil.isBlank(storeLng) || StrUtil.isBlank(storeLat)) {
|
// return 0;
|
||||||
logger.warn("无法获取{}的具体位置,请联系商家。", storeName);
|
// }
|
||||||
return 0;
|
//
|
||||||
}
|
// // 获取店铺基本信息
|
||||||
|
// ShopStoreBase storeBase = shopStoreBaseService.get(storeId);
|
||||||
// 获取平台的基础运费设置记录
|
// if (storeBase == null) {
|
||||||
ShopStoreSameCityTransportBase transportBase = getShopStoreSameCityTransportBaseById(Convert.toLong(storeId), CommonConstant.Enable);
|
// logger.warn("同城配送缺少店铺基本信息,无法计算配送费。");
|
||||||
if (transportBase == null) {
|
// return 0;
|
||||||
logger.warn("商家{}尚未完成同城配送设置,无法计算配送费。", storeName);
|
// }
|
||||||
return 0;
|
//
|
||||||
}
|
// String storeName = storeBase.getStore_name();
|
||||||
|
// String storeLng = storeBase.getStore_longitude();
|
||||||
// 设置默认值
|
// String storeLat = storeBase.getStore_latitude();
|
||||||
if (transportBase.getDistance_base() == null) {
|
// if (StrUtil.isBlank(storeLng) || StrUtil.isBlank(storeLat)) {
|
||||||
transportBase.setDistance_base(0);
|
// logger.warn("无法获取{}的具体位置,请联系商家。", storeName);
|
||||||
}
|
// return 0;
|
||||||
if (transportBase.getWeight_base() == null) {
|
// }
|
||||||
transportBase.setWeight_base(0);
|
//
|
||||||
}
|
// // 获取平台的基础运费设置记录
|
||||||
if (transportBase.getDelivery_base_fee() == null) {
|
// ShopStoreSameCityTransportBase transportBase = getShopStoreSameCityTransportBaseById(Convert.toLong(storeId), CommonConstant.Enable);
|
||||||
transportBase.setDelivery_base_fee(BigDecimal.ZERO);
|
// if (transportBase == null) {
|
||||||
}
|
// logger.warn("商家{}尚未完成同城配送设置,无法计算配送费。", storeName);
|
||||||
|
// return 0;
|
||||||
// 计算两点的距离(单位米)
|
// }
|
||||||
Double distanceD = PositionUtil.getDistance1(Convert.toDouble(storeLng), Convert.toDouble(storeLat), Convert.toDouble(orderLongitude), Convert.toDouble(orderLatitude));
|
//
|
||||||
Integer distance = (distanceD != null) ? distanceD.intValue() : 0;
|
// // 设置默认值
|
||||||
|
// if (transportBase.getDistance_base() == null) {
|
||||||
// 基础配送费计算
|
// transportBase.setDistance_base(0);
|
||||||
BigDecimal deliveryBaseFee = Convert.toBigDecimal(transportBase.getDelivery_base_fee(), BigDecimal.ZERO);
|
// }
|
||||||
|
// if (transportBase.getWeight_base() == null) {
|
||||||
// 获取运费配送范围信息
|
// transportBase.setWeight_base(0);
|
||||||
List<ShopStoreSameCityTransport> transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(Convert.toLong(storeId));
|
// }
|
||||||
|
// if (transportBase.getDelivery_base_fee() == null) {
|
||||||
if (CollUtil.isEmpty(transportList)) {
|
// transportBase.setDelivery_base_fee(BigDecimal.ZERO);
|
||||||
// 没有配送范围规则的时候,直接以基础配送费来配送
|
// }
|
||||||
return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue();
|
//
|
||||||
}
|
// // 计算两点的距离(单位米)
|
||||||
|
// Double distanceD = PositionUtil.getDistance1(Convert.toDouble(storeLng), Convert.toDouble(storeLat), Convert.toDouble(orderLongitude), Convert.toDouble(orderLatitude));
|
||||||
// 判断配送范围和起送金额条件
|
// Integer distance = (distanceD != null) ? distanceD.intValue() : 0;
|
||||||
String canNotDeliveryReason = "";
|
//
|
||||||
boolean canDelivery = false;
|
// // 基础配送费计算
|
||||||
|
// BigDecimal deliveryBaseFee = Convert.toBigDecimal(transportBase.getDelivery_base_fee(), BigDecimal.ZERO);
|
||||||
// 优先处理距离和金额都满足的规则
|
//
|
||||||
for (ShopStoreSameCityTransport transport : transportList) {
|
// // 获取运费配送范围信息
|
||||||
// 判断订单距离是否在配送范围内
|
// List<ShopStoreSameCityTransport> transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(Convert.toLong(storeId));
|
||||||
if (transport.getMax_delivery_radius() >= distance) {
|
//
|
||||||
// 距离在配送范围内,判断金额是否符合起配金额额度
|
// if (CollUtil.isEmpty(transportList)) {
|
||||||
boolean moneyPassed = false;
|
// // 没有配送范围规则的时候,直接以基础配送费来配送
|
||||||
if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) {
|
// return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue();
|
||||||
moneyPassed = orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) <= 0;
|
// }
|
||||||
} else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) {
|
//
|
||||||
moneyPassed = orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) <= 0;
|
// // 判断配送范围和起送金额条件
|
||||||
} else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) {
|
// String canNotDeliveryReason = "";
|
||||||
moneyPassed = orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) <= 0;
|
// boolean canDelivery = false;
|
||||||
}
|
//
|
||||||
|
// // 优先处理距离和金额都满足的规则
|
||||||
// 距离和金额都满足条件
|
// for (ShopStoreSameCityTransport transport : transportList) {
|
||||||
if (moneyPassed) {
|
// // 判断订单距离是否在配送范围内
|
||||||
canDelivery = true;
|
// if (transport.getMax_delivery_radius() >= distance) {
|
||||||
break;
|
// // 距离在配送范围内,判断金额是否符合起配金额额度
|
||||||
}
|
// boolean moneyPassed = false;
|
||||||
}
|
// if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) {
|
||||||
}
|
// moneyPassed = orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) <= 0;
|
||||||
|
// } else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) {
|
||||||
// 如果没有找到完全满足条件的规则,再详细检查找出失败原因
|
// moneyPassed = orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) <= 0;
|
||||||
if (!canDelivery) {
|
// } else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) {
|
||||||
for (ShopStoreSameCityTransport transport : transportList) {
|
// moneyPassed = orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) <= 0;
|
||||||
// 判断订单距离是否在配送范围内
|
// }
|
||||||
if (transport.getMax_delivery_radius() < distance) {
|
//
|
||||||
// 记录距离不满足的原因
|
// // 距离和金额都满足条件
|
||||||
canNotDeliveryReason = storeName + "的订单不在配送范围内,订单无法配送。";
|
// if (moneyPassed) {
|
||||||
} else {
|
// canDelivery = true;
|
||||||
// 距离在配送范围内,判断金额是否符合起配金额额度
|
// break;
|
||||||
if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) {
|
// }
|
||||||
if (orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) > 0) {
|
// }
|
||||||
BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderProductAmount);
|
// }
|
||||||
canNotDeliveryReason = String.format("%s商品原价金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
//
|
||||||
} else {
|
// // 如果没有找到完全满足条件的规则,再详细检查找出失败原因
|
||||||
canDelivery = true;
|
// if (!canDelivery) {
|
||||||
break;
|
// for (ShopStoreSameCityTransport transport : transportList) {
|
||||||
}
|
// // 判断订单距离是否在配送范围内
|
||||||
} else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) {
|
// if (transport.getMax_delivery_radius() < distance) {
|
||||||
if (orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) > 0) {
|
// // 记录距离不满足的原因
|
||||||
BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderDiscountAmount);
|
// canNotDeliveryReason = storeName + "的订单不在配送范围内,订单无法配送。";
|
||||||
canNotDeliveryReason = String.format("%s订单折后金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
// } else {
|
||||||
} else {
|
// // 距离在配送范围内,判断金额是否符合起配金额额度
|
||||||
canDelivery = true;
|
// if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) {
|
||||||
break;
|
// if (orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) > 0) {
|
||||||
}
|
// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderProductAmount);
|
||||||
} else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) {
|
// canNotDeliveryReason = String.format("%s商品原价金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
||||||
if (orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) > 0) {
|
// } else {
|
||||||
BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderPayAmount);
|
// canDelivery = true;
|
||||||
canNotDeliveryReason = String.format("%s订单应支付金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
// break;
|
||||||
} else {
|
// }
|
||||||
canDelivery = true;
|
// } else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) {
|
||||||
break;
|
// if (orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) > 0) {
|
||||||
}
|
// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderDiscountAmount);
|
||||||
}
|
// canNotDeliveryReason = String.format("%s订单折后金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
||||||
}
|
// } else {
|
||||||
}
|
// canDelivery = true;
|
||||||
}
|
// break;
|
||||||
|
// }
|
||||||
// 如果仍然不能配送,记录日志并返回0
|
// } else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) {
|
||||||
if (!canDelivery) {
|
// if (orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) > 0) {
|
||||||
logger.warn(canNotDeliveryReason.isEmpty() ? (storeName + "订单不在配送范围内或未达起送金额,请检查!") : canNotDeliveryReason);
|
// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderPayAmount);
|
||||||
return 0;
|
// canNotDeliveryReason = String.format("%s订单应支付金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney);
|
||||||
}
|
// } else {
|
||||||
|
// canDelivery = true;
|
||||||
// 额外配送费计算
|
// break;
|
||||||
// 每增加一个距离累加运费
|
// }
|
||||||
if (transportBase.getDistance_increase_km() != null && transportBase.getDistance_increase_fee() != null && distance > transportBase.getDistance_base() * 1000) {
|
// }
|
||||||
// 实际配送距离超出基础距离,单位km
|
// }
|
||||||
BigDecimal diffDistanceM = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(distance - transportBase.getDistance_base() * 1000).divide(BigDecimal.valueOf(1000)));
|
// }
|
||||||
// 倍数
|
// }
|
||||||
BigDecimal times = BigDecimal.ZERO;
|
//
|
||||||
if (transportBase.getDistance_increase_km() > 0 && diffDistanceM.intValue() > transportBase.getDistance_increase_km()) {
|
// // 如果仍然不能配送,记录日志并返回0
|
||||||
// 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3
|
// if (!canDelivery) {
|
||||||
times = NumberUtil.div(diffDistanceM, transportBase.getDistance_increase_km()).setScale(0, RoundingMode.UP);
|
// logger.warn(canNotDeliveryReason.isEmpty() ? (storeName + "订单不在配送范围内或未达起送金额,请检查!") : canNotDeliveryReason);
|
||||||
}
|
// return 0;
|
||||||
|
// }
|
||||||
// 超过基础运费距离后,累加上运费
|
//
|
||||||
deliveryBaseFee = deliveryBaseFee.add(transportBase.getDistance_increase_fee().multiply(times));
|
// // 额外配送费计算
|
||||||
}
|
// // 每增加一个距离累加运费
|
||||||
|
// if (transportBase.getDistance_increase_km() != null && transportBase.getDistance_increase_fee() != null && distance > transportBase.getDistance_base() * 1000) {
|
||||||
// 每增加一个重量累加运费(重量暂时忽略,配置的时候设置0)
|
// // 实际配送距离超出基础距离,单位km
|
||||||
if (transportBase.getWeight_increase_kg() != null && transportBase.getWeight_increase_fee() != null && orderWeightGram != null && orderWeightGram > transportBase.getWeight_base() * 1000) {
|
// BigDecimal diffDistanceM = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(distance - transportBase.getDistance_base() * 1000).divide(BigDecimal.valueOf(1000)));
|
||||||
// 实际配送重量超出基础重量,单位kg
|
// // 倍数
|
||||||
BigDecimal diffWeightKg = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(orderWeightGram - transportBase.getWeight_base() * 1000).divide(BigDecimal.valueOf(1000)));
|
// BigDecimal times = BigDecimal.ZERO;
|
||||||
// 倍数
|
// if (transportBase.getDistance_increase_km() > 0 && diffDistanceM.intValue() > transportBase.getDistance_increase_km()) {
|
||||||
BigDecimal times = BigDecimal.ZERO;
|
// // 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3
|
||||||
if (transportBase.getWeight_increase_kg() > 0 && diffWeightKg.intValue() > transportBase.getWeight_increase_kg()) {
|
// times = NumberUtil.div(diffDistanceM, transportBase.getDistance_increase_km()).setScale(0, RoundingMode.UP);
|
||||||
// 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3
|
// }
|
||||||
times = NumberUtil.div(diffWeightKg, transportBase.getWeight_increase_kg()).setScale(0, RoundingMode.UP); // 修正:应该除以weight_increase_kg而不是distance_increase_km
|
//
|
||||||
}
|
// // 超过基础运费距离后,累加上运费
|
||||||
|
// deliveryBaseFee = deliveryBaseFee.add(transportBase.getDistance_increase_fee().multiply(times));
|
||||||
deliveryBaseFee = deliveryBaseFee.add(transportBase.getWeight_increase_fee().multiply(times));
|
// }
|
||||||
}
|
//
|
||||||
|
// // 每增加一个重量累加运费(重量暂时忽略,配置的时候设置0)
|
||||||
// 返回单位为分的配送费
|
// if (transportBase.getWeight_increase_kg() != null && transportBase.getWeight_increase_fee() != null && orderWeightGram != null && orderWeightGram > transportBase.getWeight_base() * 1000) {
|
||||||
return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue();
|
// // 实际配送重量超出基础重量,单位kg
|
||||||
|
// BigDecimal diffWeightKg = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(orderWeightGram - transportBase.getWeight_base() * 1000).divide(BigDecimal.valueOf(1000)));
|
||||||
|
// // 倍数
|
||||||
|
// BigDecimal times = BigDecimal.ZERO;
|
||||||
|
// if (transportBase.getWeight_increase_kg() > 0 && diffWeightKg.intValue() > transportBase.getWeight_increase_kg()) {
|
||||||
|
// // 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3
|
||||||
|
// times = NumberUtil.div(diffWeightKg, transportBase.getWeight_increase_kg()).setScale(0, RoundingMode.UP);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// deliveryBaseFee = deliveryBaseFee.add(transportBase.getWeight_increase_fee().multiply(times));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 返回单位为分的配送费
|
||||||
|
// return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ package com.suisung.mall.shop.store.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.suisung.mall.common.api.CommonResult;
|
import com.suisung.mall.common.api.CommonResult;
|
||||||
@ -45,13 +46,16 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
|
|||||||
public CommonResult deleteShopStoreSameCityTransport(Long transportId) {
|
public CommonResult deleteShopStoreSameCityTransport(Long transportId) {
|
||||||
// 判断有没有权限
|
// 判断有没有权限
|
||||||
UserDto user = getCurrentUser();
|
UserDto user = getCurrentUser();
|
||||||
if (user == null || !user.isStore()) {
|
if (user == null || !user.isStore() || !user.isPlatform()) {
|
||||||
return CommonResult.failed("无权限操作!");
|
return CommonResult.failed("无权限操作!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Long storeId = Convert.toLong(user.getStore_id());
|
Long storeId = 0L;
|
||||||
|
if (user.isPlatform()) {
|
||||||
|
storeId = Convert.toLong(user.getStore_id());
|
||||||
|
}
|
||||||
|
|
||||||
if (transportId == null || transportId <= 0 || storeId == null || storeId <= 0) {
|
if (transportId == null || transportId <= 0) {
|
||||||
return CommonResult.failed("缺少必要参数");
|
return CommonResult.failed("缺少必要参数");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,14 +212,16 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean deleteShopStoreSameCityTransport(Long transportId, Long storeId) {
|
public Boolean deleteShopStoreSameCityTransport(Long transportId, Long storeId) {
|
||||||
if (transportId == null || transportId == null || transportId <= 0 || storeId == null || storeId <= 0) {
|
if (transportId == null || transportId == null || transportId <= 0) {
|
||||||
logger.error("缺少 transportId 或 storeId 必要参数!");
|
logger.error("缺少 transportId 必要参数!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryWrapper<ShopStoreSameCityTransport> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<ShopStoreSameCityTransport> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq("transport_id", transportId);
|
queryWrapper.eq(ShopStoreSameCityTransport::getTransport_id, transportId);
|
||||||
queryWrapper.eq("store_id", storeId);
|
if (storeId != null && storeId > 0) {
|
||||||
|
queryWrapper.eq(ShopStoreSameCityTransport::getStore_id, storeId);
|
||||||
|
}
|
||||||
|
|
||||||
ShopStoreSameCityTransport record = getOne(queryWrapper);
|
ShopStoreSameCityTransport record = getOne(queryWrapper);
|
||||||
if (record == null) {
|
if (record == null) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user