forked from kidgrow-microservices-platform

zhaoxiaohao
2020-11-16 f30a977b18541d2f1b9a7863b1377e5f366df9dc
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml
@@ -4,133 +4,171 @@
<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
            <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 = #{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 '%${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>
            <if test="p.likes != null and p.likes.size>0">
                <foreach item="item" collection="p.likes" index="">
                    <foreach item="itemto" collection="item" index="inx">
                        <choose>
                            <when test="inx.type == 1"></when>
                            <when test="inx.type==2">
                                AND
                                <foreach item="itemtoto" collection="itemto" separator="or" open="(" close=")" index="">
                                    create_user_org_code like '${itemtoto.orgCode}%'
                                </foreach>
                            </when>
                            <when test="inx.type == 3">
                                AND
                                <foreach item="itemtoto" collection="itemto" separator="or" open="(" close=")" index="">
                                  create_user_org_code = #{itemtoto.orgCode}
                                </foreach>
                            </when>
                            <when test="inx.type == 4">
                                AND
                                <foreach item="itemtoto" collection="itemto" separator="or" open="(" close=")" index="">
                                     create_user_org_code like '${itemtoto.orgCode}%'
                                </foreach>
                            </when>
                            <when test="inx.type == 5">
                                AND
                                <foreach item="itemtoto" collection="itemto" separator="or" open="(" close=")" index="">
                                    create_user_id = #{itemtoto.orgCode}
                                </foreach>
                            </when>
                            <otherwise>
                                AND id is null
                            </otherwise>
                        </choose>
                    </foreach>
                </foreach>
            </if>
            <include refid="where_condition"></include>
        </where>
    </sql>
@@ -149,7 +187,50 @@
        select
        <include refid="Column_List"/>
        from sys_doctor
        <include refid="where"/>
        <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>