Ver Fonte

fix: 审核通过后 refund 状态被 markRefunded 加载的另一个实例覆盖

approveRefund 加载 refund 对象 A,markRefunded 加载对象 B 更新为
REFUNDED 保存,然后 updateById(A) 又把 PENDING 状态写回去。
改为直接在同一个对象上设置全部字段后保存。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline há 2 semanas atrás
pai
commit
c9160fc7af

+ 4 - 1
haha-service/src/main/java/com/haha/service/impl/RefundServiceImpl.java

@@ -276,7 +276,10 @@ public class RefundServiceImpl extends ServiceImpl<RefundMapper, Refund> impleme
         RefundResult result = paymentService.refund(refund.getOrderId(), refund.getReason(), refund.getRefundAmount());
 
         if (result.isSuccess()) {
-            markRefunded(refundId, result.getRefundId());
+            // 直接更新当前对象,不要调用 markRefunded(会加载另一个实例覆盖)
+            refund.setStatus(RefundStatus.REFUNDED.getCode());
+            refund.setTransactionId(result.getRefundId());
+            refund.setRefundTime(LocalDateTime.now());
             refund.setRemark(remark);
             refund.setReviewerId(reviewerId);
             refund.setReviewTime(LocalDateTime.now());