<?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.example.his.api.db.dao.RoleDao">

    <resultMap id="BaseResultMap" type="com.example.his.api.db.pojo.RoleEntity">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="roleName" column="role_name" jdbcType="VARCHAR"/>
            <result property="permissions" column="permissions" jdbcType="OTHER"/>
            <result property="desc" column="desc" jdbcType="VARCHAR"/>
            <result property="defaultPermissions" column="default_permissions" jdbcType="OTHER"/>
            <result property="systemic" column="systemic" jdbcType="TINYINT"/>
            <result property="echo" column="echo" jdbcType="OTHER"/>
    </resultMap>

    <!-- 角色列表-查询全部 -->
    <select id="searchAllRole" resultType="HashMap">
        SELECT id,role_name AS roleName FROM tb_role ORDER BY id
    </select>
    <!-- 角色列表-查询id -->
    <select id="searchRoleById" resultType="HashMap">
        select * from tb_role where id = #{id}
    </select>
    <!-- 角色列表-分页查询 -->
    <select id="searchRole" resultType="HashMap">
        SELECT r.id,
        r.role_name AS roleName,
        COUNT( u.id ) AS users,
        JSON_LENGTH ( r.permissions ) AS permissionsLength,
        r.permissions,
        r.desc,
        r.systemic,
        r.echo
        FROM tb_role r
        LEFT JOIN tb_user u ON JSON_CONTAINS ( u.role, CONVERT ( r.id, CHAR ) )
        <where>
            <if test="searchKeyWord != null and searchKeyWord != ''">
                AND r.role_name LIKE '%${searchKeyWord}%'
            </if>
        </where>
        GROUP BY r.id
        ORDER BY r.id
    </select>
    <!-- 角色列表-新增 -->
    <insert id="insertRole">
        insert into tb_role
        SET
        role_name=#{roleName},
        permissions=#{permissions},
        echo=#{echo}
        <if test="desc!=null">
            ,`desc`=#{desc}
        </if>
    </insert>

    <!-- 角色列表-更新 -->
    <update id="updateRole">
        update tb_role set
        `role_name` = #{roleName},
        `permissions` = #{permissions},
        `echo` = #{echo}
        <if test="desc!=null">
            ,`desc`=#{desc}
        </if>
        <if test="systemic!=null">
            ,`systemic`=#{systemic}
        </if>
        where id = #{id}
    </update>

    <!-- 角色列表-删除 -->
    <delete id="deleteRole">
        delete from tb_role where id = #{id}
    </delete>
    <!-- 角色列表-批量删除 -->
    <delete id="deleteBatchRole">
        delete from tb_role where id in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>
</mapper>
