shinnosuke
2026-08-21 bc2efbdb52190fe2e7be9920bbed6902d4ee28aa
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
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.MerchantDisplayPolicyMerchant;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
@Mapper
public interface DisplayServiceMapper extends BaseMapper<MerchantDisplayPolicyMerchant> {
 
    @Select("""
            <script>
            select m.id as merchantId,
                   m.merchant_name as merchantName,
                   m.merchant_type_code as category,
                   m.merchant_type as merchantType,
                   m.contact_name as contactName,
                   m.contact_mobile as contactMobile,
                   m.logo_url as logoUrl,
                   m.cover_url as coverUrl,
                   m.address,
                   m.business_status as businessStatus,
                   m.longitude,
                   m.latitude,
                   m.usage_instructions as handlingInstructions,
                   m.rights_text as rightsText,
                   m.service_label as serviceLabel,
                   m.is_recommend as recommend,
                   m.sort_no as sortNo,
                   m.status,
                   (select count(*) from merchant_card_benefit b where b.merchant_id = m.id) as policyCount,
                   m.created_at as createdAt,
                   m.updated_at as updatedAt
            from merchant m
            where m.deleted = 0
              and m.merchant_type_code in ('parking', 'medical', 'apartment', 'housing', 'car', 'appliance')
              <if test="category != null and category != ''">
                and m.merchant_type_code = #{category}
              </if>
              <if test="status != null">and m.status = #{status}</if>
              <if test="keyword != null and keyword != ''">
                and (m.merchant_name like concat('%', #{keyword}, '%')
                     or m.contact_mobile like concat('%', #{keyword}, '%')
                     or m.address like concat('%', #{keyword}, '%'))
              </if>
            order by m.sort_no desc, m.id desc
            limit #{size} offset #{offset}
            </script>
            """)
    List<Map<String, Object>> selectAdminPage(@Param("category") String category,
                                              @Param("keyword") String keyword,
                                              @Param("status") Integer status,
                                              @Param("size") int size,
                                              @Param("offset") int offset);
 
    @Select("""
            <script>
            select count(*)
            from merchant m
            where m.deleted = 0
              and m.merchant_type_code in ('parking', 'medical', 'apartment', 'housing', 'car', 'appliance')
              <if test="category != null and category != ''">
                and m.merchant_type_code = #{category}
              </if>
              <if test="status != null">and m.status = #{status}</if>
              <if test="keyword != null and keyword != ''">
                and (m.merchant_name like concat('%', #{keyword}, '%')
                     or m.contact_mobile like concat('%', #{keyword}, '%')
                     or m.address like concat('%', #{keyword}, '%'))
              </if>
            </script>
            """)
    Long countAdminPage(@Param("category") String category,
                        @Param("keyword") String keyword,
                        @Param("status") Integer status);
 
    @Select("""
            <script>
            select m.id as merchantId,
                   m.merchant_name as merchantName,
                   m.merchant_type_code as category,
                   m.merchant_type as merchantType,
                   m.contact_name as contactName,
                   m.contact_mobile as contactMobile,
                   m.logo_url as logoUrl,
                   m.cover_url as coverUrl,
                   m.address,
                   m.business_status as businessStatus,
                   m.longitude,
                   m.latitude,
                   m.usage_instructions as handlingInstructions,
                   m.rights_text as rightsText,
                   m.service_label as serviceLabel,
                   m.is_recommend as recommend,
                   m.sort_no as sortNo,
                   m.status,
                   (select count(*) from merchant_card_benefit b where b.merchant_id = m.id) as policyCount,
                   m.created_at as createdAt,
                   m.updated_at as updatedAt
            from merchant m
            where m.deleted = 0
              and m.id = #{serviceId}
              and m.merchant_type_code in ('parking', 'medical', 'apartment', 'housing', 'car', 'appliance')
            limit 1
            </script>
            """)
    Map<String, Object> selectAdminDetail(@Param("serviceId") Long serviceId);
}