serv\web- 日志
This commit is contained in:
@@ -33,11 +33,20 @@
|
||||
<result column="deleted" property="deleted" jdbcType="INTEGER"/>
|
||||
</resultMap>
|
||||
<resultMap id="UserInfoTotalResultMap" type="org.xyzh.common.vo.UserVO">
|
||||
<id column="id" property="id" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
|
||||
<result column="username" property="username" jdbcType="VARCHAR"/>
|
||||
<result column="avatar" property="avatar" jdbcType="VARCHAR"/>
|
||||
<result column="gender" property="gender" jdbcType="INTEGER"/>
|
||||
<result column="phone" property="phone" jdbcType="VARCHAR"/>
|
||||
<result column="email" property="email" jdbcType="VARCHAR"/>
|
||||
<result column="wechat_id" property="wechatID" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="INTEGER"/>
|
||||
<result column="family_name" property="familyName" jdbcType="VARCHAR"/>
|
||||
<result column="given_name" property="givenName" jdbcType="VARCHAR"/>
|
||||
<result column="full_name" property="fullName" jdbcType="VARCHAR"/>
|
||||
<result column="dept_id" property="deptID" jdbcType="VARCHAR"/>
|
||||
<result column="parent_id" property="parentID" jdbcType="VARCHAR"/>
|
||||
<result column="dept_name" property="deptName" jdbcType="VARCHAR"/>
|
||||
<result column="role_name" property="roleName" jdbcType="VARCHAR"/>
|
||||
<result column="level" property="level" jdbcType="INTEGER"/>
|
||||
@@ -108,6 +117,31 @@
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!-- 权限过滤条件(基于dept_path的用户权限过滤,superadmin可查看所有) -->
|
||||
<sql id="Permission_Filter">
|
||||
INNER JOIN tb_sys_user_dept_role udr ON u.id = udr.user_id AND udr.deleted = 0
|
||||
INNER JOIN tb_sys_dept d ON udr.dept_id = d.dept_id AND d.deleted = 0
|
||||
WHERE (
|
||||
EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptID} AS dept_id, #{currentRole.roleID} AS role_id
|
||||
</foreach>
|
||||
) admin_check
|
||||
WHERE admin_check.dept_id = 'root_department'
|
||||
AND admin_check.role_id = 'superadmin'
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptPath} AS user_dept_path
|
||||
</foreach>
|
||||
) user_roles
|
||||
WHERE d.dept_path LIKE CONCAT(user_roles.user_dept_path, '%')
|
||||
)
|
||||
)
|
||||
</sql>
|
||||
|
||||
<!-- 根据用户名查询用户 -->
|
||||
<select id="selectByUsername" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
@@ -138,50 +172,223 @@
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 根据过滤条件查询用户 -->
|
||||
<!-- 根据过滤条件查询用户(包含权限过滤) -->
|
||||
<select id="selectByFilter" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM tb_sys_user
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND username = #{filter.username}
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND email = #{filter.email}
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
</where>
|
||||
SELECT DISTINCT u.*
|
||||
FROM tb_sys_user u
|
||||
<include refid="Permission_Filter"/>
|
||||
AND u.deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND u.id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND u.username = #{filter.username}
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND u.email = #{filter.email}
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND u.phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND u.status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND u.wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
ORDER BY u.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询用户列表 -->
|
||||
<!-- 根据过滤条件查询用户VO列表(包含userinfo和deptrole信息,包含权限过滤) -->
|
||||
<select id="selectUserVOByFilter" resultMap="UserInfoTotalResultMap">
|
||||
SELECT DISTINCT
|
||||
u.id,
|
||||
u.username,
|
||||
u.email,
|
||||
u.phone,
|
||||
u.wechat_id,
|
||||
u.status,
|
||||
ui.user_id,
|
||||
ui.avatar,
|
||||
ui.gender,
|
||||
ui.family_name,
|
||||
ui.given_name,
|
||||
ui.full_name,
|
||||
ui.level,
|
||||
ui.id_card,
|
||||
ui.address,
|
||||
udr.dept_id,
|
||||
d.parent_id,
|
||||
GROUP_CONCAT(DISTINCT d.name ORDER BY d.name SEPARATOR ', ') as dept_name,
|
||||
GROUP_CONCAT(DISTINCT r.name ORDER BY r.name SEPARATOR ', ') as role_name,
|
||||
u.create_time,
|
||||
u.update_time
|
||||
FROM tb_sys_user u
|
||||
LEFT JOIN tb_sys_user_info ui ON u.id = ui.user_id AND ui.deleted = 0
|
||||
INNER JOIN tb_sys_user_dept_role udr ON u.id = udr.user_id AND udr.deleted = 0
|
||||
INNER JOIN tb_sys_dept d ON udr.dept_id = d.dept_id AND d.deleted = 0
|
||||
LEFT JOIN tb_sys_role r ON udr.role_id = r.role_id AND r.deleted = 0
|
||||
WHERE (
|
||||
EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptID} AS dept_id, #{currentRole.roleID} AS role_id
|
||||
</foreach>
|
||||
) admin_check
|
||||
WHERE admin_check.dept_id = 'root_department'
|
||||
AND admin_check.role_id = 'superadmin'
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptPath} AS user_dept_path
|
||||
</foreach>
|
||||
) user_roles
|
||||
WHERE d.dept_path LIKE CONCAT(user_roles.user_dept_path, '%')
|
||||
)
|
||||
)
|
||||
AND u.deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND u.id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND u.username LIKE CONCAT('%', #{filter.username}, '%')
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND u.email LIKE CONCAT('%', #{filter.email}, '%')
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND u.phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND u.status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND u.wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
GROUP BY u.id, u.username, u.email, u.phone, u.wechat_id, u.status,
|
||||
ui.user_id, ui.avatar, ui.gender, ui.family_name, ui.given_name,
|
||||
ui.full_name, ui.level, ui.id_card, ui.address, udr.dept_id, d.parent_id, u.create_time, u.update_time
|
||||
ORDER BY u.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询用户列表(包含权限过滤) -->
|
||||
<select id="selectUserList" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM tb_sys_user
|
||||
<include refid="Where_Clause"/>
|
||||
ORDER BY create_time DESC
|
||||
SELECT DISTINCT u.*
|
||||
FROM tb_sys_user u
|
||||
<include refid="Permission_Filter"/>
|
||||
AND u.deleted = 0
|
||||
<if test="username != null and username != ''">
|
||||
AND u.username LIKE CONCAT('%', #{username}, '%')
|
||||
</if>
|
||||
<if test="email != null and email != ''">
|
||||
AND u.email LIKE CONCAT('%', #{email}, '%')
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND u.status = #{status}
|
||||
</if>
|
||||
ORDER BY u.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询用户列表(分页) -->
|
||||
<!-- 查询用户列表(分页,包含权限过滤) -->
|
||||
<select id="selectUserPage" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM tb_sys_user
|
||||
<include refid="Filter_Clause"/>
|
||||
ORDER BY create_time DESC
|
||||
SELECT DISTINCT u.*
|
||||
FROM tb_sys_user u
|
||||
<include refid="Permission_Filter"/>
|
||||
AND u.deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND u.id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND u.username = #{filter.username}
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND u.email = #{filter.email}
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND u.phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND u.status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND u.wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
ORDER BY u.create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<!-- 查询用户VO列表(分页,包含userinfo和deptrole信息,包含权限过滤) -->
|
||||
<select id="selectUserVOPage" resultMap="UserInfoTotalResultMap">
|
||||
SELECT DISTINCT
|
||||
u.id,
|
||||
u.username,
|
||||
u.email,
|
||||
u.phone,
|
||||
u.wechat_id,
|
||||
u.status,
|
||||
ui.user_id,
|
||||
ui.avatar,
|
||||
ui.gender,
|
||||
ui.family_name,
|
||||
ui.given_name,
|
||||
ui.full_name,
|
||||
ui.level,
|
||||
ui.id_card,
|
||||
ui.address,
|
||||
udr.dept_id,
|
||||
d.parent_id,
|
||||
GROUP_CONCAT(DISTINCT d.name ORDER BY d.name SEPARATOR ', ') as dept_name,
|
||||
GROUP_CONCAT(DISTINCT r.name ORDER BY r.name SEPARATOR ', ') as role_name,
|
||||
u.create_time,
|
||||
u.update_time
|
||||
FROM tb_sys_user u
|
||||
LEFT JOIN tb_sys_user_info ui ON u.id = ui.user_id AND ui.deleted = 0
|
||||
INNER JOIN tb_sys_user_dept_role udr ON u.id = udr.user_id AND udr.deleted = 0
|
||||
INNER JOIN tb_sys_dept d ON udr.dept_id = d.dept_id AND d.deleted = 0
|
||||
LEFT JOIN tb_sys_role r ON udr.role_id = r.role_id AND r.deleted = 0
|
||||
WHERE (
|
||||
EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptID} AS dept_id, #{currentRole.roleID} AS role_id
|
||||
</foreach>
|
||||
) admin_check
|
||||
WHERE admin_check.dept_id = 'root_department'
|
||||
AND admin_check.role_id = 'superadmin'
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM (
|
||||
<foreach collection="userDeptRoles" item="currentRole" separator=" UNION ALL ">
|
||||
SELECT #{currentRole.deptPath} AS user_dept_path
|
||||
</foreach>
|
||||
) user_roles
|
||||
WHERE d.dept_path LIKE CONCAT(user_roles.user_dept_path, '%')
|
||||
)
|
||||
)
|
||||
AND u.deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND u.id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND u.username LIKE CONCAT('%', #{filter.username}, '%')
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND u.email LIKE CONCAT('%', #{filter.email}, '%')
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND u.phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND u.status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND u.wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
GROUP BY u.id, u.username, u.email, u.phone, u.wechat_id, u.status,
|
||||
ui.user_id, ui.avatar, ui.gender, ui.family_name, ui.given_name,
|
||||
ui.full_name, ui.level, ui.id_card, ui.address, udr.dept_id, d.parent_id, u.create_time, u.update_time
|
||||
ORDER BY u.create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
@@ -352,4 +559,26 @@
|
||||
WHERE tsui.user_id = #{userId}
|
||||
AND tsui.deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- countDeptUser - 递归统计部门及其子部门的用户数量 -->
|
||||
<select id="countDeptUser" resultType="int">
|
||||
SELECT COUNT(DISTINCT tudr.user_id)
|
||||
FROM tb_sys_user_dept_role tudr
|
||||
INNER JOIN tb_sys_dept d ON tudr.dept_id = d.dept_id AND d.deleted = 0
|
||||
INNER JOIN tb_sys_user u ON tudr.user_id = u.id AND u.deleted = 0
|
||||
WHERE tudr.deleted = 0
|
||||
AND d.dept_path LIKE CONCAT(
|
||||
(SELECT dept_path FROM tb_sys_dept WHERE dept_id = #{deptId} AND deleted = 0),
|
||||
'%'
|
||||
)
|
||||
</select>
|
||||
|
||||
<!-- selectLoginUser -->
|
||||
|
||||
<select id="selectLoginUser">
|
||||
SELECT DISTINCT u.*
|
||||
FROM tb_sys_user u
|
||||
<include refid="Filter_Clause"/>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user