From ad5db85e540947e82c7a4d5612879b3b3ecdf459 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 21 八月 2026 10:38:07 +0800
Subject: [PATCH] update

---
 backend/src/main/java/com/tourguide/modules/finance/mapper/GuideWithdrawalMapper.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/finance/mapper/GuideWithdrawalMapper.java b/backend/src/main/java/com/tourguide/modules/finance/mapper/GuideWithdrawalMapper.java
index 11b343e..57fcbaa 100644
--- a/backend/src/main/java/com/tourguide/modules/finance/mapper/GuideWithdrawalMapper.java
+++ b/backend/src/main/java/com/tourguide/modules/finance/mapper/GuideWithdrawalMapper.java
@@ -2,6 +2,35 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.tourguide.modules.finance.entity.GuideWithdrawal;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 public interface GuideWithdrawalMapper extends BaseMapper<GuideWithdrawal> {
+    @Select("SELECT * FROM guide_withdrawal WHERE id = #{id} AND deleted = 0 FOR UPDATE")
+    GuideWithdrawal selectForUpdate(@Param("id") Long id);
+
+    @Select("SELECT * FROM guide_withdrawal WHERE deleted = 0 " +
+            "AND (cash_req_seq_id = #{requestSequence} OR withdrawal_no = #{requestSequence}) " +
+            "LIMIT 1 FOR UPDATE")
+    GuideWithdrawal selectByPayoutSequenceForUpdate(@Param("requestSequence") String requestSequence);
+
+    @Select("SELECT id FROM guide_withdrawal WHERE deleted = 0 " +
+            "AND status IN ('TRANSFERRING', 'TRANSFERRED', 'PROCESSING') " +
+            "AND updated_at <= #{beforeTime} ORDER BY updated_at, id LIMIT #{limit}")
+    List<Long> selectPendingPayoutIds(@Param("beforeTime") LocalDateTime beforeTime,
+                                      @Param("limit") int limit);
+
+    @Update("UPDATE guide_withdrawal SET status = 'TRANSFERRED', " +
+            "cash_req_seq_id = NULL, cash_req_date = NULL, cash_hf_seq_id = NULL, " +
+            "payout_message = #{message}, processed_at = #{processedAt}, updated_at = #{updatedAt} " +
+            "WHERE id = #{id} AND deleted = 0 AND status IN ('PROCESSING', 'TRANSFERRED')")
+    int resetCashForRetry(@Param("id") Long id,
+                          @Param("message") String message,
+                          @Param("processedAt") LocalDateTime processedAt,
+                          @Param("updatedAt") LocalDateTime updatedAt);
+
 }

--
Gitblit v1.7.1