This commit is contained in:
Guoqs
2024-12-26 15:43:58 +08:00
parent c2f5f15557
commit 7ed2c66592

View File

@@ -1666,7 +1666,11 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// 订单退款,汇付退款
refundMethod(afterSettleOrderDTO);
return null;
// 组装结果集
OrderSplitResult result = new OrderSplitResult();
result.setOrderCode(afterSettleOrderDTO.getOrderCode());
return result;
}
/**
@@ -1714,11 +1718,58 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// 根据站点id查询分账配置
List<StationSplitConfig> stationSplitConfigList = stationSplitConfigService.queryByStationId(afterSettleOrderDTO.getStationId());
// 订单分账
calculationOfSplitAmount(stationSplitConfigList, afterSettleOrderDTO);
// 计算每个参与分账的用户, 应分多少钱
List<DivMember> divMemberList = calculationOfSplitAmount(stationSplitConfigList, afterSettleOrderDTO);
// 执行分账
if (CollectionUtils.isEmpty(divMemberList)) {
logger.info("分账信息为空");
return;
}
String orderCode = afterSettleOrderDTO.getOrderCode();
// 查询订单支付记录
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
// 选出需要分账的支付id
List<PaymentInfo> paymentInfos = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
BigDecimal payAmount = orderPayRecord.getPayAmount();
BigDecimal refundAmount = orderPayRecord.getRefundAmount() == null ? BigDecimal.ZERO : orderPayRecord.getRefundAmount();
// 如果相减等于0说明这笔支付单退完了就不用分账了
BigDecimal subtract = payAmount.subtract(refundAmount);
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
paymentInfos.addAll(orderPayRecordService.parseDeductionRecord(orderPayRecord.getDeductionRecord()));
}
}
// 支付id
String paymentId = paymentInfos.get(0).getPaymentId();
// 运营商id
String merchantId = afterSettleOrderDTO.getMerchantId();
// 根据运营商id 查询appId
String appId = pileMerchantInfoService.queryAppIdByMerchantId(merchantId);
PaymentConfirmParam param = PaymentConfirmParam.builder()
.paymentId(paymentId)
.divMemberList(divMemberList)
.confirmAmt(orderSettleAmount)
.orderCode(orderCode)
.wechatAppId(appId)
.build();
adapayService.createPaymentConfirmRequest(param);
}
/**
* 计算每个账户需要分账的金额
* @param stationSplitConfigList 参与分账的账户信息
* @param afterSettleOrderDTO 订单结算信息
* @return
*/
@Override
public List<DivMember> calculationOfSplitAmount(List<StationSplitConfig> stationSplitConfigList, AfterSettleOrderDTO afterSettleOrderDTO) {
return calculationOfSplitAmount(stationSplitConfigList, afterSettleOrderDTO, null);
@@ -3483,8 +3534,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
orderInfo.setRemedialAmount(remedialAmount.subtract(payAmount));
}
this.updateOrderBasicInfo(orderInfo);
}