-- 频道管理员表 -- 在 MySQL 中执行 -- 1. 创建频道管理员表 CREATE TABLE IF NOT EXISTS community_channel_admins ( id INT AUTO_INCREMENT PRIMARY KEY, channel_id VARCHAR(50) NOT NULL, user_id INT NOT NULL, role ENUM('owner', 'admin', 'moderator') NOT NULL DEFAULT 'moderator', -- owner: 频道创建者,拥有最高权限 -- admin: 频道管理员,可以管理消息和成员 -- moderator: 版主,可以删除消息 permissions JSON, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_channel_user (channel_id, user_id), INDEX idx_channel_id (channel_id), INDEX idx_user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 2. 权限说明 -- owner 权限(频道创建者): -- - delete_channel: 删除频道 -- - edit_channel: 编辑频道信息 -- - manage_admins: 管理频道管理员 -- - pin_messages: 置顶消息 -- - delete_messages: 删除任何消息 -- - slow_mode: 设置慢速模式 -- - lock_channel: 锁定频道 -- admin 权限: -- - edit_channel: 编辑频道信息(部分) -- - pin_messages: 置顶消息 -- - delete_messages: 删除消息 -- - slow_mode: 设置慢速模式 -- moderator 权限: -- - pin_messages: 置顶消息 -- - delete_messages: 删除消息 -- 3. 超级管理员说明 -- community_admins 表中 role='admin' 的用户(如 user_id=65) -- 自动拥有所有频道的最高权限,不需要在此表中添加记录 -- 查看频道管理员 -- SELECT cca.*, u.username, c.name as channel_name -- FROM community_channel_admins cca -- LEFT JOIN users u ON cca.user_id = u.id -- LEFT JOIN community_channels c ON cca.channel_id = c.id;