shinnosuke
2026-08-05 971e637c2eebe93011a485ddfa99d4f19289811d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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<TransportParkingCardLevelRight> {
 
    @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<Map<String, Object>> 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<String, Object> 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<Map<String, Object>> selectAvailableForCard(@Param("cardLevel") String cardLevel, @Param("merchantId") Long merchantId);
}