mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-25 21:45:08 +08:00
update会员计费模板
This commit is contained in:
@@ -715,8 +715,9 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
BigDecimal discountElectricityAmount = BigDecimal.ZERO;
|
||||
// 服务费折扣金额
|
||||
BigDecimal discountServiceAmount = BigDecimal.ZERO;
|
||||
|
||||
// 优惠后服务费金额 初始值为优惠前金额
|
||||
BigDecimal afterServiceAmountDiscount = orderDetail.getTotalServiceAmount();
|
||||
// 优惠后电费金额 初始值为优惠前金额
|
||||
BigDecimal afterElectricityAmountDiscount = orderDetail.getTotalElectricityAmount();
|
||||
|
||||
// 查询会员在此站点会员折扣
|
||||
@@ -783,8 +784,128 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
protected void calculateOrderDiscountsV2(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) {
|
||||
String memberId = orderBasicInfo.getMemberId(); // 会员id
|
||||
String stationId = orderBasicInfo.getStationId(); // 站点id
|
||||
String merchantId = orderBasicInfo.getMerchantId(); // 运营商id
|
||||
|
||||
// 原始电费金额
|
||||
BigDecimal originalTotalElectricityAmount = orderDetail.getTotalElectricityAmount();
|
||||
// 原始服务费金额
|
||||
BigDecimal originalTotalServiceAmount = orderDetail.getTotalServiceAmount();
|
||||
// 电费折扣金额 初始值为0
|
||||
BigDecimal electricityAmountDiscount = BigDecimal.ZERO;
|
||||
// 服务费折扣金额 初始值为0
|
||||
BigDecimal serviceAmountDiscount = BigDecimal.ZERO;
|
||||
// 优惠后电费金额 初始值为优惠前金额
|
||||
BigDecimal afterDiscountElectricityAmount = BigDecimal.ZERO;
|
||||
// 优惠后服务费金额 初始值为优惠前金额
|
||||
BigDecimal afterDiscountServiceAmount = BigDecimal.ZERO;
|
||||
|
||||
// 查询会员在该站点享受的优惠
|
||||
MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscountV2(merchantId, stationId, memberId);
|
||||
if (memberDiscountVO == null) {
|
||||
// 如果没有优惠,则优惠后金额 等于优惠前金额
|
||||
afterDiscountServiceAmount = orderDetail.getTotalServiceAmount();
|
||||
afterDiscountElectricityAmount = orderDetail.getTotalElectricityAmount();
|
||||
} else {
|
||||
BillingTemplateVO billingTemplateVO = memberDiscountVO.getBillingTemplateVO();
|
||||
|
||||
// 尖时段用电量
|
||||
BigDecimal sharpUsedElectricity = orderDetail.getSharpUsedElectricity();
|
||||
if (sharpUsedElectricity != null) {
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal sharpElectricityAmount = billingTemplateVO.getSharpElectricityPrice()
|
||||
.multiply(sharpUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费
|
||||
BigDecimal sharpServiceAmount = billingTemplateVO.getSharpServicePrice()
|
||||
.multiply(sharpUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(sharpElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(sharpServiceAmount);
|
||||
}
|
||||
|
||||
// 峰时段用电量
|
||||
BigDecimal peakUsedElectricity = orderDetail.getPeakUsedElectricity();
|
||||
if (peakUsedElectricity != null) {
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal peakElectricityAmount = billingTemplateVO.getPeakElectricityPrice()
|
||||
.multiply(peakUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费
|
||||
BigDecimal peakServiceAmount = billingTemplateVO.getPeakServicePrice()
|
||||
.multiply(peakUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(peakElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(peakServiceAmount);
|
||||
}
|
||||
|
||||
// 平时段用电量
|
||||
BigDecimal flatUsedElectricity = orderDetail.getFlatUsedElectricity();
|
||||
if (flatUsedElectricity != null) {
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal flatElectricityAmount = billingTemplateVO.getFlatElectricityPrice()
|
||||
.multiply(flatUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费
|
||||
BigDecimal flatServiceAmount = billingTemplateVO.getFlatServicePrice()
|
||||
.multiply(flatUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(flatElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(flatServiceAmount);
|
||||
}
|
||||
|
||||
// 谷时段用电量
|
||||
BigDecimal valleyUsedElectricity = orderDetail.getValleyUsedElectricity();
|
||||
if (valleyUsedElectricity != null) {
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal valleyElectricityAmount = billingTemplateVO.getValleyElectricityPrice()
|
||||
.multiply(valleyUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费
|
||||
BigDecimal valleyServiceAmount = billingTemplateVO.getValleyServicePrice()
|
||||
.multiply(valleyUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(valleyElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(valleyServiceAmount);
|
||||
}
|
||||
|
||||
// 计算优惠了多少钱
|
||||
// 电费折扣金额
|
||||
electricityAmountDiscount = originalTotalElectricityAmount.subtract(afterDiscountElectricityAmount);
|
||||
// 服务费折扣金额
|
||||
serviceAmountDiscount = originalTotalServiceAmount.subtract(afterDiscountServiceAmount);
|
||||
}
|
||||
|
||||
/*
|
||||
更新 数据
|
||||
*/
|
||||
// 订单折扣金额
|
||||
BigDecimal discountAmount = electricityAmountDiscount.add(serviceAmountDiscount);
|
||||
orderBasicInfo.setDiscountAmount(discountAmount);
|
||||
|
||||
// 更新结算金额 结算金额 = 消费金额 - 虚拟金额 - 优惠金额
|
||||
BigDecimal newSettleAmount = orderBasicInfo.getSettleAmount().subtract(discountAmount);
|
||||
orderBasicInfo.setSettleAmount(newSettleAmount);
|
||||
|
||||
// 优惠后总消费金额 = 折扣后电费 + 折扣后服务费
|
||||
BigDecimal totalConsumeAmount = afterDiscountServiceAmount.add(afterDiscountElectricityAmount);
|
||||
|
||||
// 更新退款金额 = 支付金额 - 优惠后总消费金额
|
||||
BigDecimal refundAmount = orderBasicInfo.getPayAmount().subtract(totalConsumeAmount).setScale(2, RoundingMode.DOWN);
|
||||
orderBasicInfo.setRefundAmount(refundAmount);
|
||||
// 电费折扣金额
|
||||
orderDetail.setDiscountElectricityAmount(electricityAmountDiscount);
|
||||
// 服务费折扣金额
|
||||
orderDetail.setDiscountServiceAmount(serviceAmountDiscount);
|
||||
logger.info("计算订单折扣, orderCode:{}, memberId:{}, 订单折扣金额:{}, 电费折扣金额:{}, 服务费折扣金额:{}, 优惠后总消费金额:{}",
|
||||
orderBasicInfo.getOrderCode(), memberId, discountAmount, electricityAmountDiscount, serviceAmountDiscount, totalConsumeAmount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -373,7 +373,9 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
||||
// 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据
|
||||
OrderDetail orderDetail = returnUpdateOrderDetail(orderBasicInfo, data);
|
||||
// 计算订单折扣 calculateOrderDiscounts
|
||||
calculateOrderDiscounts(orderBasicInfo, orderDetail);
|
||||
// calculateOrderDiscounts(orderBasicInfo, orderDetail);
|
||||
// calculateOrderDiscountsV2(orderBasicInfo, orderDetail);
|
||||
|
||||
// 更新数据库
|
||||
OrderTransactionDTO dto = new OrderTransactionDTO();
|
||||
dto.setOrderBasicInfo(orderBasicInfo);
|
||||
|
||||
Reference in New Issue
Block a user