serv\web- 日志

This commit is contained in:
2025-10-30 16:40:56 +08:00
parent 82b6f14e64
commit 2b252e1b3c
91 changed files with 6003 additions and 1485 deletions

View File

@@ -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>