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 c46bcb037..cdf2133f2 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 @@ -215,6 +215,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { /** * 余额支付订单 + * 使用的是通过汇付充值的余额 */ @Transactional(rollbackFor = Exception.class) public void balancePayOrder(PayOrderDTO dto) { @@ -311,6 +312,8 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { /** * 余额支付订单 + * 使用的是通过后管充值的余额 + * 包括赠送金 */ @Transactional(rollbackFor = Exception.class) public void balancePayOrderV2(PayOrderDTO dto) { @@ -347,110 +350,6 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { .build(); memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); - // 查询余额充值有剩余的记录 - List list = calculateTheBalanceDeductionAmount(memberId, chargeAmount); - - // 记录订单支付流水 - BigDecimal payAmt = BigDecimal.ZERO; - List paymentInfos = Lists.newArrayList(); - for (BalanceDeductionAmountVO balanceDeductionAmountVO : list) { - String paymentId = balanceDeductionAmountVO.getPaymentId(); - // 此交易单扣除金额 - BigDecimal deductionAmount = balanceDeductionAmountVO.getDeductionAmount(); - payAmt = payAmt.add(deductionAmount); - - PaymentInfo paymentInfo = new PaymentInfo(); - paymentInfo.setPaymentId(paymentId); - paymentInfo.setAmount(deductionAmount.toString()); - paymentInfos.add(paymentInfo); - } - OrderPayRecord build = OrderPayRecord.builder() - .orderCode(orderCode) - .payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()) - .payAmount(principalPay) - .acquirer(AcquirerEnum.LOCAL.getValue()) - .deductionRecord(JSON.toJSONString(paymentInfos)) - .createBy(memberId) - .delFlag(DelFlagEnum.NORMAL.getValue()) - .build(); - - // 记录支订单付流水 - List payRecordList = Lists.newArrayList(build); - orderPayRecordService.batchInsert(payRecordList); - - // 把消费金额冻结 - for (OrderPayRecord record : payRecordList) { - List paymentInfoList = parseDeductionRecord(record.getDeductionRecord()); - // 循环冻结金额 - for (PaymentInfo paymentInfo : paymentInfoList) { - String paymentId = paymentInfo.getPaymentId(); - BigDecimal amount = new BigDecimal(paymentInfo.getAmount()); - // 余额支付 临时冻结金额 - memberAdapayRecordService.updateFreezeAmount(paymentId, amount); - } - } - - // 余额支付可以直接调支付回调方法 - PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() - .orderCode(orderCode) - .payAmount(chargeAmount) - .payMode(dto.getPayMode()) - .startMode(dto.getStartMode()) - .acquirer(AcquirerEnum.LOCAL.getValue()) - .build(); - payOrderSuccessCallback(callbackDTO); - - // 余额支付订单 记录会员交易流水 - MemberTransactionRecord record = MemberTransactionRecord.builder() - .orderCode(orderCode) - .scenarioType(ScenarioEnum.ORDER.getValue()) - .memberId(memberId) - .actionType(ActionTypeEnum.FORWARD.getValue()) - .payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue()) - .paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue()) - .amount(dto.getPayAmount()) // 单位元 - .build(); - memberTransactionRecordService.insertSelective(record); - } - - /** - * 余额支付订单 - */ - @Transactional(rollbackFor = Exception.class) - public void balancePayOrderV3(PayOrderDTO dto) { - logger.info("【{}】-余额支付订单V3start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); - // 订单编号 - String orderCode = dto.getOrderCode(); - // 查订单详情 - OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); - // 订单所属运营商id - String merchantId = orderBasicInfo.getMerchantId(); - // 支付金额 - BigDecimal chargeAmount = dto.getPayAmount(); - // 会员id - String memberId = dto.getMemberId(); - // 查询该会员的余额 在所属运营商的余额 - MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId); - // MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByMemberId(memberId, merchantId); - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); // 总余额 - - if (totalAccountAmount.compareTo(chargeAmount) < 0) { - // 总余额小于充电金额 - throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); - } - BigDecimal principalPay = chargeAmount; - - // 更新会员钱包 - UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() - .memberId(memberId) - .targetMerchantId(merchantId) - .type(MemberWalletEnum.TYPE_OUT.getValue()) - .subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue()) - .updatePrincipalBalance(principalPay) // 使用本金支付的金额 - .relatedOrderCode(orderCode) - .build(); - memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); - // 查询余额充值有剩余的记录 // List list = calculateTheBalanceDeductionAmount(memberId, chargeAmount);