用户退款回调问题修复

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