This commit is contained in:
2023-12-28 15:12:12 +08:00
parent e630322a0a
commit 39d003597a

View File

@@ -795,9 +795,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
/** /**
* 记账 * 记账
*/ */
private void doUpdateClearingBill(OrderSettleResult orderSettleResult) { // private void doUpdateClearingBill(OrderSettleResult orderSettleResult) {
logger.info("orderSettleResult:{}", JSON.toJSONString(orderSettleResult)); // logger.info("orderSettleResult:{}", JSON.toJSONString(orderSettleResult));
} // }
/** /**
* 订单分账逻辑 * 订单分账逻辑
@@ -3169,129 +3169,129 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* @param orderCode 订单编号 * @param orderCode 订单编号
* @param memberId 会员id * @param memberId 会员id
*/ */
private BigDecimal queryBalanceOrderSettleInfo(String orderCode, String memberId, String wechatAppId) { // private BigDecimal queryBalanceOrderSettleInfo(String orderCode, String memberId, String wechatAppId) {
BigDecimal resultAmt = BigDecimal.ZERO; // BigDecimal resultAmt = BigDecimal.ZERO;
// 查询会员余额支付记录 // // 查询会员余额支付记录
List<MemberAdapayRecord> recordList = memberAdapayRecordService.selectAdapayRecordList(memberId, ScenarioEnum.BALANCE.getValue()); // List<MemberAdapayRecord> recordList = memberAdapayRecordService.selectAdapayRecordList(memberId, ScenarioEnum.BALANCE.getValue());
if (CollectionUtils.isEmpty(recordList)) { // if (CollectionUtils.isEmpty(recordList)) {
return resultAmt; // return resultAmt;
} // }
//
// 用汇付api查询分账信息 // // 用汇付api查询分账信息
for (MemberAdapayRecord record : recordList) { // for (MemberAdapayRecord record : recordList) {
QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); // QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO();
dto.setWechatAppId(wechatAppId); // dto.setWechatAppId(wechatAppId);
dto.setPaymentId(record.getPaymentId()); // dto.setPaymentId(record.getPaymentId());
QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto); // QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto);
if (response != null && CollectionUtils.isNotEmpty(response.getPaymentConfirms())) { // if (response != null && CollectionUtils.isNotEmpty(response.getPaymentConfirms())) {
for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo paymentConfirm : response.getPaymentConfirms()) { // for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo paymentConfirm : response.getPaymentConfirms()) {
JSONObject jsonObject = JSON.parseObject(paymentConfirm.getDescription()); // JSONObject jsonObject = JSON.parseObject(paymentConfirm.getDescription());
if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) { // if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) {
// 订单号对的上,累计分账金额 // // 订单号对的上,累计分账金额
resultAmt = resultAmt.add(new BigDecimal(paymentConfirm.getConfirmAmt())); // resultAmt = resultAmt.add(new BigDecimal(paymentConfirm.getConfirmAmt()));
} // }
} // }
} // }
} // }
return resultAmt; // return resultAmt;
} // }
/** /**
* 余额支付订单逻辑 * 余额支付订单逻辑
* 去除赠送金额相关的代码 * 去除赠送金额相关的代码
* @param dto * @param dto
*/ */
private void balancePayOrder(PayOrderDTO dto) { // private void balancePayOrder(PayOrderDTO dto) {
// 记录支付流水 // // 记录支付流水
List<OrderPayRecord> payRecordList = Lists.newArrayList(); // List<OrderPayRecord> payRecordList = Lists.newArrayList();
String orderCode = dto.getOrderCode(); // String orderCode = dto.getOrderCode();
BigDecimal chargeAmount = dto.getPayAmount(); // BigDecimal chargeAmount = dto.getPayAmount();
// 查询该会员的余额 // // 查询该会员的余额
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); // MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); // BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount();
//
if (totalAccountAmount.compareTo(chargeAmount) < 0) { // if (totalAccountAmount.compareTo(chargeAmount) < 0) {
// 总余额小于充电金额 // // 总余额小于充电金额
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); // throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
} // }
BigDecimal principalAmount = memberVO.getPrincipalBalance(); // 会员剩余本金金额 // BigDecimal principalAmount = memberVO.getPrincipalBalance(); // 会员剩余本金金额
BigDecimal giftAmount = memberVO.getGiftBalance(); // 会员剩余赠送余额 // BigDecimal giftAmount = memberVO.getGiftBalance(); // 会员剩余赠送余额
//
BigDecimal principalPay = null; // 30 // BigDecimal principalPay = null; // 30
BigDecimal giftPay = null; // 10 // BigDecimal giftPay = null; // 10
// 先扣除本金金额,再扣除赠送金额 // // 先扣除本金金额,再扣除赠送金额
BigDecimal subtract = principalAmount.subtract(chargeAmount); // BigDecimal subtract = principalAmount.subtract(chargeAmount);
if (subtract.compareTo(BigDecimal.ZERO) >= 0) { // if (subtract.compareTo(BigDecimal.ZERO) >= 0) {
principalPay = chargeAmount; // principalPay = chargeAmount;
} else { // } else {
if (principalAmount.compareTo(BigDecimal.ZERO) > 0) { // if (principalAmount.compareTo(BigDecimal.ZERO) > 0) {
principalPay = principalAmount; // principalPay = principalAmount;
} // }
giftPay = subtract.negate(); // giftPay = subtract.negate();
} // }
//
// 更新会员钱包 // // 更新会员钱包
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() // UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
.memberId(dto.getMemberId()) // .memberId(dto.getMemberId())
.type(MemberWalletEnum.TYPE_OUT.getValue()) // .type(MemberWalletEnum.TYPE_OUT.getValue())
.subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue()) // .subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
.updatePrincipalBalance(principalPay) // .updatePrincipalBalance(principalPay)
.updateGiftBalance(giftPay) // .updateGiftBalance(giftPay)
.relatedOrderCode(orderCode) // .relatedOrderCode(orderCode)
.build(); // .build();
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); // memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
//
// 查询余额充值有剩余的记录 // // 查询余额充值有剩余的记录
List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount); // List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount);
//
//
//
// 记录流水 // // 记录流水
if (principalPay != null) { // if (principalPay != null) {
payRecordList.add(OrderPayRecord.builder() // payRecordList.add(OrderPayRecord.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()) // .payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
.payAmount(principalPay) // .payAmount(principalPay)
.acquirer(AcquirerEnum.LOCAL.getValue()) // .acquirer(AcquirerEnum.LOCAL.getValue())
.createBy(dto.getMemberId()) // .createBy(dto.getMemberId())
.build()); // .build());
} // }
if (giftPay != null) { // if (giftPay != null) {
payRecordList.add(OrderPayRecord.builder() // payRecordList.add(OrderPayRecord.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.payMode(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue()) // .payMode(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())
.payAmount(giftPay) // .payAmount(giftPay)
.acquirer(AcquirerEnum.LOCAL.getValue()) // .acquirer(AcquirerEnum.LOCAL.getValue())
.createBy(dto.getMemberId()) // .createBy(dto.getMemberId())
.build()); // .build());
} // }
// 余额支付可以直接调支付回调方法 // // 余额支付可以直接调支付回调方法
PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() // PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.payAmount(chargeAmount) // .payAmount(chargeAmount)
.payMode(dto.getPayMode()) // .payMode(dto.getPayMode())
.startMode(dto.getStartMode()) // .startMode(dto.getStartMode())
.acquirer(AcquirerEnum.LOCAL.getValue()) // .acquirer(AcquirerEnum.LOCAL.getValue())
.build(); // .build();
payOrderSuccessCallback(callbackDTO); // payOrderSuccessCallback(callbackDTO);
//
// 余额支付订单 记录会员交易流水 // // 余额支付订单 记录会员交易流水
MemberTransactionRecord record = MemberTransactionRecord.builder() // MemberTransactionRecord record = MemberTransactionRecord.builder()
.orderCode(orderCode) // .orderCode(orderCode)
.scenarioType(ScenarioEnum.ORDER.getValue()) // .scenarioType(ScenarioEnum.ORDER.getValue())
.memberId(memberVO.getMemberId()) // .memberId(memberVO.getMemberId())
.actionType(ActionTypeEnum.FORWARD.getValue()) // .actionType(ActionTypeEnum.FORWARD.getValue())
.payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue()) // .payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue())
.paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue()) // .paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue())
.amount(dto.getPayAmount()) // 单位元 // .amount(dto.getPayAmount()) // 单位元
.build(); // .build();
memberTransactionRecordService.insertSelective(record); // memberTransactionRecordService.insertSelective(record);
//
// 订单支付流水入库 // // 订单支付流水入库
if (CollectionUtils.isNotEmpty(payRecordList)) { // if (CollectionUtils.isNotEmpty(payRecordList)) {
orderPayRecordService.batchInsert(payRecordList); // orderPayRecordService.batchInsert(payRecordList);
} // }
} // }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void balancePayOrderV2(PayOrderDTO dto) { public void balancePayOrderV2(PayOrderDTO dto) {