<?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.nantian.sc.cloud.admin.mapper.SysMenuMapper">

	<!-- 通用查询映射结果 -->
	<resultMap id="BaseResultMap" type="com.nantian.sc.cloud.admin.api.entity.SysMenu">
		<id column="menu_id" property="menuId"/>
		<result column="name" property="name"/>
		<result column="permission" property="permission"/>
		<result column="path" property="path"/>
		<result column="parent_id" property="parentId"/>
		<result column="icon" property="icon"/>
		<result column="sort" property="sort"/>
		<result column="type" property="type"/>
		<result column="keep_alive" property="keepAlive"/>
		<result column="create_time" property="createTime"/>
		<result column="update_time" property="updateTime"/>
		<result column="del_flag" property="delFlag"/>
		<result column="file_path" property="filePath"/>
		<result column="hide_menu" property="hideMenu"/>
		<result column="authority" property="authority"/>
		<result column="component" property="component"/>
		<result column="y_name" property="yName"/>
	</resultMap>

	<resultMap id="MenuVoResultMap" type="com.nantian.sc.cloud.admin.api.vo.MenuVO">
		<id column="menu_id" property="menuId"/>
		<result column="name" property="name"/>
		<result column="permission" property="permission"/>
		<result column="parent_id" property="parentId"/>
		<result column="icon" property="icon"/>
		<result column="path" property="path"/>
		<result column="sort" property="sort"/>
		<result column="keep_alive" property="keepAlive"/>
		<result column="type" property="type"/>
		<result column="create_time" property="createTime"/>
		<result column="update_time" property="updateTime"/>
		<result column="del_flag" property="delFlag"/>
		<result column="file_path" property="filePath"/>
		<result column="hide_menu" property="hideMenu"/>
		<result column="authority" property="authority"/>
		<result column="component" property="component"/>
		<result column="y_name" property="yName"/>
	</resultMap>

	<insert id="saveMenu">
		INSERT INTO sys_menu (menu_id, name, permission, parent_id, icon, path, sort, type, keep_alive, file_path, hide_menu, authority, component, y_name)
		VALUES (#{menuId}, #{name}, #{permission}, #{parentId}, #{icon}, #{path}, #{sort}, #{type},#{keepAlive}, #{filePath}, #{hideMenu}, #{authority}, #{component}, #{yName})
	</insert>

	<delete id="deleteMenuById">
		update sys_menu set del_flag="1" where menu_id = #{id}
	</delete>

	<!--通过角色查询菜单信息-->
	<select id="listMenusByRoleId" resultMap="MenuVoResultMap">
		SELECT
			sys_menu.*
		FROM
			sys_menu
		LEFT JOIN sys_role_menu ON sys_menu.menu_id = sys_role_menu.menu_id
		WHERE
			sys_menu.del_flag = 0
		AND sys_role_menu.role_id = #{roleId}
		ORDER BY
			sys_menu.sort DESC
    </select>

	<!--通过角色ID 查询权限-->
	<select id="listPermissionsByRoleIds" resultType="java.lang.String">
        SELECT
            m.permission
        FROM
        sys_menu m, sys_role_menu rm WHERE m.menu_id = rm.menu_id AND m.del_flag = 0 AND rm.role_id IN (#{roleIds})
    </select>

	<select id="findMenuTreeByRoleId" resultType="com.nantian.sc.cloud.admin.api.dto.MenuTree">
		select sys_menu.*
		from sys_menu
		left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id
		where sys_menu.del_flag = 0 and sys_role_menu.role_id = #{roleId}
		order by sys_menu.menu_id asc
	</select>

    <select id="findMenuTreeByRoles" resultType="com.nantian.sc.cloud.admin.api.dto.MenuTree">
		select DISTINCT sys_menu.*
		from sys_menu
		left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id
		where sys_menu.del_flag = 0
		<if test=" roleIds!=null and roleIds!='' ">
			and sys_role_menu.role_id in
			<foreach collection="roleIds" index="index" item="roleId" separator="," open="(" close=")">
				#{roleId}
			</foreach>
		</if>
		order by sys_menu.menu_id asc
	</select>

</mapper>
