|
@@ -151,4 +151,89 @@
|
|
|
AND STR_TO_DATE(TRIM(r.end_time), '%Y-%m-%d %H:%i') < NOW()
|
|
AND STR_TO_DATE(TRIM(r.end_time), '%Y-%m-%d %H:%i') < NOW()
|
|
|
</select>
|
|
</select>
|
|
|
|
|
|
|
|
|
|
+ <!-- 查询分类下是否有符合条件的预订信息
|
|
|
|
|
+ 条件:订单状态为"待使用"(1)或"已完成"(2)
|
|
|
|
|
+ 对于"已完成"状态的订单,结束时间需要在当前时间3小时内 -->
|
|
|
|
|
+ <select id="countReservationsByCategoryAndOrderStatus" resultType="java.lang.Long">
|
|
|
|
|
+ SELECT COUNT(DISTINCT ur.id)
|
|
|
|
|
+ FROM user_reservation ur
|
|
|
|
|
+ INNER JOIN user_reservation_order uro ON ur.id = uro.reservation_id AND uro.delete_flag = 0
|
|
|
|
|
+ WHERE ur.delete_flag = 0
|
|
|
|
|
+ AND ur.category_id = #{categoryId}
|
|
|
|
|
+ AND ur.store_id = #{storeId}
|
|
|
|
|
+ AND uro.order_status IN (1, 2)
|
|
|
|
|
+ AND (
|
|
|
|
|
+ -- 订单状态为"待使用"(1),直接符合条件
|
|
|
|
|
+ uro.order_status = 1
|
|
|
|
|
+ OR
|
|
|
|
|
+ -- 订单状态为"已完成"(2),需要检查结束时间在3小时内
|
|
|
|
|
+ (
|
|
|
|
|
+ uro.order_status = 2
|
|
|
|
|
+ AND ur.end_time IS NOT NULL
|
|
|
|
|
+ AND TRIM(ur.end_time) != ''
|
|
|
|
|
+ AND (
|
|
|
|
|
+ -- 如果 end_time 是完整日期时间格式 (yyyy-MM-dd HH:mm)
|
|
|
|
|
+ (
|
|
|
|
|
+ LENGTH(TRIM(ur.end_time)) > 5
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') < NOW()
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') > DATE_SUB(NOW(), INTERVAL 3 HOUR)
|
|
|
|
|
+ )
|
|
|
|
|
+ OR
|
|
|
|
|
+ -- 如果 end_time 是时间格式 (HH:mm),需要结合 reservation_date
|
|
|
|
|
+ (
|
|
|
|
|
+ LENGTH(TRIM(ur.end_time)) <= 5
|
|
|
|
|
+ AND ur.reservation_date IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') < NOW()
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') > DATE_SUB(NOW(), INTERVAL 3 HOUR)
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 查询桌号下是否有符合条件的预订信息
|
|
|
|
|
+ 条件:订单状态为"待使用"(1)或"已完成"(2)
|
|
|
|
|
+ 对于"已完成"状态的订单,结束时间需要在当前时间3小时内 -->
|
|
|
|
|
+ <select id="countReservationsByTableAndOrderStatus" resultType="java.lang.Long">
|
|
|
|
|
+ SELECT COUNT(DISTINCT ur.id)
|
|
|
|
|
+ FROM user_reservation ur
|
|
|
|
|
+ INNER JOIN user_reservation_table urt ON ur.id = urt.reservation_id AND urt.delete_flag = 0
|
|
|
|
|
+ INNER JOIN user_reservation_order uro ON ur.id = uro.reservation_id AND uro.delete_flag = 0
|
|
|
|
|
+ WHERE ur.delete_flag = 0
|
|
|
|
|
+ AND urt.table_id = #{tableId}
|
|
|
|
|
+ AND ur.store_id = #{storeId}
|
|
|
|
|
+ AND uro.order_status IN (1, 2)
|
|
|
|
|
+ AND (
|
|
|
|
|
+ -- 订单状态为"待使用"(1),直接符合条件
|
|
|
|
|
+ uro.order_status = 1
|
|
|
|
|
+ OR
|
|
|
|
|
+ -- 订单状态为"已完成"(2),需要检查结束时间在3小时内
|
|
|
|
|
+ (
|
|
|
|
|
+ uro.order_status = 2
|
|
|
|
|
+ AND ur.end_time IS NOT NULL
|
|
|
|
|
+ AND TRIM(ur.end_time) != ''
|
|
|
|
|
+ AND (
|
|
|
|
|
+ -- 如果 end_time 是完整日期时间格式 (yyyy-MM-dd HH:mm)
|
|
|
|
|
+ (
|
|
|
|
|
+ LENGTH(TRIM(ur.end_time)) > 5
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') < NOW()
|
|
|
|
|
+ AND STR_TO_DATE(TRIM(ur.end_time), '%Y-%m-%d %H:%i') > DATE_SUB(NOW(), INTERVAL 3 HOUR)
|
|
|
|
|
+ )
|
|
|
|
|
+ OR
|
|
|
|
|
+ -- 如果 end_time 是时间格式 (HH:mm),需要结合 reservation_date
|
|
|
|
|
+ (
|
|
|
|
|
+ LENGTH(TRIM(ur.end_time)) <= 5
|
|
|
|
|
+ AND ur.reservation_date IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') IS NOT NULL
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') < NOW()
|
|
|
|
|
+ AND STR_TO_DATE(CONCAT(DATE_FORMAT(ur.reservation_date, '%Y-%m-%d'), ' ', TRIM(ur.end_time)), '%Y-%m-%d %H:%i') > DATE_SUB(NOW(), INTERVAL 3 HOUR)
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
</mapper>
|
|
</mapper>
|