id, role_id, name, description, creator, updater, create_time, update_time, delete_time, deleted deleted = 0 AND role_id = #{roleID} AND name LIKE CONCAT('%', #{name}, '%') INNER JOIN tb_resource_permission rp ON r.role_id = rp.resource_id AND rp.resource_type = 5 AND rp.deleted = 0 AND rp.can_read = 1 AND ( -- 全局权限:所有用户可访问 (rp.dept_id IS NULL AND rp.role_id IS NULL) OR EXISTS ( SELECT 1 FROM ( SELECT #{udr.deptID} AS dept_id, #{udr.deptPath} AS dept_path, #{udr.roleID} AS role_id ) user_roles LEFT JOIN tb_sys_dept perm_dept ON perm_dept.dept_id = rp.dept_id AND perm_dept.deleted = 0 WHERE -- 部门级权限:当前部门或父部门(通过dept_path判断继承关系) (rp.role_id IS NULL AND rp.dept_id IS NOT NULL AND user_roles.dept_path LIKE CONCAT(perm_dept.dept_path, '%')) -- 角色级权限:跨部门的角色权限 OR (rp.dept_id IS NULL AND rp.role_id = user_roles.role_id) -- 精确权限:特定部门的特定角色 OR (rp.dept_id = user_roles.dept_id AND rp.role_id = user_roles.role_id) ) ) INSERT INTO tb_sys_role (id, role_id, name, description, creator, create_time) VALUES (#{id}, #{roleID}, #{name}, #{description}, #{creator}, #{createTime}) UPDATE tb_sys_role (name, description, updater, update_time) VALUES (#{name}, #{description}, #{updater}, #{updateTime}) WHERE role_id = #{roleID} DELETE FROM tb_sys_role WHERE role_id = #{roleID} UPDATE tb_sys_role SET deleted = 1, delete_time = NOW(), updater = #{updater} WHERE deleted = 0 AND id IN #{roleId}