package com.talentcard.server.mapper; import java.util.List; import java.util.Map; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.talentcard.server.entity.TicketPackageCode; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @Mapper public interface TicketPackageCodeMapper extends BaseMapper { @Select(""" select * from ticket_package_code where package_id = #{packageId} and status = 'AVAILABLE' and deleted = 0 order by id asc limit 1 for update """) TicketPackageCode selectAvailableCodeForUpdate(@Param("packageId") Long packageId); @Select(""" select c.id, c.package_id as packageId, p.package_name as packageName, c.exchange_code as exchangeCode, c.batch_no as batchNo, c.status, c.locked_by_talent_id as lockedByTalentId, c.locked_by_card_id as lockedByCardId, c.locked_at as lockedAt, c.issued_claim_id as issuedClaimId, c.issued_at as issuedAt, c.used_at as usedAt, c.remark, c.created_at as createdAt, c.updated_at as updatedAt from ticket_package_code c join ticket_package p on p.id = c.package_id and p.deleted = 0 where c.deleted = 0 and (#{packageId} is null or c.package_id = #{packageId}) and (#{status} is null or #{status} = '' or c.status = #{status}) and (#{batchNo} is null or #{batchNo} = '' or c.batch_no = #{batchNo}) and (#{keyword} is null or #{keyword} = '' or c.exchange_code like concat('%', #{keyword}, '%') or p.package_name like concat('%', #{keyword}, '%')) order by c.id desc limit #{size} offset #{offset} """) List> selectAdminPage(@Param("packageId") Long packageId, @Param("status") String status, @Param("batchNo") String batchNo, @Param("keyword") String keyword, @Param("size") int size, @Param("offset") int offset); @Select(""" select count(*) from ticket_package_code c join ticket_package p on p.id = c.package_id and p.deleted = 0 where c.deleted = 0 and (#{packageId} is null or c.package_id = #{packageId}) and (#{status} is null or #{status} = '' or c.status = #{status}) and (#{batchNo} is null or #{batchNo} = '' or c.batch_no = #{batchNo}) and (#{keyword} is null or #{keyword} = '' or c.exchange_code like concat('%', #{keyword}, '%') or p.package_name like concat('%', #{keyword}, '%')) """) Long countAdminPage(@Param("packageId") Long packageId, @Param("status") String status, @Param("batchNo") String batchNo, @Param("keyword") String keyword); }