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.

162 lines
9.8 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.manage.dao.PowerMapper">
<resultMap id="BaseResultMap" type="com.manage.vo.Power_UserAndRoleTree">
<result column="level" jdbcType="INTEGER" property="level"/>
<result column="parent_id" jdbcType="INTEGER" property="parentId"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="new_name" jdbcType="VARCHAR" property="newName"/>
<result column="sys_flag" jdbcType="VARCHAR" property="sysFlag"/>
<result column="dept_id" jdbcType="VARCHAR" property="deptId"/>
<result column="self_id" jdbcType="INTEGER" property="selfId"/>
<result column="tel" jdbcType="VARCHAR" property="tel"/>
</resultMap>
<select id="getUserTree" resultMap="BaseResultMap">
select 1 as level,0 as parent_id,power_sys_dict.hospital_name name,power_sys_dict.hospital_name new_name,null as
sys_flag,null as dept_id,dict_id self_id,null as tel,null as real_name from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict
where power_user_dict.user_id = #{userId}) and
</if>
<if test="key != null and key != '' and userId == null">
dict_id in (select dict_id from power_user_dict
INNER JOIN power_user ON power_user.effective = 1 AND power_user_dict.user_id = power_user.user_id AND (
power_user.user_name LIKE '%${key}%' OR power_user.name LIKE '%${key}%'
)) AND
</if>
sys_name is null and dict_status = 1
union ALL
select 2 as level,power_sys_dict.parent_id,power_sys_dict.sys_name name,power_sys_dict.sys_name
new_name,sys_flag,null as dept_id,null as self_id,null as tel,null as real_name from power_sys_dict where sys_flag = 'power' and
parent_id in (select power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict
where user_id = #{userId}) and
</if>
sys_name is null and dict_status = 1) and dict_status = 1
UNION ALL
select 3 as level,power_dept.dict_id parent_id,dept_name name,dept_name new_name,null
sys_flag,power_dept.dept_id,null as self_id,null as tel,null as real_name from power_dept
<if test="key != null and key != ''">
INNER JOIN power_user on FIND_IN_SET(power_dept.dept_id,power_user.dept_id) and power_user.effective = 1 and
(power_user.name LIKE '%${key}%' OR power_user.user_name LIKE '%${key}%')
<if test="userId != null">
AND power_user.user_id != #{userId}
</if>
</if>
where power_dept.dict_id in (select power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
power_sys_dict.dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId})
and
</if>
sys_name is null and dict_status = 1) and power_dept.effective = 1
union ALL
select 4 as level,power_sys_dict.parent_id parent_id,sys_name name,sys_name
new_name,sys_flag,power_sys_dict.dept_id,power_sys_dict.dict_id as self_id,null as tel,null as real_name from power_sys_dict where
power_sys_dict.dict_status = 1 and power_sys_dict.sys_flag != 'power' and power_sys_dict.dept_id in (select
power_dept.dept_id from power_dept
<if test="key != null and key != ''">
INNER JOIN power_user on FIND_IN_SET(power_dept.dept_id,power_user.dept_id) and power_user.effective = 1 and
(power_user.name LIKE '%${key}%' OR power_user.user_name LIKE '%${key}%')
<if test="userId != null">
AND power_user.user_id != #{userId}
</if>
</if>
where power_dept.effective = 1 and power_dept.dict_id in (select power_sys_dict.dict_id from power_sys_dict
where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
sys_name is null and dict_status = 1 ))
union ALL
select 5 as level,power_user_dict.dict_id as parent_id,power_user.user_name name,power_user.user_name
new_name,null as sys_flag,power_user.dept_id,power_user.user_id self_id,power_user.user_tel,power_user.name as real_name from power_user
INNER JOIN (select power_dept.dept_id from power_dept where power_dept.effective = 1 and power_dept.dict_id in
(select power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
dict_status = 1 and sys_name is null)) a
on a.dept_id in (power_user.dept_id)
LEFT JOIN power_user_dict on power_user.user_id = power_user_dict.user_id
where power_user.effective = 1 and power_user.role_id != 0 and power_user.role_id != -100
<if test="userId != null">
AND power_user.user_id != #{userId}
</if>
<if test="key != null and key != ''">
and (power_user.name LIKE '%${key}%' OR power_user.user_name LIKE '%${key}%')
</if>
</select>
<select id="getRoleTree" resultMap="BaseResultMap">
select 1 as level,0 as parent_id,power_sys_dict.hospital_name name,power_sys_dict.hospital_name new_name,null as
sys_flag,null as dept_id,dict_id self_id,null as tel from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict
where power_user_dict.user_id = #{userId}) and
</if>
<if test="key != null and key != '' and userId == null">
dict_id in (select dict_id from power_user_dict
INNER JOIN power_user ON power_user.effective = 1 AND power_user_dict.user_id = power_user.user_id
INNER JOIN power_role ON power_user.role_id = power_role.role_id AND power_role.effective AND
power_role.role_name LIKE '%${key}%'
) AND
</if>
sys_name is null and dict_status = 1
union ALL
select 2 as level,power_sys_dict.parent_id,power_sys_dict.sys_name name,power_sys_dict.sys_name
new_name,sys_flag,null as dept_id,null as self_id,null as tel from power_sys_dict
where sys_flag = 'power' and parent_id in (select power_sys_dict.dict_id from power_sys_dict
where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
sys_name is null and dict_status = 1 ) and dict_status = 1
UNION ALL
select 3 as level,power_dept.dict_id parent_id,dept_name name,dept_name new_name,null
sys_flag,power_dept.dept_id,null as self_id,null as tel from power_dept
<if test="key != null and key != ''">
INNER JOIN power_user on FIND_IN_SET(power_dept.dept_id,power_user.dept_id) and power_user.effective = 1
INNER JOIN power_role on power_user.role_id = power_role.role_id and power_role.effective = 1 and
power_role.role_name LIKE '%${key}%'
</if>
where power_dept.dict_id in (select power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
sys_name is null and dict_status = 1 ) and power_dept.effective = 1
union ALL
select 4 as level,power_sys_dict.parent_id parent_id,sys_name name,sys_name
new_name,sys_flag,power_sys_dict.dept_id,power_sys_dict.dict_id as self_id,null as tel from power_sys_dict
<if test="key != null and key != ''">
INNER JOIN power_user on FIND_IN_SET(power_sys_dict.dept_id,power_user.dept_id) and power_user.effective = 1
INNER JOIN power_role on power_user.role_id = power_role.role_id and power_role.effective = 1 and
power_role.role_name LIKE '%${key}%'
</if>
where power_sys_dict.dict_status = 1 and power_sys_dict.sys_flag != 'power' and power_sys_dict.dept_id in
(select power_dept.dept_id from power_dept where power_dept.effective = 1 and power_dept.dict_id in (select
power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
sys_name is null and dict_status = 1 ))
union ALL
select 5 as level,power_user_dict.dict_id as parent_id,power_role.role_name name,power_role.role_name
new_name,null as sys_flag,power_user.dept_id,power_user.role_id self_id,power_user.user_tel from power_user
INNER JOIN (select power_dept.dept_id from power_dept where power_dept.effective = 1 and power_dept.dict_id in
(select power_sys_dict.dict_id from power_sys_dict where
<if test="userId != null">
dict_id in (select dict_id from power_user_dict where power_user_dict.user_id = #{userId}) and
</if>
dict_status = 1 and sys_name is null)) a
on a.dept_id in (power_user.dept_id)
LEFT JOIN power_user_dict on power_user.user_id = power_user_dict.user_id
LEFT JOIN power_role on power_role.effective = 1 AND power_user.role_id = power_role.role_id
where power_user.effective = 1 and power_user.role_id != 0 and power_user.role_id != -100
<if test="roleId != null">
AND power_role.role_id != #{roleId}
</if>
<if test="key != null and key != ''">
AND power_role.role_name LIKE '%${key}%'
</if>
</select>
</mapper>