zhwl/zhwl-business/zhwl-ticket/target/classes/mapper/cinema/ZdyCinemaSaleTempMapper.xml
2025-07-01 17:54:58 +08:00

285 lines
12 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.cinema.mapper.ZdyCinemaSaleTempMapper">
<resultMap type = "ZdyCinemaSaleTemp" id = "ZdyCinemaSaleTempResult">
<result property = "id" column = "id"/>
<result property = "tikcetId" column = "tikcet_id"/>
<result property = "movieId" column = "movie_id"/>
<result property = "venueId" column = "venue_id"/>
<result property = "itemId" column = "item_id"/>
<result property = "hallId" column = "hall_id"/>
<result property = "zoneId" column = "zone_id"/>
<result property = "priceId" column = "price_id"/>
<result property = "salePrice" column = "sale_price"/>
<result property = "rowNum" column = "row_num"/>
<result property = "seatNum" column = "seat_num"/>
<result property = "seatState" column = "seat_state"/>
<result property = "lockSeat" column = "lock_seat"/>
<result property = "saleTime" column = "sale_time"/>
</resultMap>
<sql id = "selectZdyCinemaSaleTempVo">
select id,
tikcet_id,
movie_id,
venue_id,
item_id,
hall_id,
zone_id,
price_id,
sale_price,
row_num,
seat_num,
sale_time,
lock_seat,
seat_state
from zdy_cinema_sale_temp
</sql>
<select id = "selectZdyCinemaSaleTempList" parameterType = "ZdyCinemaSaleTemp" resultMap = "ZdyCinemaSaleTempResult">
<include refid = "selectZdyCinemaSaleTempVo"/>
<where>
<if test = "tikcetId != null ">and tikcet_id = #{tikcetId}</if>
<if test = "movieId != null ">and movie_id = #{movieId}</if>
<if test = "venueId != null ">and venue_id = #{venueId}</if>
<if test = "itemId != null ">and item_id = #{itemId}</if>
<if test = "hallId != null ">and hall_id = #{hallId}</if>
<if test = "zoneId != null ">and zone_id = #{zoneId}</if>
<if test = "priceId != null ">and price_id = #{priceId}</if>
<if test = "salePrice != null ">and sale_price = #{salePrice}</if>
<if test = "rowNum != null ">and row_num = #{rowNum}</if>
<if test = "seatNum != null ">and seat_num = #{seatNum}</if>
<if test = "seatState != null ">and seat_state = #{seatState}</if>
<if test = "saleTime != null ">and sale_time = #{saleTime}</if>
</where>
order by row_num, id
</select>
<select id = "selectZdyCinemaSaleTempById" parameterType = "Long" resultMap = "ZdyCinemaSaleTempResult">
<include refid = "selectZdyCinemaSaleTempVo"/>
where id = #{id}
</select>
<select id = "selectZdyCinemaSaleTempByIds" parameterType = "String" resultMap = "ZdyCinemaSaleTempResult">
<include refid = "selectZdyCinemaSaleTempVo"/>
where id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</select>
<insert id = "insertZdyCinemaSaleTemp" parameterType = "ZdyCinemaSaleTemp" useGeneratedKeys = "true" keyProperty = "id">
insert into zdy_cinema_sale_temp
<trim prefix = "(" suffix = ")" suffixOverrides = ",">
<if test = "tikcetId != null">tikcet_id,</if>
<if test = "movieId != null">movie_id,</if>
<if test = "venueId != null">venue_id,</if>
<if test = "itemId != null">item_id,</if>
<if test = "hallId != null">hall_id,</if>
<if test = "zoneId != null">zone_id,</if>
<if test = "priceId != null">price_id,</if>
<if test = "salePrice != null">sale_price,</if>
<if test = "rowNum != null">row_num,</if>
<if test = "seatNum != null">seat_num,</if>
<if test = "seatState != null">seat_state,</if>
<if test = "saleTime != null">sale_time,</if>
</trim>
<trim prefix = "values (" suffix = ")" suffixOverrides = ",">
<if test = "tikcetId != null">#{tikcetId},</if>
<if test = "movieId != null">#{movieId},</if>
<if test = "venueId != null">#{venueId},</if>
<if test = "itemId != null">#{itemId},</if>
<if test = "hallId != null">#{hallId},</if>
<if test = "zoneId != null">#{zoneId},</if>
<if test = "priceId != null">#{priceId},</if>
<if test = "salePrice != null">#{salePrice},</if>
<if test = "rowNum != null">#{rowNum},</if>
<if test = "seatNum != null">#{seatNum},</if>
<if test = "seatState != null">#{seatState},</if>
<if test = "saleTime != null">#{saleTime},</if>
</trim>
</insert>
<update id = "updateZdyCinemaSaleTemp" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp
<trim prefix = "SET" suffixOverrides = ",">
<if test = "tikcetId != null">tikcet_id = #{tikcetId},</if>
<if test = "movieId != null">movie_id = #{movieId},</if>
<if test = "venueId != null">venue_id = #{venueId},</if>
<if test = "itemId != null">item_id = #{itemId},</if>
<if test = "hallId != null">hall_id = #{hallId},</if>
<if test = "zoneId != null">zone_id = #{zoneId},</if>
<if test = "priceId != null">price_id = #{priceId},</if>
<if test = "salePrice != null">sale_price = #{salePrice},</if>
<if test = "rowNum != null">row_num = #{rowNum},</if>
<if test = "seatNum != null">seat_num = #{seatNum},</if>
<if test = "seatState != null">seat_state = #{seatState},</if>
<if test = "saleTime != null">sale_time = #{saleTime},</if>
</trim>
where id = #{id}
</update>
<delete id = "deleteZdyCinemaSaleTempById" parameterType = "Long">
delete
from zdy_cinema_sale_temp
where id = #{id}
</delete>
<delete id = "deleteZdyCinemaSaleTempByIds" parameterType = "String">
delete from zdy_cinema_sale_temp where id in
<foreach item = "id" collection = "array" open = "(" separator = "," close = ")">
#{id}
</foreach>
</delete>
<insert id = "batchZdyCinemaSaleTemp">
insert into zdy_cinema_sale_temp (tikcet_id, movie_id, venue_id, item_id, hall_id, zone_id, price_id,
sale_price, row_num, seat_num, seat_state, sale_time) values
<foreach item = "item" index = "index" collection = "list" separator = ",">
(#{item.tikcetId}, #{item.movieId}, #{item.venueId}, #{item.itemId}, #{item.hallId}, #{item.zoneId},
#{item.priceId}, #{item.salePrice}, #{item.rowNum}, #{item.seatNum}, #{item.seatState}, #{item.saleTime})
</foreach>
</insert>
<!-- 付款成功后更新售价 -->
<update id = "updateSalePrice" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp
set sale_price = #{salePrice},update_time = sysdate()
where tikcet_id = #{tikcetId}
and movie_id = #{movieId}
and item_id = #{itemId}
and zone_id = #{zoneId}
and price_id = #{priceId}
and row_num = #{rowNum}
and seat_num = #{seatNum}
and sale_time = #{saleTime}
</update>
<!-- 现金支付,直接修改为已售(窗口售票) -->
<update id = "paySaleSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp
set
seat_state = 3,
<if test="updateBy != null">
update_by = #{updateBy},
</if>
update_time = sysdate()
where seat_state = 1 and lock_seat = 1 and id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<!-- 占座(窗口售票) -->
<update id = "holdSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp set seat_state = 2,update_by = #{updateBy},update_time = sysdate() where seat_state
= 1 and lock_seat = 0 and id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<!-- 解除占座(窗口售票) -->
<update id = "unholdSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp set seat_state = 1,update_by = #{updateBy},update_time = sysdate() where seat_state
= 2 and id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<!-- 支付锁定(窗口售票) -->
<update id = "payLockSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp set lock_seat = 1,update_by = #{updateBy},update_time = sysdate() where seat_state =
1 and lock_seat = 0 and id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<!-- 支付超时解锁(窗口售票) -->
<update id = "overtimeUnLockSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp set lock_seat = 0,update_time = sysdate() where seat_state = 1 and lock_seat = 1 and
id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<!-- 支付超时解锁(窗口售票) -->
<update id = "overtimeUnLockSeatById" parameterType="java.lang.Long">
update zdy_cinema_sale_temp set lock_seat = 0,update_time = sysdate() where seat_state = 1 and lock_seat = 1 and
id = #{id}
</update>
<!-- 支付成功解锁 -->
<update id = "payUnLockSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp set lock_seat = 0,seat_state = 3 ,update_time = sysdate() where seat_state = 1 and
lock_seat = 1 and id in
<foreach item = "id" collection = "ids" open = "(" separator = "," close = ")">
#{id}
</foreach>
</update>
<update id = "refundUnLockSeat" parameterType = "ZdyCinemaSaleTemp">
update zdy_cinema_sale_temp
set lock_seat = 0,
seat_state = 1 ,
update_by = #{updateBy},
update_time = sysdate()
where seat_state = 3
and tikcet_id = #{ticketId}
and item_id = #{itemId}
and row_num = #{rowNum}
and seat_num = #{seatNum}
and zone_id = #{zoneId}
and DATE(sale_time) = DATE(#{saleTime})
</update>
<select id="isAnyItemOnSale" resultType="Integer">
select exists(
select 1
from zdy_cinema_sale_temp
where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
and (seat_state in (2, 3) or lock_seat = 1)
)
</select>
<select id="isHallOnSale" parameterType="Long" resultType="java.lang.Boolean">
select exists(select 1
from zdy_cinema_sale_temp
where hall_id = #{hallId}
and (seat_state in (2, 3) or lock_seat = 1))
</select>
<select id="isAnyHallOnSale" parameterType="Long" resultType="java.lang.Boolean">
select exists(select 1
from zdy_cinema_sale_temp
where hall_id in
<foreach item="hallId" collection="array" open="(" separator="," close=")">
#{hallId}
</foreach>
and (seat_state in (2, 3) or lock_seat = 1))
</select>
<select id="lock" resultMap="ZdyCinemaSaleTempResult">
select * from zdy_cinema_sale_temp
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
for update
</select>
<select id="isMovieOnSale" parameterType="java.lang.Long" resultType="java.lang.Boolean">
select exists(select 1
from zdy_cinema_sale_temp
where movie_id = #{movieId}
and (seat_state in (2, 3) or lock_seat = 1))
</select>
<select id="isAnyMovieOnSale" resultType="java.lang.Boolean">
select exists(select 1
from zdy_cinema_sale_temp
where movie_id in
<foreach item="movieId" collection="movieIds" open="(" separator="," close=")">
#{movieId}
</foreach>
and (seat_state in (2, 3) or lock_seat = 1))
</select>
</mapper>