“mitao”
2026-04-27 69c2c400e6e3393424d704742cd9de0e6da07e2f
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
<?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.tcm.training.admin.member.mapper.UserMapper">
 
    <sql id="UserListWhere">
        WHERE s.deleted = 0
        <if test="nickname != null and nickname.trim() != ''">
            AND s.nickname LIKE CONCAT('%', #{nickname}, '%')
        </if>
        <if test="phone != null and phone.trim() != ''">
            AND s.phone LIKE CONCAT('%', #{phone}, '%')
        </if>
        <if test="clinicId != null">
            AND s.clinic_id = #{clinicId}
        </if>
        <if test="status != null">
            AND s.status = #{status}
        </if>
        <if test="isMember != null and isMember == 1">
            AND s.member_expire_at IS NOT NULL AND s.member_expire_at &gt; NOW()
        </if>
        <if test="isMember != null and isMember == 0">
            AND (s.member_expire_at IS NULL OR s.member_expire_at &lt;= NOW())
        </if>
        <if test="memberStatus != null and memberStatus == 'ALL'">
            AND s.member_expire_at IS NOT NULL
        </if>
        <if test="memberStatus != null and memberStatus == 'ACTIVE'">
            AND s.member_expire_at IS NOT NULL AND s.member_expire_at &gt; NOW()
        </if>
        <if test="memberStatus != null and memberStatus == 'EXPIRED'">
            AND s.member_expire_at IS NOT NULL AND s.member_expire_at &lt;= NOW()
        </if>
        <if test="memberExpireFrom != null">
            AND s.member_expire_at &gt;= #{memberExpireFrom}
        </if>
        <if test="memberExpireTo != null">
            AND s.member_expire_at &lt;= #{memberExpireTo}
        </if>
        <if test="registeredFrom != null">
            AND s.created_at &gt;= #{registeredFrom}
        </if>
        <if test="registeredTo != null">
            AND s.created_at &lt;= #{registeredTo}
        </if>
    </sql>
 
    <select id="selectUserPage" resultType="com.tcm.training.admin.member.row.UserListRow">
        SELECT
            s.id,
            s.nickname,
            s.phone,
            s.avatar,
            s.type,
            s.gender,
            s.age,
            s.status,
            s.clinic_id AS clinicId,
            c.name AS clinicName,
            CASE
                WHEN s.member_expire_at IS NOT NULL AND s.member_expire_at &gt; NOW() THEN 1
                ELSE 0
            END AS isMember,
            s.member_expire_at AS memberExpireAt,
            s.created_at AS createdAt
        FROM tcm_app_user s
        LEFT JOIN tcm_clinic c ON c.id = s.clinic_id AND c.deleted = 0
        <include refid="UserListWhere"/>
        ORDER BY s.id DESC
    </select>
 
    <select id="selectUserList" resultType="com.tcm.training.admin.member.row.UserListRow">
        SELECT
            s.id,
            s.nickname,
            s.phone,
            s.avatar,
            s.type,
            s.gender,
            s.age,
            s.status,
            s.clinic_id AS clinicId,
            c.name AS clinicName,
            CASE
                WHEN s.member_expire_at IS NOT NULL AND s.member_expire_at &gt; NOW() THEN 1
                ELSE 0
            END AS isMember,
            s.member_expire_at AS memberExpireAt,
            s.created_at AS createdAt
        FROM tcm_app_user s
        LEFT JOIN tcm_clinic c ON c.id = s.clinic_id AND c.deleted = 0
        <include refid="UserListWhere"/>
        ORDER BY s.id DESC
    </select>
 
    <select id="selectUserDetail" resultType="com.tcm.training.admin.member.row.UserDetailRow">
        SELECT
            s.id,
            s.nickname,
            s.phone,
            s.avatar,
            s.type,
            s.gender,
            s.age,
            s.intro,
            s.status,
            s.clinic_id AS clinicId,
            s.member_expire_at AS memberExpireAt,
            CASE
                WHEN s.member_expire_at IS NOT NULL AND s.member_expire_at &gt; NOW() THEN 1
                ELSE 0
            END AS isMember,
            c.name AS clinicName,
            c.contact_name AS clinicContactName,
            c.contact_phone AS clinicContactPhone,
            c.address AS clinicAddress,
            s.wechat_nickname AS wechatNickname,
            s.wechat_avatar AS wechatAvatar,
            s.wechat_bound_at AS wechatBoundAt,
            s.apple_user_identifier AS appleUserIdentifier,
            s.apple_identity_subject AS appleIdentitySubject,
            s.apple_bound_at AS appleBoundAt,
            s.created_at AS createdAt,
            s.updated_at AS updatedAt
        FROM tcm_app_user s
        LEFT JOIN tcm_clinic c ON c.id = s.clinic_id AND c.deleted = 0
        WHERE s.deleted = 0 AND s.id = #{id}
    </select>
 
</mapper>