From 82a8bc62d5b9d5d607f6952329952b17eda2f0a0 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 14 九月 2026 15:44:34 +0800
Subject: [PATCH] update

---
 backend/src/main/java/com/tourguide/modules/user/mapper/GuideUserMapper.java |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/user/mapper/GuideUserMapper.java b/backend/src/main/java/com/tourguide/modules/user/mapper/GuideUserMapper.java
index 3f18848..e2708bd 100644
--- a/backend/src/main/java/com/tourguide/modules/user/mapper/GuideUserMapper.java
+++ b/backend/src/main/java/com/tourguide/modules/user/mapper/GuideUserMapper.java
@@ -9,6 +9,9 @@
 import java.math.BigDecimal;
 
 public interface GuideUserMapper extends BaseMapper<GuideUser> {
+    @Select("SELECT * FROM guide_user WHERE id = #{guideId} AND deleted = 0 FOR UPDATE")
+    GuideUser selectForUpdate(@Param("guideId") Long guideId);
+
     @Select("SELECT COALESCE(balance, 0) FROM guide_user WHERE id = #{guideId} AND deleted = 0")
     BigDecimal selectBalance(@Param("guideId") Long guideId);
 
@@ -20,12 +23,16 @@
             "WHERE id = #{guideId} AND deleted = 0 AND balance >= #{amount}")
     int decreaseBalance(@Param("guideId") Long guideId, @Param("amount") BigDecimal amount);
 
+    @Update("UPDATE guide_user SET balance = COALESCE(balance, 0) - #{amount}, updated_at = NOW() " +
+            "WHERE id = #{guideId} AND deleted = 0")
+    int decreaseBalanceForRefund(@Param("guideId") Long guideId, @Param("amount") BigDecimal amount);
+
     @Update("UPDATE guide_user SET accepted_order_count = accepted_order_count + 1, " +
             "current_month_order_count = current_month_order_count + 1, updated_at = NOW() " +
             "WHERE id = #{guideId} AND deleted = 0 AND status = 1")
     int incrementAcceptedOrderCount(Long guideId);
 
-    @Update("UPDATE guide_user SET status = 0, updated_at = NOW() " +
+    @Update("UPDATE guide_user SET status = 0, auto_disabled = 1, updated_at = NOW() " +
             "WHERE id = #{guideId} AND deleted = 0 AND status = 1 " +
             "AND COALESCE(auto_disable_whitelisted, 0) = 0 " +
             "AND accepted_order_count >= #{orderThreshold} " +
@@ -33,4 +40,12 @@
     int autoDisableIfEligible(@Param("guideId") Long guideId,
                               @Param("orderThreshold") Integer orderThreshold,
                               @Param("ratingThreshold") BigDecimal ratingThreshold);
+
+    @Update("UPDATE guide_user SET status = 1, auto_disabled = 0, updated_at = NOW() " +
+            "WHERE deleted = 0 AND status = 0 AND auto_disabled = 1 " +
+            "AND (COALESCE(auto_disable_whitelisted, 0) = 1 " +
+            "OR COALESCE(accepted_order_count, 0) < #{orderThreshold} " +
+            "OR COALESCE(rating, 0) <= 0 OR rating > #{ratingThreshold})")
+    int restoreAutoDisabledGuidesNoLongerEligible(@Param("orderThreshold") Integer orderThreshold,
+                                                   @Param("ratingThreshold") BigDecimal ratingThreshold);
 }

--
Gitblit v1.7.1