定时任务处理未分帐订单

This commit is contained in:
Guoqs
2025-04-17 10:03:33 +08:00
parent ba92e1317b
commit ed98a6bebe
4 changed files with 92 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package com.jsowell.quartz.task;
import com.google.common.collect.Lists;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.jsowell.adapay.common.DivMember;
import com.jsowell.adapay.dto.PaymentConfirmParam;
import com.jsowell.adapay.dto.WithdrawDTO;
@@ -345,6 +346,7 @@ public class JsowellTask {
/**
* 处理未分帐订单
* jsowellTask.processUnSettledOrder()
*/
public void processUnSettledOrder() {
String startTime = "2023-01-01 00:00:00";
@@ -385,21 +387,33 @@ public class JsowellTask {
orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
} else {
// 如果失败,打印日志
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
// error_type:api_error, error_code:confirm_amt_over_limit, error_msg当前确认金额 > 支付金额 - 已支付确认金额 - 已支付撤销金额
if (paymentConfirmResponse.getError_code().equals("confirm_amt_over_limit")) {
orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
// TODO 查询paymentId的总分账金额
BigDecimal totalSplitAmount = BigDecimal.ZERO;
try {
totalSplitAmount = adapayService.getTotalSplitAmountByPaymentId(paymentId);
} catch (BaseAdaPayException e) {
throw new RuntimeException(e);
}
if (totalSplitAmount.compareTo(confirmAmt) == 0) {
// 如果总分账金额等于当前分账金额,则更新订单状态为已分账
orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
} else {
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
}
}
// error_type:invalid_request_error, error_code:payment_over_time_doing, error_msg:数据正在处理中,请稍后再试
if (paymentConfirmResponse.getError_code().equals("payment_over_time_doing")) {
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
break;
}
// error_type:invalid_request_error, error_code:refund_repeate_request, error_msg:请求过于频繁
if (paymentConfirmResponse.getError_code().equals("refund_repeate_request")) {
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
break;
}
}