serv\web- 多租户修改

This commit is contained in:
2025-10-29 19:08:22 +08:00
parent c5c134fbb3
commit 82b6f14e64
86 changed files with 4446 additions and 2730 deletions

View File

@@ -3,7 +3,7 @@ use school_news;
DROP TABLE IF EXISTS `tb_resource_permission`;
CREATE TABLE `tb_resource_permission` (
`id` VARCHAR(50) NOT NULL COMMENT '权限ID',
`resource_type` INT(4) NOT NULL COMMENT '资源类型1资源/新闻 2课程 3课程章节 4学习任务)',
`resource_type` INT(4) NOT NULL COMMENT '资源类型1新闻 2课程 3学习任务 4部门 5角色 6成就 7定时任务 8轮播图 9标签',
`resource_id` VARCHAR(50) NOT NULL COMMENT '资源ID',
`dept_id` VARCHAR(50) DEFAULT NULL COMMENT '部门IDNULL表示不限制部门',
`role_id` VARCHAR(50) DEFAULT NULL COMMENT '角色IDNULL表示不限制角色',
@@ -25,30 +25,45 @@ CREATE TABLE `tb_resource_permission` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='统一资源权限控制表';
-- 说明:
-- 1. resource_type 资源类型说明:
-- 1 - 资源/新闻
-- 2 - 课程
-- 3 - 课程章节
-- 4 - 学习任务
-- 可根据实际业务扩展
-- 1. resource_type 资源类型说明对应ResourceType枚举
-- 1 - NEWS (新闻/资源)
-- 2 - COURSE (课程)
-- 3 - TASK (学习任务)
-- 4 - DEPT (部门)
-- 5 - ROLE (角色)
-- 6 - ACHIEVEMENT (成就)
-- 7 - CRONTAB_TASK (定时任务)
-- 8 - BANNER (轮播图)
-- 9 - TAG (标签)
-- 注意:这些值必须与 common-core/enums/ResourceType.java 中的枚举定义完全一致
--
-- 2. dept_id 和 role_id 组合使用:
-- - 都为NULL不限制,所有人可访问
-- - 都为NULL超级管理员权限,所有人可访问
-- - dept_id有值role_id为NULL该部门所有人可访问
-- - dept_id为NULLrole_id有值该角色所有人可访问
-- - 都有值:该部门的该角色可访问
-- - dept_id为NULLrole_id有值该角色所有人可访问(跨部门)
-- - 都有值:该部门的该角色可访问(精确控制)
--
-- 3. 权限说明:
-- - can_read查看权限浏览、阅读
-- - can_read查看权限浏览、阅读、查询
-- - can_write编辑权限修改、删除
-- - can_execute执行权限发布、审核操作)
-- - can_execute执行权限发布、审核、执行等高级操作)
--
-- 4. 查询示例
-- 4. 权限创建逻辑
-- - root_department的superadmin创建资源时为所有部门和角色创建权限
-- - 普通用户创建资源时:为父部门管理员+子部门所有角色创建权限
-- - 始终为root_department的superadmin创建全权限记录
--
-- 5. 查询示例:
-- 查询用户对某资源的权限:
-- SELECT * FROM tb_resource_permission
-- WHERE resource_type = 1
-- AND resource_id = 'xxx'
-- AND (dept_id IS NULL OR dept_id = '用户部门')
-- AND (role_id IS NULL OR role_id IN ('用户角色列表'))
-- AND (
-- (dept_id IS NULL AND role_id IS NULL) -- 超级权限
-- OR (dept_id = '用户部门' AND role_id IS NULL) -- 部门权限
-- OR (role_id = '用户角色' AND dept_id IS NULL) -- 角色权限
-- OR (dept_id = '用户部门' AND role_id = '用户角色') -- 精确权限
-- )
-- AND can_read = 1
-- AND deleted = 0;