From 4b86cf6bbe5a7204a801169398fa836e8e06c109 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 14 Dec 2022 17:04:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/master'

---
 src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml |  496 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 496 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml b/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml
new file mode 100644
index 0000000..decb219
--- /dev/null
+++ b/src/main/java/org/springblade/modules/system/mapper/MenuMapper.xml
@@ -0,0 +1,496 @@
+<?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.MenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="menuResultMap" type="org.springblade.modules.system.entity.Menu">
+        <id column="id" property="id"/>
+        <result column="code" property="code"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="name" property="name"/>
+        <result column="alias" property="alias"/>
+        <result column="path" property="path"/>
+        <result column="source" property="source"/>
+        <result column="sort" property="sort"/>
+        <result column="category" property="category"/>
+        <result column="action" property="action"/>
+        <result column="is_open" property="isOpen"/>
+        <result column="remark" property="remark"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+    <resultMap id="menuVOResultMap" type="org.springblade.modules.system.vo.MenuVO">
+        <id column="id" property="id"/>
+        <result column="code" property="code"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="name" property="name"/>
+        <result column="alias" property="alias"/>
+        <result column="path" property="path"/>
+        <result column="source" property="source"/>
+        <result column="sort" property="sort"/>
+        <result column="category" property="category"/>
+        <result column="action" property="action"/>
+        <result column="is_open" property="isOpen"/>
+        <result column="remark" property="remark"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="has_children" property="hasChildren"/>
+    </resultMap>
+
+    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+    </resultMap>
+
+
+    <select id="lazyList" resultMap="menuVOResultMap">
+        SELECT
+            menu.*,
+            (
+                SELECT
+                     CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
+                FROM
+                     blade_menu
+                WHERE
+                     parent_id = menu.id AND is_deleted = 0
+            ) AS "has_children"
+        FROM
+            blade_menu menu
+        WHERE menu.is_deleted = 0
+        <if test="param1!=null">
+            and menu.parent_id = #{param1}
+        </if>
+        <if test="param2.name!=null and param2.name!=''">
+            and menu.name like concat(concat('%', #{param2.name}),'%')
+        </if>
+        <if test="param2.code!=null and param2.code!=''">
+            and menu.code like concat(concat('%', #{param2.code}),'%')
+        </if>
+        <if test="param2.alias!=null and param2.alias!=''">
+            and menu.alias like concat(concat('%', #{param2.alias}),'%')
+        </if>
+        ORDER BY menu.sort
+    </select>
+
+    <select id="lazyMenuList" resultMap="menuVOResultMap">
+        SELECT
+            menu.*,
+            (
+                SELECT
+                    CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
+                FROM
+                    blade_menu
+                WHERE
+                    parent_id = menu.id AND is_deleted = 0  AND category = 1
+            ) AS "has_children"
+        FROM
+            blade_menu menu
+        WHERE menu.is_deleted = 0 AND menu.category = 1
+        <if test="param1!=null">
+            and menu.parent_id = #{param1}
+        </if>
+        <if test="param2.name!=null and param2.name!=''">
+            and menu.name like concat(concat('%', #{param2.name}),'%')
+        </if>
+        <if test="param2.code!=null and param2.code!=''">
+            and menu.code like concat(concat('%', #{param2.code}),'%')
+        </if>
+        <if test="param2.alias!=null and param2.alias!=''">
+            and menu.alias like concat(concat('%', #{param2.alias}),'%')
+        </if>
+        ORDER BY menu.sort
+    </select>
+
+    <select id="tree" resultMap="treeNodeResultMap">
+        select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0 and category = 1
+    </select>
+
+    <select id="allMenu" resultMap="menuResultMap">
+        select * from blade_menu where is_deleted = 0 and category = 1
+    </select>
+
+    <select id="roleMenu" resultMap="menuResultMap">
+        select * from blade_menu where is_deleted = 0 and id IN
+            ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+                <foreach collection="param1" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            )
+        <if test="param2!=null and param2>0">
+            AND id IN
+            (
+            SELECT menu_id FROM blade_top_menu_setting WHERE top_menu_id = #{param2}
+            )
+        </if>
+    </select>
+
+    <select id="roleMenuByRoleId" resultMap="menuResultMap">
+        select * from blade_menu where is_deleted = 0 and id IN
+            ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+                <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            )
+    </select>
+
+    <select id="roleMenuByTopMenuId" resultMap="menuResultMap">
+        select * from blade_menu where is_deleted = 0 and id IN
+          (
+              SELECT menu_id FROM blade_top_menu_setting WHERE top_menu_id = #{param1}
+          )
+    </select>
+
+    <select id="allMenuExt" resultMap="menuResultMap">
+        select * from blade_menu_ext where is_deleted = 0 and category = 1
+    </select>
+
+    <select id="roleMenuExt" resultMap="menuResultMap">
+        select * from blade_menu_ext where is_deleted = 0 and id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+        <foreach collection="param1" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach> )
+        <if test="param2!=null and param2>0">
+            AND id IN
+            (
+            SELECT menu_id FROM blade_top_menu_setting WHERE top_menu_id = #{param2}
+            )
+        </if>
+    </select>
+
+    <select id="routes" resultMap="menuResultMap">
+        SELECT
+            *
+        FROM
+            blade_menu
+        WHERE
+            is_deleted = 0 and category = 1
+            and id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+                        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                            #{item}
+                        </foreach> )
+    </select>
+
+    <select id="allButtons" resultMap="menuResultMap">
+        SELECT
+            id,
+            parent_id,
+            CODE,
+            NAME,
+            alias,
+            path,
+            source,
+            action,
+            sort
+        FROM
+            blade_menu
+        WHERE
+            (
+                category = 2 OR id IN ( SELECT parent_id FROM blade_menu WHERE is_deleted = 0 AND category = 2 )
+            )
+          AND is_deleted = 0
+        ORDER BY sort
+    </select>
+
+    <select id="buttons" resultMap="menuResultMap">
+        SELECT  * FROM (
+            SELECT
+                id,
+                parent_id,
+                code,
+                name,
+                alias,
+                path,
+                source,
+                action,
+                sort
+            FROM
+                blade_menu
+            WHERE
+                is_deleted = 0 and id IN (
+                  SELECT parent_id FROM blade_menu
+                  WHERE ( category = 2 AND id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                  ) ) )
+
+            UNION ALL
+
+            SELECT
+                id,
+                parent_id,
+                code,
+                name,
+                alias,
+                path,
+                source,
+                action,
+                sort
+            FROM
+                blade_menu
+            WHERE
+                is_deleted = 0 and  category = 2 AND id IN ( SELECT menu_id FROM blade_role_menu WHERE role_id IN
+                <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>)
+        ) a ORDER BY sort
+    </select>
+
+    <select id="grantTree" resultMap="treeNodeResultMap">
+        select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0 order by sort
+    </select>
+
+    <select id="grantTreeByRole" resultMap="treeNodeResultMap">
+        select id, parent_id, name as title, id as "value", id as "key" from blade_menu where is_deleted = 0
+        and id in ( select menu_id from blade_role_menu where role_id in
+        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach> )
+        or id in (
+            select parent_id from blade_menu where is_deleted = 0
+            and id in ( select menu_id from blade_role_menu where role_id in
+            <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach> )
+          )
+        order by sort
+    </select>
+
+    <select id="grantTopTree" resultMap="treeNodeResultMap">
+        select id, parent_id, name as title, id as "value", id as "key" from blade_menu where category = 1 and is_deleted = 0 order by sort
+    </select>
+
+    <select id="grantTopTreeByRole" resultMap="treeNodeResultMap">
+        select id, parent_id, name as title, id as "value", id as "key" from blade_menu where category = 1 and is_deleted = 0
+        and id in ( select menu_id from blade_role_menu where role_id in
+        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach> )
+        or id in (
+        select parent_id from blade_menu where is_deleted = 0
+        and id in ( select menu_id from blade_role_menu where role_id in
+        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach> )
+        )
+        order by sort
+    </select>
+
+    <select id="grantDataScopeTree" resultMap="treeNodeResultMap">
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    id,
+                    parent_id,
+                    NAME AS title,
+                    id AS "value",
+                    id AS "key"
+                FROM
+                    blade_menu
+                WHERE
+                    category = 1
+                  AND is_deleted = 0
+                  AND id IN ( SELECT menu_id FROM blade_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            ) menu
+
+        UNION ALL
+
+        SELECT
+            id,
+            menu_id AS parent_id,
+            scope_name AS title,
+            id AS "value",
+            id AS "key"
+        FROM
+            blade_scope_data
+        WHERE
+            is_deleted = 0
+          AND menu_id IS NOT NULL
+    </select>
+
+    <select id="grantApiScopeTree" resultMap="treeNodeResultMap">
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    id,
+                    parent_id,
+                    NAME AS title,
+                    id AS "value",
+                    id AS "key"
+                FROM
+                    blade_menu
+                WHERE
+                    category = 1
+                  AND is_deleted = 0
+                  AND id IN ( SELECT menu_id FROM blade_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            ) menu
+
+        UNION ALL
+
+        SELECT
+            id,
+            menu_id AS parent_id,
+            scope_name AS title,
+            id AS "value",
+            id AS "key"
+        FROM
+            blade_scope_api
+        WHERE
+            is_deleted = 0
+          AND menu_id IS NOT NULL
+    </select>
+
+    <select id="grantDataScopeTreeByRole" resultMap="treeNodeResultMap">
+        SELECT
+        *
+        FROM
+        (
+            SELECT
+                id,
+                parent_id,
+                NAME AS title,
+                id AS "value",
+                id AS "key"
+            FROM
+                blade_menu
+            WHERE
+                category = 1
+            AND is_deleted = 0
+            AND id IN ( SELECT menu_id FROM blade_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            AND (
+                id IN (
+                    select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                )
+                OR id IN (
+                    select parent_id from blade_menu where is_deleted = 0
+                    and id in ( select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach> )
+                )
+            )
+        ) menu
+
+        UNION ALL
+
+        SELECT
+            id,
+            menu_id AS parent_id,
+            scope_name AS title,
+            id AS "value",
+            id AS "key"
+        FROM
+            blade_scope_data
+        WHERE
+            is_deleted = 0
+        AND (
+            menu_id IN (
+                select menu_id from blade_role_menu where role_id in
+                <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            )
+            OR menu_id IN (
+                select parent_id from blade_menu where is_deleted = 0
+                and id in ( select menu_id from blade_role_menu where role_id in
+                <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach> )
+            )
+        )
+        AND menu_id IS NOT NULL
+    </select>
+
+    <select id="grantApiScopeTreeByRole" resultMap="treeNodeResultMap">
+        SELECT
+        *
+        FROM
+        (
+            SELECT
+                id,
+                parent_id,
+                NAME AS title,
+                id AS "value",
+                id AS "key"
+            FROM
+                blade_menu
+            WHERE
+                category = 1
+            AND is_deleted = 0
+            AND id IN ( SELECT menu_id FROM blade_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            AND (
+                id IN (
+                    select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                )
+                OR id IN (
+                    select parent_id from blade_menu where is_deleted = 0
+                    and id in (
+                        select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach> )
+                )
+            )
+        ) menu
+
+        UNION ALL
+
+        SELECT
+            id,
+            menu_id AS parent_id,
+            scope_name AS title,
+            id AS "value",
+            id AS "key"
+        FROM
+            blade_scope_api
+        WHERE
+            is_deleted = 0
+        AND
+            (
+                menu_id IN (
+                    select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                )
+            OR menu_id IN (
+                    select parent_id from blade_menu where is_deleted = 0
+                    and id in ( select menu_id from blade_role_menu where role_id in
+                    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach> )
+                )
+        )
+        AND menu_id IS NOT NULL
+    </select>
+
+    <select id="authRoutes" resultType="org.springblade.modules.system.dto.MenuDTO">
+        SELECT
+            GROUP_CONCAT(r.role_alias) as alias,
+            m.path
+        FROM
+            blade_role_menu rm
+            LEFT JOIN blade_menu m ON rm.menu_id = m.id
+            LEFT JOIN blade_role r ON rm.role_id = r.id
+        WHERE
+            rm.role_id IN
+            <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            AND m.path IS NOT NULL and m.is_deleted = 0
+        GROUP BY m.path
+    </select>
+
+</mapper>

--
Gitblit v1.9.3