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.TransportParkingCardLevelRight; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @Mapper public interface TransportParkingCardLevelRightMapper extends BaseMapper { @Select(""" select r.id as rightId, r.merchant_id as merchantId, m.merchant_name as merchantName, m.contact_mobile as contactMobile, m.address, m.cover_url as coverUrl, m.status as merchantStatus, r.card_level as cardLevel, r.enabled, r.label, r.benefit_detail as benefitDetail, r.charge_type as chargeType, r.selection_mode as selectionMode, r.store_consume_enabled as storeConsumeEnabled, r.discount_text as discountText, r.government_subsidy as governmentSubsidy, r.consume_usage_text as consumeUsageText, r.status as rightStatus, r.updated_at as updatedAt, b.id as benefitId, b.action_mode as actionMode, b.status as benefitStatus from transport_parking_card_level_right r join merchant m on m.id = r.merchant_id and m.deleted = 0 and m.merchant_type = 'parking' left join transport_parking_benefit b on b.merchant_id = m.id and b.deleted = 0 where r.deleted = 0 and (#{merchantId} is null or r.merchant_id = #{merchantId}) and (#{cardLevel} is null or #{cardLevel} = '' or r.card_level = #{cardLevel}) and (#{enabled} is null or r.enabled = #{enabled}) and (#{keyword} is null or #{keyword} = '' or m.merchant_name like concat('%', #{keyword}, '%') or m.address like concat('%', #{keyword}, '%')) order by m.sort_no desc, m.id desc, case r.card_level when '卓越人才卡' then 1 when '杰出人才卡' then 2 when '菁英人才卡' then 3 else 99 end limit #{size} offset #{offset} """) List> selectConfigPage(@Param("merchantId") Long merchantId, @Param("cardLevel") String cardLevel, @Param("enabled") Integer enabled, @Param("keyword") String keyword, @Param("size") int size, @Param("offset") int offset); @Select(""" select count(*) from transport_parking_card_level_right r join merchant m on m.id = r.merchant_id and m.deleted = 0 and m.merchant_type = 'parking' where r.deleted = 0 and (#{merchantId} is null or r.merchant_id = #{merchantId}) and (#{cardLevel} is null or #{cardLevel} = '' or r.card_level = #{cardLevel}) and (#{enabled} is null or r.enabled = #{enabled}) and (#{keyword} is null or #{keyword} = '' or m.merchant_name like concat('%', #{keyword}, '%') or m.address like concat('%', #{keyword}, '%')) """) Long countConfigPage(@Param("merchantId") Long merchantId, @Param("cardLevel") String cardLevel, @Param("enabled") Integer enabled, @Param("keyword") String keyword); @Select(""" select r.id as rightId, r.merchant_id as merchantId, m.merchant_name as merchantName, m.contact_mobile as contactMobile, m.address, m.cover_url as coverUrl, m.status as merchantStatus, r.card_level as cardLevel, r.enabled, r.label, r.benefit_detail as benefitDetail, r.charge_type as chargeType, r.selection_mode as selectionMode, r.store_consume_enabled as storeConsumeEnabled, r.discount_text as discountText, r.government_subsidy as governmentSubsidy, r.consume_usage_text as consumeUsageText, r.status as rightStatus, r.updated_at as updatedAt, b.id as benefitId, b.action_mode as actionMode, b.status as benefitStatus from transport_parking_card_level_right r join merchant m on m.id = r.merchant_id and m.deleted = 0 and m.merchant_type = 'parking' left join transport_parking_benefit b on b.merchant_id = m.id and b.deleted = 0 where r.deleted = 0 and r.merchant_id = #{merchantId} and r.card_level = #{cardLevel} limit 1 """) Map selectConfig(@Param("merchantId") Long merchantId, @Param("cardLevel") String cardLevel); @Select(""" select r.id as rightId, r.merchant_id as merchantId, m.merchant_name as merchantName, m.contact_mobile as contactMobile, m.address, m.cover_url as coverUrl, m.status as merchantStatus, r.card_level as cardLevel, r.enabled, r.label, r.benefit_detail as benefitDetail, r.charge_type as chargeType, r.selection_mode as selectionMode, r.store_consume_enabled as storeConsumeEnabled, r.discount_text as discountText, r.government_subsidy as governmentSubsidy, r.consume_usage_text as consumeUsageText, r.status as rightStatus, b.id as benefitId, b.action_mode as actionMode, b.status as benefitStatus from transport_parking_card_level_right r join merchant m on m.id = r.merchant_id and m.deleted = 0 and m.merchant_type = 'parking' and m.status = 1 join transport_parking_benefit b on b.merchant_id = m.id and b.deleted = 0 and b.status = 1 where r.deleted = 0 and r.enabled = 1 and r.status = 1 and r.card_level = #{cardLevel} and (#{merchantId} is null or r.merchant_id = #{merchantId}) order by m.sort_no desc, m.id desc """) List> selectAvailableForCard(@Param("cardLevel") String cardLevel, @Param("merchantId") Long merchantId); }