电单车订单,按实际退款

This commit is contained in:
Guoqs
2025-11-14 10:43:48 +08:00
parent 67d44f0b57
commit 68c947574d

View File

@@ -609,32 +609,43 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
// 查询订单信息
OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderBasicInfo.getOrderCode());
// 订单消费金额, 除了充满自停是需要计算实际消费, 其他金额都是按次收费
BigDecimal orderAmount;
BigDecimal orderAmount = BigDecimal.ZERO;
// 耗电量
BigDecimal consumedEnergy = message.getConsumedEnergy();
if (fullOfSelfStopping.compareTo(orderBasicInfo.getPayAmount()) == 0) {
// 计费模板, 只取平时段的价格
BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度
// BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度
BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0
// 单价 = 电费单价 + 服务费单价
BigDecimal price = flatElectricityPrice.add(flatServicePrice);
// 如果耗电量或单价为空或者为0则订单消费为0
// if (consumedEnergy == null || consumedEnergy.compareTo(BigDecimal.ZERO) == 0 || price.compareTo(BigDecimal.ZERO) == 0) {
// logger.info("计算电单车退款逻辑,耗电量或计费模板为空,不执行退款逻辑, orderCode:{}, 耗电量:{}, 每度电费:{}", orderBasicInfo.getOrderCode(), consumedEnergy, price);
// return;
// }
// 计算实际消费, 保留两位小数
orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP);
} else {
// 2025.07.28如果耗电量为 0也进行退款
if (consumedEnergy.compareTo(BigDecimal.ZERO) == 0) {
orderAmount = BigDecimal.ZERO;
}else {
// 其他金额、并且耗电量不为 0 ,都是按次收费, 不退款
orderAmount = orderBasicInfo.getPayAmount();
}
}
// 计算实际消费金额
// 计费模板, 只取平时段的价格
BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度
// BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度
BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0
// 单价 = 电费单价 + 服务费单价
BigDecimal price = flatElectricityPrice.add(flatServicePrice);
// 计算实际消费, 保留两位小数
orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP);
// if (fullOfSelfStopping.compareTo(orderBasicInfo.getPayAmount()) == 0) {
// // 计费模板, 只取平时段的价格
// BigDecimal flatElectricityPrice = orderDetail.getFlatElectricityPrice() != null ? orderDetail.getFlatElectricityPrice() : BigDecimal.ZERO; // x元/每度
// // BigDecimal flatServicePrice = orderDetail.getFlatServicePrice() != null ? orderDetail.getFlatServicePrice() : BigDecimal.ZERO; // x元/每度
// BigDecimal flatServicePrice = BigDecimal.ZERO; // x元/每度 服务费默认0
// // 单价 = 电费单价 + 服务费单价
// BigDecimal price = flatElectricityPrice.add(flatServicePrice);
// // 如果耗电量或单价为空或者为0则订单消费为0
// // if (consumedEnergy == null || consumedEnergy.compareTo(BigDecimal.ZERO) == 0 || price.compareTo(BigDecimal.ZERO) == 0) {
// // logger.info("计算电单车退款逻辑,耗电量或计费模板为空,不执行退款逻辑, orderCode:{}, 耗电量:{}, 每度电费:{}", orderBasicInfo.getOrderCode(), consumedEnergy, price);
// // return;
// // }
// // 计算实际消费, 保留两位小数
// orderAmount = consumedEnergy.multiply(price).setScale(2, RoundingMode.UP);
// } else {
// // 2025.07.28如果耗电量为 0也进行退款
// if (consumedEnergy.compareTo(BigDecimal.ZERO) == 0) {
// orderAmount = BigDecimal.ZERO;
// }else {
// // 其他金额、并且耗电量不为 0 ,都是按次收费, 不退款
// orderAmount = orderBasicInfo.getPayAmount();
// }
// }
// 退款金额 = 支付金额 - 优惠后总消费金额
BigDecimal refundAmount = orderBasicInfo.getPayAmount().subtract(orderAmount);