-- 群组系统数据库表 -- 请在服务器数据库中执行此脚本 -- 1. 群组表 CREATE TABLE IF NOT EXISTS `eb_group` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '群组ID', `group_name` varchar(100) NOT NULL COMMENT '群组名称', `avatar` varchar(500) DEFAULT NULL COMMENT '群头像', `description` varchar(500) DEFAULT NULL COMMENT '群描述', `announcement` varchar(1000) DEFAULT NULL COMMENT '群公告', `owner_id` int(11) NOT NULL COMMENT '群主用户ID', `member_count` int(11) NOT NULL DEFAULT 1 COMMENT '成员数量', `max_members` int(11) NOT NULL DEFAULT 500 COMMENT '最大成员数', `mute_all` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否全员禁言', `allow_member_invite` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否允许成员邀请', `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已删除', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_owner_id` (`owner_id`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群组表'; -- 2. 群组成员表 CREATE TABLE IF NOT EXISTS `eb_group_member` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `group_id` bigint(20) NOT NULL COMMENT '群组ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `role` tinyint(1) NOT NULL DEFAULT 0 COMMENT '角色:0-普通成员 1-管理员 2-群主', `nickname` varchar(50) DEFAULT NULL COMMENT '群内昵称', `is_muted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否被禁言', `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已退出', `join_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_user` (`group_id`, `user_id`), KEY `idx_group_id` (`group_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群组成员表'; -- 3. 群消息表 CREATE TABLE IF NOT EXISTS `eb_group_message` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '消息ID', `group_id` bigint(20) NOT NULL COMMENT '群组ID', `sender_id` int(11) NOT NULL COMMENT '发送者用户ID', `content` text NOT NULL COMMENT '消息内容', `message_type` varchar(20) NOT NULL DEFAULT 'text' COMMENT '消息类型:text/image/voice/video/file', `extra` varchar(1000) DEFAULT NULL COMMENT '扩展信息(JSON格式)', `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已删除', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间', PRIMARY KEY (`id`), KEY `idx_group_id` (`group_id`), KEY `idx_sender_id` (`sender_id`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群消息表'; -- 4. 群消息已读记录表(可选,用于已读回执) CREATE TABLE IF NOT EXISTS `eb_group_message_read` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `group_id` bigint(20) NOT NULL COMMENT '群组ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `last_read_message_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '最后已读消息ID', `read_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '阅读时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_user` (`group_id`, `user_id`), KEY `idx_group_id` (`group_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='群消息已读记录表';