diff --git a/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/SubaccountServiceImpl.java b/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/SubaccountServiceImpl.java index a6cb1d0..860bd77 100644 --- a/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/SubaccountServiceImpl.java +++ b/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/SubaccountServiceImpl.java @@ -1,6 +1,7 @@ package com.yn.bftl.thirdparty.modules.business.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.yn.bftl.common.common.exception.YnceError; import com.yn.bftl.common.common.util.ByxRouteUtil; @@ -1344,9 +1345,9 @@ .reduce(BigDecimal.ZERO, BigDecimal::add); if (totalSubaccountAmount.compareTo(order.getPayAmount().subtract(order.getRefundAmount())) == 0) { return true; - } else { - return false; } + log.error("分账金额不正确, orderId:" + order.getId() + ", orderPayAmount:" + order.getPayAmount() + ", totalSubaccountAmount:" + totalSubaccountAmount); + return false; } /** @@ -2353,10 +2354,12 @@ // 获取已生成的平台服务费分账记录 List platformSubaccounts = subaccountList.stream().filter(subaccount -> subaccount.getCompany() == null).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(platformSubaccounts)) { - for (Subaccount platformSubaccount : platformSubaccounts) { - handleSubaccountStatus(platformSubaccount, false); - } - } else if (CollectionUtils.isNotEmpty(platformSubaccountList)) { + log.error("分账的公司信息为空."); +// for (Subaccount platformSubaccount : platformSubaccounts) { +// handleSubaccountStatus(platformSubaccount, false); +// } + } //else + if (CollectionUtils.isNotEmpty(platformSubaccountList)) { // 获取平台电子账簿ID String balanceAcctId = chinaumsUtil.getFeeBalanceAcctId(); // 获取平台服务费对应的银联支付单 @@ -2381,7 +2384,7 @@ List confirmsDetailDTOList = new ArrayList<>(); ByxChinaumsGuaranteePayConfirmsDetailDTO confirmsDetailDTO = ByxChinaumsGuaranteePayConfirmsDetailDTO .builder() - .profitSharingWalletId(businessRelations.getSourceCompany().getWalletId()) + .profitSharingWalletId(balanceAcctId) .profitSharingAmt(platformServiceFee.multiply(new BigDecimal(100)).longValue()) .build(); confirmsDetailDTOList.add(confirmsDetailDTO); @@ -2400,10 +2403,15 @@ try { String externalId = walletService.paySettlementConfirms(byxChinaumsGuaranteePayConfirmsDTO); writeSeparateLog(String.format("[分账][生成][普通订单][%s],生成分账单成功,银联结算单号[%s]。", order.getSn(), externalId)); + if (StringUtils.isEmpty(externalId)) { + log.error("银联结算接口调用失败."); + throw new YnceErrorException("银联结算接口调用失败"); + } for (Subaccount subaccount : platformSubaccountList) { subaccount.setExternalId(externalId); + subaccount.setSubaccountState(SubaccountState.SEPARATE_SUCC); subaccountRepository.saveAndFlush(subaccount); - handleSubaccountStatus(subaccount, false); +// handleSubaccountStatus(subaccount, false); } subaccountList.addAll(platformSubaccountList); } catch (Exception e) { @@ -2690,10 +2698,14 @@ platformSubaccountList.remove(platformSubaccount); continue; } + if (StringUtils.isEmpty(settOrderNo)) { + continue; + } + subaccount.setSubaccountState(SubaccountState.SEPARATE_SUCC); subaccount.setExternalId(settOrderNo); subaccountRepository.saveAndFlush(subaccount); writeSeparateLog(String.format("[分账][生成][普通订单][%s],生成分账单成功,银联结算单号[%s]。", order.getSn(), settOrderNo)); - handleSubaccountStatus(subaccount, false); +// handleSubaccountStatus(subaccount, false); subaccountList.add(subaccount); } return platformSubaccountList;