diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java index 7403b397a..f9804f2b3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java @@ -311,7 +311,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { } /** - * 余额支付订单 + * 万车充小程序-余额支付订单逻辑 * 使用的是通过后管充值的余额 * 包括赠送金 */ @@ -350,7 +350,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { .build(); memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); - + // 本金支付 OrderPayRecord principalPayRecord = OrderPayRecord.builder() .orderCode(orderCode) .payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()) @@ -361,6 +361,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { .delFlag(DelFlagEnum.NORMAL.getValue()) .build(); + // 赠送金支付 OrderPayRecord giftPayRecord = OrderPayRecord.builder() .orderCode(orderCode) .payMode(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue()) @@ -371,7 +372,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { .delFlag(DelFlagEnum.NORMAL.getValue()) .build(); - // 记录支订单付流水 + // 记录支订单付流水 记录两条支付 List payRecordList = Lists.newArrayList(principalPayRecord, giftPayRecord); orderPayRecordService.batchInsert(payRecordList); @@ -619,7 +620,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { logger.info("【{}】-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); - + // 运营商id String merchantId = orderBasicInfo.getMerchantId(); // 订单消费金额 BigDecimal orderAmount = orderBasicInfo.getOrderAmount(); @@ -628,16 +629,21 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { // 根据payMode分组 Map> payRecordMap = payRecordList.stream().collect(Collectors.groupingBy(OrderPayRecord::getPayMode)); // 获取本金支付的记录 - List orderPayRecordList = payRecordMap.get(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()); - BigDecimal principalPay = orderPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + List principalPayRecordList = payRecordMap.get(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()); + BigDecimal principalPay = principalPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + // 获取赠送金支付的记录 + List giftPayRecordList = payRecordMap.get(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue()); + BigDecimal giftPay = giftPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add); // 计算需要退回的金额 - Map returnAmountMap = calculateReturnAmount(principalPay, null, orderAmount); + Map returnAmountMap = calculateReturnAmount(principalPay, giftPay, orderAmount); logger.info("结算订单:{}, 剩余金额退回余额, 订单消费金额:{}, 本金支付金额:{}, 赠送支付金额:{}, 退回金额map:{}", orderCode, orderAmount, principalPay, null, JSONObject.toJSONString(returnAmountMap)); // 需要退回本金的金额 BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal"); + // 需要退回赠送金的金额 + BigDecimal returnGift = returnAmountMap.get("returnGift"); // 更新会员钱包/余额退回到钱包 UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() @@ -646,6 +652,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { .type(MemberWalletEnum.TYPE_IN.getValue()) // 进账 .subType(MemberWalletEnum.SUBTYPE_ORDER_SETTLEMENT_REFUND.getValue()) // 订单结算退款 .updatePrincipalBalance(returnPrincipal) + .updateGiftBalance(returnGift) .relatedOrderCode(orderCode) .build(); memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);