<?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="org.springblade.modules.system.mapper.UserMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="userResultMap" type="org.springblade.modules.system.entity.User">
        <result column="id" property="id"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="create_user" property="createUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="code" property="code"/>
        <result column="ehr" property="ehr"/>
        <result column="user_type" property="userType"/>
        <result column="account" property="account"/>
        <result column="password" property="password"/>
        <result column="name" property="name"/>
        <result column="real_name" property="realName"/>
        <result column="email" property="email"/>
        <result column="phone" property="phone"/>
        <result column="birthday" property="birthday"/>
        <result column="sex" property="sex"/>
        <result column="role_id" property="roleId"/>
        <result column="dept_id" property="deptId"/>
        <result column="post_id" property="postId"/>
        <result column="remark" property="remark"/>
        <result column="is_ldapuser" property="isLdapuser"/>
    </resultMap>

    <select id="selectUserPage" resultMap="userResultMap">
        select * from blade_user where is_deleted = 0 and account != 'admin'
        <if test="tenantId!=null and tenantId != ''">
            and tenant_id = #{tenantId}
        </if>
        <if test="user.tenantId!=null and user.tenantId != ''">
            and tenant_id = #{user.tenantId}
        </if>
        <if test="user.account!=null and user.account != ''">
            and account = #{user.account}
        </if>
        <if test="user.name!=null and user.name != ''">
            and name = #{user.name}
        </if>
        <if test="user.code!=null and user.code != ''">
            and code = #{user.code}
        </if>
        <if test="user.ehr!=null and user.ehr != ''">
            and ehr = #{user.ehr}
        </if>
        <if test="user.isLdapuser!=null">
            and is_ldapuser = #{user.isLdapuser}
        </if>
        <if test="user.roleId!=null and user.roleId != ''">
            and role_id like '%${user.roleId}%'
        </if>
        <if test="user.deptId!=null and user.deptId != ''">
            and dept_id like '%${user.deptId}%'
        </if>
        <if test="deptIdList!=null and deptIdList.size>0">
            and id in (
                SELECT
                    user_id
                FROM
                    blade_user_dept
                WHERE
                dept_id IN
                <foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            )
        </if>
        ORDER BY id
    </select>

    <select id="getUser" resultMap="userResultMap">
        SELECT
            *
        FROM
            blade_user
        WHERE
            tenant_id = #{param1} and account = #{param2} and password = #{param3} and is_deleted = 0
    </select>

    <select id="exportUser" resultType="org.springblade.modules.system.excel.UserExcel">
        SELECT * FROM blade_user ${ew.customSqlSegment}
    </select>

<!--    getUsersByDeptIdsRoleIds-->
    <select id="getUsersByDeptIdsRoleIds" resultMap="userResultMap">
        select * from blade_user where is_deleted = 0
        <if test="deptIds!=null and deptIds.size>0">
            and id in (
            SELECT
            user_id
            FROM
            blade_user_dept
            WHERE
            dept_id IN
            <foreach collection="deptIds" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
            )
        </if>
        <if test="roleIds!=null and roleIds.size>0">
            and role_id in
            <foreach collection="roleIds" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        ORDER BY id
    </select>

</mapper>
