用户退款回调问题修复

This commit is contained in:
yanglei 2025-12-18 12:49:34 +08:00
parent 492422acf1
commit 7a6c7c7aae

View File

@ -93,7 +93,17 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
if (refundNotification == null) {
return false;
}
EbikeRefund ebikeRefund = getByRefundOrderId(refundNotification.getOutRefundNo());
String refundOrderId = refundNotification.getOutRefundNo();
EbikeRefund ebikeRefund = getByRefundOrderId(refundOrderId);
if (ebikeRefund == null) {
log.error("未找到对应的退款记录refundOrderId: {}", refundOrderId);
return false;
}
if (ebikeRefund.getRefundStatus() == RefundStatus.APPLYING) {
log.info("退款已处理成功。refundOrderId: {}", refundOrderId);
return true;
}
log.info("退款回调订单Id:{}, 退款回调订单状态:{}", refundOrderId, refundNotification.getRefundStatus().ordinal());
ebikeRefund.setRefundStatus(refundNotification.getRefundStatus().ordinal());
if (Status.SUCCESS.equals(refundNotification.getRefundStatus())) {
String refundTime = refundNotification.getSuccessTime();
@ -102,9 +112,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
BigDecimal refundAmount = calculateRefundCallbackAmount(refundNotification);
ebikeRefund.setRefund(refundAmount);
}
Long refundOrderId = Long.valueOf(refundNotification.getOutTradeNo());
log.info("退款回调订单Id:{}, 退款回调订单状态:{}", refundOrderId, refundNotification.getRefundStatus().ordinal());
Long orderId = queryOrderId(refundOrderId);
Long orderId = ebikeRefund.getOrderId();
// 更新订单退款状态
switch (refundNotification.getRefundStatus()) {
case PROCESSING, CLOSED -> ebikeOrderService.refund(orderId);
@ -160,19 +168,18 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
*
* @param refundOrderId 根据退款回调退款订单号查询订单号
*/
private Long queryOrderId(Long refundOrderId) {
private Long queryOrderId(String refundOrderId) {
if (refundOrderId == null) {
log.warn("退款订单ID为空无法查询主订单ID");
return null;
}
//查询退款中且状态为2的订单
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_REFUND.REFUND_ORDER_ID.eq(refundOrderId))
.where(EBIKE_REFUND.REFUND_STATUS.eq(RefundStatus.PROCESSED));
.where(EBIKE_REFUND.REFUND_ORDER_ID.eq(refundOrderId));
EbikeRefund ebikeRefund = this.mapper.selectOneByQuery(queryWrapper);
if (ebikeRefund == null) {
log.warn("未找到状态为'退款中'的退款记录退款单ID: {}", refundOrderId);
log.warn("未找到退款订单号为的退款记录退款单ID: {}", refundOrderId);
return null;
}
return ebikeRefund.getOrderId();