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}