From f86e4e44b9dc5e7f50ca1f65d8408643a70cdf12 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 25 Sep 2024 10:26:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=8D=95=E8=BD=A6=E5=85=85=E6=BB=A1?= =?UTF-8?q?=E8=87=AA=E5=81=9C=E9=80=80=E6=AC=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DelayMerchantProgramLogic.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 140fd9e17..173a60054 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -44,6 +44,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.time.LocalDateTime; import java.util.List; @@ -522,13 +523,37 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { dto.setOrderDetail(orderDetail); transactionService.doUpdateOrder(dto); - // 充电时间大于30秒不退费 - int chargingTime = message.getChargingTime(); - if (chargingTime < 30) { - // 退款 + // 充满自停需要退款 + BigDecimal bigDecimal = new BigDecimal("5"); + if (bigDecimal.compareTo(orderBasicInfo.getPayAmount()) == 0) { + // 计算电单车退款金额 + calculateEBikeRefund(orderBasicInfo, orderDetail, message); + + // 订单退款 + refundOrder(orderBasicInfo); } } + /** + * 计算电单车退款逻辑 + * @param orderBasicInfo + */ + private void calculateEBikeRefund(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail, EBikeMessageCmd03 message) { + // 耗电量 + BigDecimal consumedEnergy = message.getConsumedEnergy(); + + // 计费模板 + BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice(); // x元/每度 + BigDecimal flatServicePrice = orderDetail.getFlatServicePrice(); // x元/每度 + + // 消费金额 + BigDecimal consumeAmount = consumedEnergy.multiply(flatElectricityPrice); + + // 更新退款金额 = 支付金额 - 优惠后总消费金额 + BigDecimal refundAmount = orderBasicInfo.getPayAmount().subtract(consumeAmount).setScale(2, RoundingMode.DOWN); + orderBasicInfo.setRefundAmount(refundAmount); + } + /** * 第三方平台结算订单(目前给华为用) * @param data