chushangcloud/chushang-modules/chushang-module-system/system-service/src/main/resources/mapper/SysMenuMapper.xml

184 lines
7.2 KiB
XML

<?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.chushang.system.mapper.SysMenuMapper">
<resultMap type="com.chushang.system.entity.po.SysMenu" id="SysMenuResult">
<id property="menuId" column="menu_id"/>
<result property="menuName" column="menu_name"/>
<result property="parentId" column="parent_id"/>
<result property="orderNum" column="order_num"/>
<result property="path" column="path"/>
<result property="component" column="component"/>
<result property="query" column="query"/>
<result property="frame" column="frame"/>
<result property="cache" column="cache"/>
<result property="menuType" column="menu_type"/>
<result property="visible" column="visible"/>
<result property="status" column="status"/>
<result property="perms" column="perms"/>
<result property="icon" column="icon"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="delState" column="del_state"/>
</resultMap>
<sql id="selectMenuVo">
select menu_id,
menu_name,
parent_id,
order_num,
path,
component,
`query`,
frame,
cache,
menu_type,
visible,
status,
ifnull(perms, '') as perms,
icon,
create_time,
del_state,
create_by,
update_time,
update_by
from sys_menu
where del_state = FALSE
</sql>
<select id="selectMenuPermsByUserId" resultType="java.lang.String">
select m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role r on r.role_id = ur.role_id
where m.del_state = FALSE
and r.status = TRUE
and ur.user_id = #{userId}
</select>
<select id="selectMenuList" resultMap="SysMenuResult">
<include refid="selectMenuVo"/>
<if test="menuName != null and menuName != ''">
AND menu_name like concat('%', #{menuName}, '%')
</if>
<if test="visible != null and visible != ''">
AND visible = #{visible}
</if>
<if test="status != null ">
AND status = #{status}
</if>
order by parent_id, order_num
</select>
<select id="selectMenuListByUserId" resultMap="SysMenuResult">
select distinct m.menu_id,
m.parent_id,
m.menu_name,
m.path,
m.component,
m.`query`,
m.visible,
m.status,
ifnull(m.perms, '') as perms,
m.frame,
m.cache,
m.menu_type,
m.icon,
m.order_num,
m.create_time,
m.del_state
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
where m.del_state = FALSE
AND ur.user_id = #{sqlParam.userId}
<if test="menuName != null and menuName != ''">
AND m.menu_name like concat('%', #{menuName}, '%')
</if>
<if test="visible != null and visible != ''">
AND m.visible = #{visible}
</if>
<if test="status != null ">
AND m.status = #{status}
</if>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListByRoleId" resultType="java.lang.Long">
select m.menu_id
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
where m.del_state = FALSE
AND rm.role_id = #{roleId}
<if test="menuCheckStrictly">
and m.menu_id not in (select m.parent_id
from sys_menu m
inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId})
</if>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuTreeAll" resultMap="SysMenuResult">
select m.menu_id,
m.parent_id,
m.menu_name,
m.path,
m.component,
m.`query`,
m.visible,
m.status,
ifnull(m.perms, '') as perms,
m.frame,
m.cache,
m.menu_type,
m.icon,
m.order_num,
m.create_time
from sys_menu m
where m.del_state = FALSE AND m.menu_type in ('M', 'C') and m.status = 1
order by m.parent_id, m.order_num
</select>
<select id="selectMenuTreeByUserId" resultMap="SysMenuResult">
SELECT DISTINCT
m.menu_id,
m.parent_id,
m.menu_name,
m.path,
m.component,
m.`query`,
m.visible,
m.STATUS,
ifnull(m.perms, '') AS perms,
m.frame,
m.CACHE,
m.menu_type,
m.icon,
m.order_num,
m.create_time
FROM sys_menu m
INNER JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
AND rm.role_id in (SELECT ur.role_id
FROM sys_user_role ur
LEFT JOIN sys_role ro ON ur.role_id = ro.role_id
LEFT JOIN sys_user u ON ur.user_id = u.user_id
WHERE u.user_id = #{userId}
AND ro.STATUS = 1)
WHERE m.del_state = FALSE
AND m.menu_type IN ('M', 'C')
AND m.`status` = TRUE
ORDER BY
m.parent_id,
m.order_num
</select>
<select id="selectMenuPermsByRoleId" resultType="java.lang.String">
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( m.perms, ',', b.help_topic_id + 1 ), ',',- 1 ) AS perms
FROM sys_menu m
LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
JOIN mysql.help_topic b ON b.help_topic_id &lt; ( LENGTH( m.perms ) - LENGTH( REPLACE ( m.perms, ',', '' ) ) + 1 )
WHERE m.STATUS = 1 AND rm.role_id = #{roleId}
</select>
</mapper>