You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1026 lines
37 KiB
XML

5 years ago
<?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.manage.dao.User_Dept_MenuMapper" >
<resultMap id="BaseResultMap" type="com.manage.vo.User_Dept_Menu" >
<result column="sys_id" property="sysId" jdbcType="INTEGER" />
<result column="hospital_name" property="hospitalName" jdbcType="VARCHAR" />
<result column="dept_id" property="deptId" jdbcType="VARCHAR" />
<result column="dept_name" property="deptName" jdbcType="VARCHAR" />
<result column="dept_code" property="deptCode" jdbcType="VARCHAR" />
<result column="sys_flag" property="sysFlag" jdbcType="VARCHAR" />
<result column="sys_name" property="sysName" jdbcType="VARCHAR" />
<result column="hospital_id" property="hospitalId" jdbcType="INTEGER" />
<result column="sys_type" property="sysType" jdbcType="VARCHAR" />
<result column="sort" property="sort" jdbcType="INTEGER" />
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="user_tel" property="userTel" jdbcType="VARCHAR" />
<result column="user_email" property="userEmail" jdbcType="VARCHAR" />
<result column="role_id" property="roleId" jdbcType="INTEGER" />
<result column="role_name" property="roleName" jdbcType="VARCHAR" />
<result column="menu_id" property="menuId" jdbcType="INTEGER" />
<result column="menu_name" property="menuName" jdbcType="VARCHAR" />
<result column="menu_icon" property="menuIcon" jdbcType="VARCHAR" />
<result column="menu_url" property="menuUrl" jdbcType="VARCHAR" />
<result column="method" property="method" jdbcType="VARCHAR" />
<result column="method_type" property="methodType" jdbcType="VARCHAR" />
<result column="method_parent" property="methodParent" jdbcType="INTEGER" />
<result column="method_sort" property="methodSort" jdbcType="INTEGER" />
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
<!--查询非管理员的非权限系统的权限菜单 开始-->
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 开始-->
select user_menu.* from (SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_role_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
LEFT JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
LEFT JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
LEFT JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_role_menu ON power_role.role_id = power_role_menu.role_id
LEFT JOIN power_menu ON power_menu.menu_id = power_role_menu.menu_id
AND power_sys_dict.sys_flag = power_menu.sys_flag
LEFT JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_menu.menu_id = power_user_menu.menu_id
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
<if test="sysId != null">
power_sys_dict.dict_id = #{sysId} AND
</if>
<if test="hospitalId != null">
hospital.dict_id = #{hospitalId} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND power_user_menu.flag IS NULL
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 结束-->
<!--拼接非管理员的非权限系统power_user_menu的flag为1的菜单数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id
INNER JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
INNER JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_user_menu.flag = 1
INNER JOIN power_menu ON power_menu.menu_id = power_user_menu.menu_id
AND power_menu.sys_flag = power_sys_dict.sys_flag
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
<if test="sysId != null">
power_sys_dict.dict_id = #{sysId} AND
</if>
<if test="hospitalId != null">
hospital.dict_id = #{hospitalId} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--拼接非管理员的非权限系统power_user_menu的flag为1的菜单数据 开始-->
<!--查询非管理员的非权限系统的权限菜单 结束-->
<!--查询非管理员的权限系统的权限菜单 开始-->
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
LEFT JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_role_menu ON power_role.role_id = power_role_menu.role_id
LEFT JOIN power_menu ON power_menu.menu_id = power_role_menu.menu_id
LEFT JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_menu.menu_id = power_user_menu.menu_id
WHERE
power_user.user_name = @userName
AND power_menu.sys_flag = @sysFlag
AND power_sys_dict.sys_flag = 'power'
AND power_menu.sys_flag = 'power'
AND power_user_menu.flag IS NULL
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 结束-->
<!--拼接非管理员的权限系统power_user_menu的flag为1的菜单数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
INNER JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id
INNER JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_user_menu.flag = 1
INNER JOIN power_menu ON power_menu.menu_id = power_user_menu.menu_id
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
<if test="sysId != null">
power_sys_dict.dict_id = #{sysId} AND
</if>
<if test="hospitalId != null">
hospital.dict_id = #{hospitalId} AND
</if>
power_sys_dict.sys_flag = 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND power_menu.sys_flag = 'power'
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--拼接非管理员的权限系统power_user_menu的flag为1的菜单数据 结束-->
<!--查询非管理员的权限系统的权限菜单 结束-->
<!--查询医院管理员的非权限系统的权限菜单开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
LEFT JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
LEFT JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
LEFT JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_menu ON power_menu.sys_flag IN (
SELECT
power_sys_dict.sys_flag
FROM
power_dept
INNER JOIN power_user ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_sys_dict ON power_dept.dict_id = power_sys_dict.parent_id
<where>
<if test="userId != null">
AND power_user.user_id = #{userId}
</if>
<if test="userName != null and userName != ''">
AND power_user.user_name = #{userName}
</if>
<if test="roleId != null">
AND power_user.role_id = #{roleId}
</if>
</where>
GROUP BY
power_sys_dict.sys_flag
)
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
<if test="roleId != null and roleId == -100">
power_sys_dict.sys_flag = #{sysFlag} AND
</if>
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
<if test="sysId != null">
power_sys_dict.dict_id = #{sysId} AND
</if>
<if test="hospitalId != null">
hospital.dict_id = #{hospitalId} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id = - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询医院管理员的非权限系统的权限菜单 结束-->
<!--查询医院管理员的权限系统的权限菜单 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
INNER JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id,
power_menu
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
<if test="sysId != null">
power_sys_dict.dict_id = #{sysId} AND
</if>
<if test="hospitalId != null">
hospital.dict_id = #{hospitalId} AND
</if>
power_sys_dict.sys_flag = 'power'
AND power_user.role_id = - 100
AND power_menu.sys_flag = 'power'
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询医院管理员的权限系统的权限菜单 结束-->
<!--查询系统管理员所有菜单 开始-->
UNION ALL
SELECT
NULL AS sys_id,
NULL AS hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_menu.sys_flag,
NULL AS sys_name,
NULL AS hospital_id,
NULL AS sys_type,
NULL AS sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
null as hospital_sort
FROM
power_user
INNER JOIN power_role ON power_user.role_id = power_role.role_id,
power_menu
WHERE
<if test="userName != null and userName != ''">
power_user.user_name = #{userName} AND
</if>
<if test="sysFlag != null and sysFlag != ''">
power_menu.sys_flag = #{sysFlag} AND
</if>
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="roleId != null">
power_role.role_id = #{roleId} AND
</if>
power_user.role_id = 0
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询系统管理员所有菜单 结束-->
<!--补充未创建科室的医院数据-->
<if test="userId == null and userName == null and roleId == null and (sysId != null || sysFlag != null || hospitalId != null)">
UNION ALL
SELECT
NULL AS sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
NULL AS sys_flag,
NULL AS sys_name,
hospital.dict_id hospital_id,
NULL AS sys_type,
NULL AS sort,
NULL AS user_id,
NULL AS user_name,
NULL AS user_tel,
NULL AS user_email,
NULL AS role_id,
NULL AS role_name,
NULL AS menu_id,
NULL AS menu_name,
NULL AS menu_icon,
NULL AS menu_url,
NULL AS method,
NULL AS method_type,
NULL AS method_parent,
NULL AS method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict hospital
WHERE
hospital.dict_id NOT IN (
SELECT
dict_id
FROM
power_dept
GROUP BY
dict_id
)
AND hospital.hospital_name IS NOT NULL AND hospital.dict_status = 1
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort,
NULL AS user_id,
NULL AS user_name,
NULL AS user_tel,
NULL AS user_email,
NULL AS role_id,
NULL AS role_name,
NULL AS menu_id,
NULL AS menu_name,
NULL AS menu_icon,
NULL AS menu_url,
NULL AS method,
NULL AS method_type,
NULL AS method_parent,
NULL AS method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict hospital
LEFT JOIN power_sys_dict ON hospital.dict_id = power_sys_dict.parent_id
WHERE
hospital.dict_id NOT IN (
SELECT
dict_id
FROM
power_dept
GROUP BY
dict_id
)
AND power_sys_dict.sys_flag = 'power' AND hospital.dict_status = 1 AND power_sys_dict.dict_status = 1
</if>
) user_menu
ORDER BY user_menu.hospital_sort,user_menu.sort,user_menu.method_sort
</select>
<select id="validUserRoleMenu" resultMap="BaseResultMap">
<!--查询非管理员的非权限系统的权限菜单 开始-->
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 开始-->
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_role_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
LEFT JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
LEFT JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
LEFT JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_role_menu ON power_role.role_id = power_role_menu.role_id
LEFT JOIN power_menu ON power_menu.menu_id = power_role_menu.menu_id
AND power_sys_dict.sys_flag = power_menu.sys_flag
LEFT JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_menu.menu_id = power_user_menu.menu_id
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND power_user_menu.flag IS NULL
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 结束-->
<!--拼接非管理员的非权限系统power_user_menu的flag为1的菜单数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id
INNER JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
INNER JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_user_menu.flag = 1
INNER JOIN power_menu ON power_menu.menu_id = power_user_menu.menu_id
AND power_menu.sys_flag = power_sys_dict.sys_flag
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--拼接非管理员的非权限系统power_user_menu的flag为1的菜单数据 开始-->
<!--查询非管理员的非权限系统的权限菜单 结束-->
<!--查询非管理员的权限系统的权限菜单 开始-->
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
LEFT JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_role_menu ON power_role.role_id = power_role_menu.role_id
LEFT JOIN power_menu ON power_menu.menu_id = power_role_menu.menu_id
LEFT JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_menu.menu_id = power_user_menu.menu_id
WHERE
power_user.user_name = @userName
AND power_menu.sys_flag = @sysFlag
AND power_sys_dict.sys_flag = 'power'
AND power_menu.sys_flag = 'power'
AND power_user_menu.flag IS NULL
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询角色权限菜单去除用户权限菜单勾选掉即power_user_menu的flag为0的数据 结束-->
<!--拼接非管理员的权限系统power_user_menu的flag为1的菜单数据 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
INNER JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id
INNER JOIN power_user_menu ON power_user.user_id = power_user_menu.user_id
AND power_user_menu.flag = 1
INNER JOIN power_menu ON power_menu.menu_id = power_user_menu.menu_id
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_sys_dict.sys_flag = 'power'
AND power_user.role_id != 0
AND power_user.role_id != - 100
AND power_menu.sys_flag = 'power'
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--拼接非管理员的权限系统power_user_menu的flag为1的菜单数据 结束-->
<!--查询非管理员的权限系统的权限菜单 结束-->
<!--查询医院管理员的非权限系统的权限菜单开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
power_dept.dept_id,
dept_name,
power_dept.dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_user
LEFT JOIN power_role ON power_user.role_id = power_role.role_id
LEFT JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
LEFT JOIN power_sys_dict ON power_dept.dept_id = power_sys_dict.dept_id
LEFT JOIN power_sys_dict hospital ON power_dept.dict_id = hospital.dict_id
INNER JOIN power_menu ON power_menu.sys_flag IN (
SELECT
power_sys_dict.sys_flag
FROM
power_dept
INNER JOIN power_user ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_sys_dict ON power_dept.dict_id = power_sys_dict.parent_id
<where>
<if test="userId != null">
AND power_user.user_id = #{userId}
</if>
<if test="userName != null and userName != ''">
AND power_user.user_name = #{userName}
</if>
<if test="roleId != null">
AND power_user.role_id = #{roleId}
</if>
</where>
GROUP BY
power_sys_dict.sys_flag
)
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_menu.sys_flag != 'power'
AND power_user.role_id = - 100
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_dept.effective = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询医院管理员的非权限系统的权限菜单 结束-->
<!--查询医院管理员的权限系统的权限菜单 开始-->
UNION ALL
SELECT
power_sys_dict.dict_id sys_id,
hospital.hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_sys_dict.sys_flag,
power_sys_dict.sys_name,
hospital.dict_id hospital_id,
power_sys_dict.sys_type,
power_sys_dict.sort sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
hospital.sort hospital_sort
FROM
power_sys_dict
INNER JOIN power_sys_dict hospital ON power_sys_dict.parent_id = hospital.dict_id,
power_user
INNER JOIN power_dept ON FIND_IN_SET(
power_dept.dept_id,
power_user.dept_id
)
INNER JOIN power_role ON power_user.role_id = power_role.role_id,
power_menu
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_sys_dict.sys_flag = 'power'
AND power_user.role_id = - 100
AND power_menu.sys_flag = 'power'
AND hospital.dict_status = 1
AND power_sys_dict.dict_status = 1
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询医院管理员的权限系统的权限菜单 结束-->
<!--查询系统管理员所有菜单 开始-->
UNION ALL
SELECT
NULL AS sys_id,
NULL AS hospital_name,
NULL AS dept_id,
NULL AS dept_name,
NULL AS dept_code,
power_menu.sys_flag,
NULL AS sys_name,
NULL AS hospital_id,
NULL AS sys_type,
NULL AS sort,
power_user.user_id,
power_user.user_name,
power_user.user_tel,
power_user.user_email,
power_user.role_id,
power_role.role_name,
power_menu.menu_id,
power_menu.menu_name,
power_menu.menu_icon,
power_menu.menu_url,
power_menu.method,
power_menu.function_type method_type,
power_menu.parent_id method_parent,
power_menu.sort method_sort,
null as hospital_sort
FROM
power_user
INNER JOIN power_role ON power_user.role_id = power_role.role_id,
power_menu
WHERE
<if test="userId != null">
power_user.user_id = #{userId} AND
</if>
<if test="url != null and url != ''">
power_menu.menu_url = #{url} AND
</if>
power_user.role_id = 0
AND power_user.effective = 1
AND power_role.effective = 1
AND power_menu.effective = 1
<!--查询系统管理员所有菜单 结束-->
</select>
<select id="selectAllMenusByUserIdAndSysFlag" resultMap="BaseResultMap">
SELECT DISTINCT
user_dept_menu.sys_flag,
user_dept_menu.menu_id,
user_dept_menu.menu_name,
user_dept_menu.menu_icon,
user_dept_menu.menu_url,
user_dept_menu.method,
user_dept_menu.method_type,
user_dept_menu.method_parent,
user_dept_menu.method_sort
FROM
user_dept_menu
WHERE
user_id = ${userId}
<if test="sysFlag != null and sysFlag != ''">
AND sys_flag = #{sysFlag}
</if>
</select>
</mapper>