forked from kidgrow-microservices-platform

zhaoxiaohao
2020-11-04 f5f444c2bbb1e1e90a6ea6d0fbbfa06c07deed2d
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<?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.kidgrow.usercenter.mapper.SysDoctorMapper">
    <!--定义查询列-->
    <sql id="Column_List">
      DISTINCT *
    </sql>
    <sql id="where_condition">
        <if test="p.id != null and p.id !=''">
            and id = #{p.id}
        </if>
        <if test="p.userId != null and p.userId !=''">
            and user_id = #{p.userId}
        </if>
        <if test="p.hospitalId != null and p.hospitalId !=''">
            and hospital_id = #{p.hospitalId}
        </if>
        <if test="p.hospitalName != null and p.hospitalName !=''">
            and hospital_name like '%${p.hospitalName}%'
        </if>
        <if test="p.departmentId != null and p.departmentId !=''">
            and department_id = #{p.departmentId}
        </if>
        <if test="p.departmentName != null and p.departmentName !=''">
            and department_name = #{p.departmentName}
        </if>
        <if test="p.doctorName != null and p.doctorName !=''">
            and doctor_name like '%${p.doctorName}%'
        </if>
        <if test="p.doctorLogo != null and p.doctorLogo !=''">
            and doctor_logo = #{p.doctorLogo}
        </if>
        <if test="p.doctorTel != null and p.doctorTel !=''">
            and doctor_tel like concat('%',#{p.doctorTel},'%')
        </if>
        <if test="p.doctorRankId != null and p.doctorRankId !=''">
            and doctor_rank_id = #{p.doctorRankId}
        </if>
        <if test="p.doctorRank != null and p.doctorRank !=''">
            and doctor_rank = #{p.doctorRank}
        </if>
        <if test="p.doctorOtherLink != null and p.doctorOtherLink !=''">
            and doctor_other_link = #{p.doctorOtherLink}
        </if>
        <if test="p.doctorEmail != null and p.doctorEmail !=''">
            and doctor_email = #{p.doctorEmail}
        </if>
        <if test="p.doctorAbout != null and p.doctorAbout !=''">
            and doctor_about = #{p.doctorAbout}
        </if>
        <if test="p.isAnswer != null and p.isAnswer !=''">
            and is_answer = #{p.isAnswer}
        </if>
        <if test="p.isSigning != null and p.isSigning !=''">
            and is_signing = #{p.isSigning}
        </if>
        <if test="p.isTop != null and p.isTop !=''">
            and is_top = #{p.isTop}
        </if>
        <if test="p.isDel != null and p.isDel !=''">
            and is_del = #{p.isDel}
        </if>
        <if test="p.doctorState != null and p.doctorState !=''">
            and doctor_state = #{p.doctorState}
        </if>
        <if test="p.enabled != null and p.enabled !=''">
            and enabled = #{p.enabled}
        </if>
        <if test="p.createUserId != null and p.createUserId !=''">
            and create_user_id = #{p.createUserId}
        </if>
        <if test="p.createUserName != null and p.createUserName !=''">
            and create_user_name = #{p.createUserName}
        </if>
        <if test="p.updateUserId != null and p.updateUserId !=''">
            and update_user_id = #{p.updateUserId}
        </if>
        <if test="p.updateUserName != null and p.updateUserName !=''">
            and update_user_name = #{p.updateUserName}
        </if>
        <if test="p.createTime != null and p.createTime !=''">
            and create_time = #{p.createTime}
        </if>
        <if test="p.updateTime != null and p.updateTime !=''">
            and update_time = #{p.updateTime}
        </if>
    </sql>
    <!--sql查询片段-->
    <sql id="where_list">
        <where>
            <!--查询条件自行添加-->
            is_del=0
            <include refid="where_condition"></include>
            <include refid="Role_Organization"/>
        </where>
    </sql>
 
    <!--定义数据权限的查询-->
    <sql id="Role_Organization">
        <if test="p.roleOrg != null and p.roleOrg.size>0">
            <foreach item="item" collection="p.roleOrg" index="">
                <foreach item="itemto" collection="item" index="inx">
                    <choose>
                        <when test="inx == 1">
                            <if test="itemto.flag">
 
                            </if>
                            <if test="!itemto.flag">
                                or ( is_del = 0 and enabled=1) <include refid="where_condition"></include>
                            </if>
                        </when>
                        <when test="inx==2">
                            <if test="itemto.flag">
                                AND
                                <foreach item="itemtoto" collection="itemto.object" separator="or" open="(" close=")"
                                         index="">
                                    create_user_org_code = #{itemtoto.orgCode}
                                </foreach>
                            </if>
                            <if test="!itemto.flag">
                                or (
                                <foreach item="itemtoto" collection="itemto.object" separator="or" open="(" close=")"
                                         index="">
                                    create_user_org_code = #{itemtoto.orgCode}
                                </foreach>
                                and is_del = 0 and enabled=1  <include refid="where_condition"></include>
                                )
                            </if>
                        </when>
                        <when test="inx == 3">
                            <if test="itemto.flag">
                                AND
                                create_user_org_code = #{itemto.object}
                            </if>
                            <if test="!itemto.flag">
                                or (create_user_org_code = #{itemto.object} and is_del = 0 and enabled=1) <include refid="where_condition"></include>
                            </if>
                        </when>
                        <when test="inx == 4">
                            <if test="itemto.flag">
                                AND
                                create_user_org_code like '${itemto.object}%'
                            </if>
                            <if test="!itemto.flag">
                                or (create_user_org_code like '${itemto.object}%' and is_del = 0 and enabled=1) <include refid="where_condition"></include>
                            </if>
                        </when>
                        <when test="inx == 5">
                            <if test="itemto.flag">
                                AND
                                create_user_id = #{itemto.object}
                            </if>
                            <if test="!itemto.flag">
                                or (create_user_id = #{itemto.object} and is_del = 0 and enabled=1) <include refid="where_condition"></include>
                            </if>
                        </when>
                        <otherwise>
                            AND id is null
                        </otherwise>
                    </choose>
                </foreach>
            </foreach>
        </if>
    </sql>
 
    <sql id="where">
        <where>
            <!--查询条件自行添加-->
            is_del=0
            <include refid="where_condition"></include>
        </where>
    </sql>
 
    <!--定义根据-SysDoctor当作查询条件返回对象-->
    <select id="findByObject" resultType="com.kidgrow.usercenter.model.SysDoctor">
        select
        <include refid="Column_List"/>
        from sys_doctor
        <include refid="where"/>
        order by id desc
        limit 1
    </select>
 
    <!--定义根据-SysDoctor当作查询条件返回对象集合-->
    <select id="findList" resultType="com.kidgrow.usercenter.model.SysDoctor">
        select
        <include refid="Column_List"/>
        from sys_doctor
        <include refid="where_list"/>
        order by id desc
    </select>
 
    <select id="userIsAdmin" parameterType="string" resultType="com.kidgrow.usercenter.model.SysDoctor">
        SELECT
        is_admin_user
        FROM
            sys_doctor
        WHERE
        user_id IN (
        SELECT
            id
        FROM
            sys_user
        WHERE
        username = #{userName}
        OR mobile = #{userName})
    </select>
    <select id="chartDoctor" resultType="int" parameterType="int">
        select count(id) doctorCount from sys_doctor where is_del=0 and enabled=1
        <if test="datatype==0">
            -- 自注册医生
            and (doctor_type=0 or doctor_type=1) and doctor_state=0
        </if>
        <if test="datatype==1">
            -- 签约医生
            and is_signing=1 and doctor_state=1
        </if>
        <if test="datatype==2">
            -- 医答医生
            and is_answer=1 and doctor_state=1
        </if>
        <if test="datatype==3">
            -- C端医生
            and (doctor_type=2 or doctor_type=0) and doctor_state=1
        </if>
        <if test="datatype==4">
            -- H端医生
            and (doctor_type=1 or doctor_type=0) and doctor_state=1
        </if>
        <if test="datatype==5">
            -- H端医生
            and (doctor_type=1 or doctor_type=0) and doctor_state=0 and enabled=0
        </if>
    </select>
</mapper>