Procházet zdrojové kódy

商家端 桌号管理 删除 效验修改

qinxuyang před 2 týdny
rodič
revize
2437dae16d

+ 6 - 9
alien-entity/src/main/resources/mapper/UserReservationMapper.xml

@@ -287,20 +287,17 @@
           )
     </select>
 
-    <!-- 主查询只 FROM user_reservation;桌位用 EXISTS(非 JOIN);不查 user_reservation_order
+    <!-- 桌位 hasReservation:联查 user_reservation_table;不查 user_reservation_order
          0/1 有预订;2 有预订当 NOW() &lt;= 解析后的 end_time + 3 小时(无 end 则算有预订) -->
     <select id="countReservationsByTableAndOrderStatus" resultType="java.lang.Long">
-        SELECT COUNT(ur.id)
+        SELECT COUNT(DISTINCT ur.id)
         FROM user_reservation ur
+        INNER JOIN user_reservation_table urt
+            ON urt.reservation_id = ur.id
+           AND urt.delete_flag = 0
+           AND urt.table_id = #{tableId}
         WHERE ur.delete_flag = 0
           AND ur.store_id = #{storeId}
-          AND EXISTS (
-              SELECT 1
-              FROM user_reservation_table urt
-              WHERE urt.reservation_id = ur.id
-                AND urt.table_id = #{tableId}
-                AND urt.delete_flag = 0
-          )
           AND (
               ur.status IN (0, 1)
               OR (

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/impl/StoreBookingTableServiceImpl.java

@@ -769,7 +769,7 @@ public class StoreBookingTableServiceImpl extends ServiceImpl<StoreBookingTableM
             return false;
         }
         
-        // 主查 user_reservation,桌位 EXISTS 关联;0/1 有预订;2 在「结束时间+3h」内算有预订(不查订单表、主查询不 JOIN 中间表)
+        // 联查 user_reservation_table;0/1 有预订;2 在「结束时间+3h」内算有预订(不查订单表)
         long count = userReservationMapper.countReservationsByTableAndOrderStatus(tableId, storeId);
         boolean hasReservation = count > 0;