zhwl/zhwl-business/zhwl-hotel-homestay-order/target/classes/mapper/hotelHomestay/ZdyHotelHomestayOrderRoomBookingMapper.xml
2025-07-01 17:54:58 +08:00

58 lines
2.2 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhwl.hotel.homestay.order.mapper.ZdyHotelHomestayOrderRoomBookingMapper">
<sql id="listUnavailableRoomIds">
SELECT DISTINCT room_id
FROM zdy_hotel_homestay_room_status
WHERE (`start_time` &gt;= #{inDateTime} AND
`end_time` &lt;= #{outDateTime})
OR (`start_time` &lt; #{inDateTime} AND
`end_time` BETWEEN #{inDateTime} AND #{outDateTime})
OR (`start_time` BETWEEN #{inDateTime} AND #{outDateTime} AND
`end_time` &gt; #{outDateTime})
</sql>
<select id="existsAvailableRoomsByType" parameterType="ZdyHotelHomestayOrder" resultType="Integer">
SELECT EXISTS
(SELECT 1
FROM zdy_hotel_homestay_room
WHERE hotel_homestay_room_classify_id = #{roomClassifyId}
AND del_flag = '0'
AND id NOT IN (
<include refid="listUnavailableRoomIds"/>
))
</select>
<select id="listUnavailableRoomNumbersByIds" parameterType="ZdyHotelHomestayOrder" resultType="String">
SELECT zhhr.number
FROM zdy_hotel_homestay_room_status zhhrs
left join zdy_hotel_homestay_room zhhr on zhhr.id = zhhrs.room_id
WHERE zhhrs.room_id in
<foreach item="roomId" collection="roomIds" open="(" separator="," close=")">
#{roomId}
</foreach>
and (
(`start_time` &gt;= #{inDateTime} AND
`end_time` &lt;= #{outDateTime})
OR (`start_time` &lt; #{inDateTime} AND
`end_time` BETWEEN #{inDateTime} AND #{outDateTime})
OR (`start_time` BETWEEN #{inDateTime} AND #{outDateTime} AND
`end_time` &gt; #{outDateTime})
)
</select>
<select id="listAvailableRoomIdsByType" parameterType="ZdyHotelHomestayOrder" resultType="Long">
SELECT id
FROM zdy_hotel_homestay_room
WHERE hotel_homestay_room_classify_id = #{roomClassifyId}
AND del_flag = '0'
AND id NOT IN (
<include refid="listUnavailableRoomIds"/>
)
limit 0, #{roomQuantity}
</select>
</mapper>