From 77649c76ec1c3afcb93e9963243d637665b3a307 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 21 八月 2026 16:56:28 +0800
Subject: [PATCH] update

---
 backend/src/main/java/com/tourguide/modules/user/mapper/GuideReceivingSessionMapper.java |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/user/mapper/GuideReceivingSessionMapper.java b/backend/src/main/java/com/tourguide/modules/user/mapper/GuideReceivingSessionMapper.java
index 023dba4..dfb0389 100644
--- a/backend/src/main/java/com/tourguide/modules/user/mapper/GuideReceivingSessionMapper.java
+++ b/backend/src/main/java/com/tourguide/modules/user/mapper/GuideReceivingSessionMapper.java
@@ -9,6 +9,10 @@
 import java.util.List;
 
 public interface GuideReceivingSessionMapper extends BaseMapper<GuideReceivingSession> {
+    @Select("SELECT * FROM guide_receiving_session WHERE id = #{id} AND guide_id = #{guideId} " +
+            "AND deleted = 0 LIMIT 1 FOR UPDATE")
+    GuideReceivingSession selectForUpdate(@Param("id") Long id, @Param("guideId") Long guideId);
+
     @Select("SELECT s.* FROM guide_receiving_session s " +
             "INNER JOIN guide_realtime_status r ON r.guide_id = s.guide_id AND r.deleted = 0 " +
             "INNER JOIN guide_user g ON g.id = s.guide_id AND g.deleted = 0 AND g.status = 1 " +
@@ -39,4 +43,20 @@
     @Update("UPDATE guide_receiving_session SET status = 'IN_SERVICE', updated_at = NOW() " +
             "WHERE id = #{id} AND deleted = 0 AND status = 'RECEIVING' AND service_start_at <= NOW()")
     int startDueSession(Long id);
+
+    @Update("UPDATE guide_receiving_session SET status = 'IN_SERVICE', updated_at = NOW() " +
+            "WHERE id = #{id} AND guide_id = #{guideId} AND deleted = 0 AND status IN ('RECEIVING', 'ASSIGNED')")
+    int startSession(@Param("id") Long id, @Param("guideId") Long guideId);
+
+    @Update("UPDATE guide_receiving_session SET reminder_pushed_at = #{now}, updated_at = NOW() " +
+            "WHERE id = #{id} AND deleted = 0 AND status = 'RECEIVING' AND reminder_pushed_at IS NULL")
+    int claimServiceReminder(@Param("id") Long id, @Param("now") LocalDateTime now);
+
+    @Update("UPDATE guide_receiving_session SET reminder_pushed_at = NULL, updated_at = NOW() " +
+            "WHERE id = #{id} AND deleted = 0 AND reminder_pushed_at = #{claimedAt}")
+    int releaseServiceReminder(@Param("id") Long id, @Param("claimedAt") LocalDateTime claimedAt);
+
+    @Update("UPDATE guide_receiving_session SET status = 'STOPPED', updated_at = NOW() " +
+            "WHERE guide_id = #{guideId} AND deleted = 0 AND status = 'RECEIVING'")
+    int stopReceivingByGuide(Long guideId);
 }

--
Gitblit v1.7.1