交易分账 重构

This commit is contained in:
2023-08-28 19:27:54 +08:00
parent 462462a79d
commit d742ef1ff1

View File

@@ -779,7 +779,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
String payMode = orderBasicInfo.getPayMode(); String payMode = orderBasicInfo.getPayMode();
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
// 余额支付 // 余额支付
balancePaymentOrderRefund(orderBasicInfo); balancePaymentOrderRefundV2(orderBasicInfo);
} else if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { } else if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
// 微信支付 // 微信支付
onlinePaymentOrderRefund(orderBasicInfo); onlinePaymentOrderRefund(orderBasicInfo);
@@ -1085,63 +1085,63 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
/** /**
* 余额支付的订单退款 * 余额支付的订单退款
*/ */
private void balancePaymentOrderRefund(OrderBasicInfo orderBasicInfo) { // private void balancePaymentOrderRefund(OrderBasicInfo orderBasicInfo) {
// 订单编号 // // 订单编号
String orderCode = orderBasicInfo.getOrderCode(); // String orderCode = orderBasicInfo.getOrderCode();
// 订单消费金额 // // 订单消费金额
BigDecimal orderAmount = orderBasicInfo.getOrderAmount(); // BigDecimal orderAmount = orderBasicInfo.getOrderAmount();
// 查支付记录 // // 查支付记录
List<OrderPayRecord> payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); // List<OrderPayRecord> payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
// 更新订单支付记录 // // 更新订单支付记录
List<OrderPayRecord> updatePayRecordList = Lists.newArrayList(); // List<OrderPayRecord> updatePayRecordList = Lists.newArrayList();
//
Map<String, OrderPayRecord> payRecordMap = payRecordList.stream() // Map<String, OrderPayRecord> payRecordMap = payRecordList.stream()
.collect(Collectors.toMap(OrderPayRecord::getPayMode, Function.identity(), (k1, k2) -> k1)); // .collect(Collectors.toMap(OrderPayRecord::getPayMode, Function.identity(), (k1, k2) -> k1));
// 取出本金支付金额,赠送支付金额 // // 取出本金支付金额,赠送支付金额
BigDecimal principalPay = null; // BigDecimal principalPay = null;
BigDecimal giftPay = null; // BigDecimal giftPay = null;
//
OrderPayRecord principalPayRecord = payRecordMap.get(Constants.ONE); // OrderPayRecord principalPayRecord = payRecordMap.get(Constants.ONE);
if (principalPayRecord != null) { // if (principalPayRecord != null) {
principalPay = principalPayRecord.getPayAmount(); // principalPay = principalPayRecord.getPayAmount();
} // }
//
OrderPayRecord giftPayRecord = payRecordMap.get(Constants.TWO); // OrderPayRecord giftPayRecord = payRecordMap.get(Constants.TWO);
if (giftPayRecord != null) { // if (giftPayRecord != null) {
giftPay = giftPayRecord.getPayAmount(); // giftPay = giftPayRecord.getPayAmount();
} // }
//
Map<String, BigDecimal> returnAmountMap = calculateReturnAmount(principalPay, giftPay, orderAmount); // Map<String, BigDecimal> returnAmountMap = calculateReturnAmount(principalPay, giftPay, orderAmount);
logger.info("结算订单:{}, 剩余金额退回余额, 订单消费金额:{}, 本金支付金额:{}, 赠送支付金额:{}, 退回金额map:{}", // logger.info("结算订单:{}, 剩余金额退回余额, 订单消费金额:{}, 本金支付金额:{}, 赠送支付金额:{}, 退回金额map:{}",
orderCode, orderAmount, principalPay, giftPay, JSONObject.toJSONString(returnAmountMap)); // orderCode, orderAmount, principalPay, giftPay, JSONObject.toJSONString(returnAmountMap));
// 更新会员钱包 // // 更新会员钱包
BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal"); // BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal");
if (returnPrincipal != null && principalPayRecord != null) { // if (returnPrincipal != null && principalPayRecord != null) {
principalPayRecord.setRefundAmount(returnPrincipal); // principalPayRecord.setRefundAmount(returnPrincipal);
updatePayRecordList.add(principalPayRecord); // updatePayRecordList.add(principalPayRecord);
} // }
BigDecimal returnGift = returnAmountMap.get("returnGift"); // BigDecimal returnGift = returnAmountMap.get("returnGift");
if (returnGift != null && giftPayRecord != null) { // if (returnGift != null && giftPayRecord != null) {
giftPayRecord.setRefundAmount(returnGift); // giftPayRecord.setRefundAmount(returnGift);
updatePayRecordList.add(giftPayRecord); // updatePayRecordList.add(giftPayRecord);
// 支付的赠送金额-退回的赠送金额 = 实际使用赠送金额消费的部分 // // 支付的赠送金额-退回的赠送金额 = 实际使用赠送金额消费的部分
// virtualAmount = giftPay.subtract(returnGift); // // virtualAmount = giftPay.subtract(returnGift);
} // }
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() // UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
.memberId(orderBasicInfo.getMemberId()) // .memberId(orderBasicInfo.getMemberId())
.type(MemberWalletEnum.TYPE_IN.getValue()) // 进账 // .type(MemberWalletEnum.TYPE_IN.getValue()) // 进账
.subType(MemberWalletEnum.SUBTYPE_ORDER_SETTLEMENT_REFUND.getValue()) // 订单结算退款 // .subType(MemberWalletEnum.SUBTYPE_ORDER_SETTLEMENT_REFUND.getValue()) // 订单结算退款
.updatePrincipalBalance(returnPrincipal) // .updatePrincipalBalance(returnPrincipal)
.updateGiftBalance(returnGift) // .updateGiftBalance(returnGift)
.relatedOrderCode(orderCode) // .relatedOrderCode(orderCode)
.build(); // .build();
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); // memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
//
// 更新order_pay_record // // 更新order_pay_record
if (CollectionUtils.isNotEmpty(updatePayRecordList)) { // if (CollectionUtils.isNotEmpty(updatePayRecordList)) {
orderPayRecordService.updateBatch(updatePayRecordList); // orderPayRecordService.updateBatch(updatePayRecordList);
} // }
} // }
private void balancePaymentOrderRefundV2(OrderBasicInfo orderBasicInfo) { private void balancePaymentOrderRefundV2(OrderBasicInfo orderBasicInfo) {
// 订单编号 // 订单编号