MenuMapper.xml 5.19 KB
<?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.thingsboard.server.dao.yunteng.mapper.MenuMapper">
    <resultMap type="org.thingsboard.server.common.data.yunteng.dto.MenuDTO" id="menuDTOMap">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="parentId" column="parent_id"/>
        <result property="path" column="path"/>
        <result property="type" column="type" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
        <result property="permission" column="permission"/>
        <result property="sort" column="sort"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="component" column="component"/>
        <result property="meta" column="meta"
                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
        <result property="alias" column="alias"/>
        <result property="redirect" column="redirect"/>
        <result property="caseSensitive" column="case_sensitive"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
    <sql id="menuDTOMapColumn">
        id,
       parent_id,
       path,
       type,
       permission,
       sort,
       component,
       name,
       meta,
       alias,
       redirect,
       case_sensitive,
       create_time,
       update_time,
       tenant_id
    </sql>
    <select id="selectTenantMenu" resultMap="menuDTOMap">
        SELECT
        <include refid="menuDTOMapColumn">
        </include>
        FROM sys_menu WHERE id IN (
            SELECT menu_id FROM sys_role_menu WHERE role_id IN (
                SELECT id FROM sys_role WHERE id in (
                    SELECT role_id FROM sys_tenant_role WHERE tenant_id = #{tenantId}
                ) AND enabled=true
            )
        )
    </select>

    <select id="selectMyMenu" resultMap="menuDTOMap">
        SELECT
        <include refid="menuDTOMapColumn">
        </include>
        FROM sys_menu
        WHERE id IN (
            SELECT menu_id FROM sys_role_menu WHERE role_id IN (
                SELECT id FROM sys_role WHERE id in (
                    SELECT role_id FROM sys_user_role WHERE user_id = #{userId}
                ) AND enabled=true
            )
        )
    </select>

    <delete id="deleteTenantMenuMappingByMenuIds">
        DELETE FROM sys_tenant_menu WHERE menu_id IN
        <foreach collection="menuIds" item="menuId" open="(" separator="," close=")">
            #{menuId}
        </foreach>
    </delete>

    <select id="selectTenantMenuIds" resultType="java.lang.String">
        SELECT menu_id
        FROM sys_tenant_menu
        WHERE tenant_id = #{tenantId}
    </select>

    <select id="selectRoleMenuIds" resultType="java.lang.String">
        SELECT menu_id
        FROM sys_role_menu
        WHERE role_id = #{roleId}
    </select>

    <insert id="addMenuToTenant">
        INSERT INTO sys_tenant_menu(menu_id , tenant_id) VALUES
        <foreach collection="menuIds" item="menuId" index="index" separator=",">
            (#{menuId},#{tenantId})
        </foreach>
    </insert>

    <insert id="addMenuToRole">
        INSERT INTO sys_role_menu(menu_id , role_id) VALUES
        <foreach collection="menuIds" item="menuId" index="index" separator=",">
            (#{menuId},#{roleId})
        </foreach>
    </insert>
    <delete id="removeMenuFromTenant">
        DELETE FROM sys_tenant_menu WHERE
        tenant_id =#{tenantId} AND menu_id IN
        <foreach collection="menuIds" item="menuId" open="(" separator="," close=")">
            #{menuId}
        </foreach>
    </delete>

    <delete id="removeMenuFromRole">
        DELETE FROM sys_role_menu WHERE
        role_id =#{roleId} AND menu_id IN
        <foreach collection="menuIds" item="menuId" open="(" separator="," close=")">
            #{menuId}
        </foreach>
    </delete>

    <select id="getAllIdsByTenantId" resultType="java.lang.String">
        SELECT id FROM sys_menu WHERE tenant_id IN
        <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")">
            #{tenantId}
        </foreach>
    </select>

    <select id="getAllPermission" resultType="java.lang.String">
        SELECT permission
        FROM sys_menu
    </select>

    <select id="getAllPermissionsByTenantId" resultType="java.lang.String">
        SELECT permission
        FROM sys_menu
        WHERE id IN
              (SELECT menu_id FROM sys_tenant_menu WHERE tenant_id = #{tenantId})
    </select>

    <select id="getAllPermissionsByUserId" resultType="java.lang.String">
        SELECT permission
        FROM sys_menu
        WHERE id IN
              (SELECT menu_id
               FROM sys_role_menu
               WHERE role_id IN (
                       SELECT role_id
                       FROM sys_user_role
                       WHERE user_id = #{userId}))
    </select>

    <select id="selectSysAdminMenu" resultMap="menuDTOMap">
        SELECT
        <include refid="menuDTOMapColumn">
        </include>
        FROM sys_menu
        WHERE type = 'SYSADMIN'
    </select>
</mapper>