<?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="cn.wisenergy.chnmuseum.party.mapper.EmployeeMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="Employee">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password_hash" property="passwordHash"/>
        <result column="password_salt" property="passwordSalt"/>
        <result column="code" property="code"/>
        <result column="name" property="name"/>
        <result column="avatar" property="avatar"/>
        <result column="sex" property="sex"/>
        <result column="id_number" property="idNumber"/>
        <result column="mobile" property="mobile"/>
        <result column="email" property="email"/>
        <result column="status" property="status"/>
        <result column="sortorder" property="sortorder"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="bank_branch_id" property="bankBranchId"/>
    </resultMap>

    <select id="selectRolenameList" resultMap="BaseResultMap">
        SELECT
        e.id,
        e.username,
        e.code,
        e.name,
        e.mobile,
        e.status,
        e.id_number,
        e.sex,
        e.avatar,
        r.id AS roleId,
        r.name AS roleName,
        e.bank_branch_id,
        bbi.name AS bankBranchName
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        LEFT JOIN bank_branch_info bbi ON bbi.id = e.bank_branch_id
        WHERE e.is_deleted = '0'
        <if test="name!=null and name!='' ">
            and (e.username LIKE concat('%', #{name}, '%')
            OR e.name LIKE concat('%', #{name}, '%')
            OR r.name LIKE concat('%', #{name}, '%')
            OR bbi.name LIKE concat('%', #{name}, '%'))
        </if>
        ORDER BY
        CONVERT (e.NAME USING gbk) COLLATE gbk_chinese_ci ASC
    </select>

    <select id="selectByEmpId" resultMap="BaseResultMap">
        SELECT
        e.id,
        e.username,
        e.code,
        e.name,
        e.mobile,
        e.status,
        e.id_number,
        e.sex,e.avatar,
        r.id AS roleId,
        r.name AS roleName,
        e.bank_branch_id
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        <where>
            e.is_deleted = '0'
            <if test=" empId != null and empId != '' ">
                AND e.id = #{empId}
            </if>
        </where>
    </select>

    <select id="selectByUsername" resultMap="BaseResultMap">
        SELECT
        e.*,
        r.id AS roleId,
        r.name AS roleName,
        r.is_allow_login AS allowLogin,
        bbi.`name` AS bankBranchName
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        LEFT JOIN bank_branch_info bbi ON bbi.id = e.bank_branch_id
        <where>
            e.is_deleted = '0'
            <if test=" username != null and username != '' ">
                AND e.username = #{username}
            </if>
        </where>
    </select>

    <select id="getEmpCodeBybankId" resultMap="BaseResultMap">
        SELECT
        e.*,
        r.id AS roleId,
        r.name AS roleName,
        r.is_allow_login AS allowLogin,
        bbi.`name` AS bankBranchName
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        LEFT JOIN bank_branch_info bbi ON bbi.id = e.bank_branch_id
        <where>
            e.is_deleted = '0'
            AND e.`status` = '1'
            AND r.id = '4'
            <if test=" bankId != null and bankId != '' ">
                AND e.bank_branch_id = #{bankId}
            </if>
        </where>
        LIMIT 1
    </select>

    <!--给支行管理员查询自己网点人员-->
    <select id="selectOwnEmpList" resultMap="BaseResultMap">
        SELECT
        e.id,
        e.username,
        e.code,
        e.name,
        e.mobile,
        e.status,
        e.id_number,
        e.sex,
        e.avatar,
        r.id AS roleId,
        r.name AS roleName,
        e.bank_branch_id,
        bbi.`name` AS bankBranchName
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        LEFT JOIN bank_branch_info bbi ON bbi.id = e.bank_branch_id
        WHERE e.is_deleted = '0'
        <if test="currBankID!=null and currBankID!='' ">
            and e.bank_branch_id = #{currBankID}
        </if>
        <if test="name!=null and name!='' ">
            and (e.username LIKE concat('%', #{name}, '%')
            OR e.name LIKE concat('%', #{name}, '%'))
        </if>
        ORDER BY
        CONVERT (e.NAME USING gbk) COLLATE gbk_chinese_ci ASC
    </select>

    <!--查询当前网点下启用的大堂主管-->
    <select id="selectEmpListByBankId" resultMap="BaseResultMap">
        SELECT
        e.id
        FROM employee e
        LEFT JOIN ref_employee_role rer ON rer.employee_id = e.id
        LEFT JOIN role r ON r.id = rer.role_id
        WHERE e.is_deleted = '0' AND e.`status` = '1' AND r.id = '4'
        <if test="employeeId!=null and employeeId!='' ">
            and e.id != #{employeeId}
        </if>
        <if test="currBankId!=null and currBankId!='' ">
            and e.bank_branch_id = #{currBankId}
        </if>
    </select>
</mapper>