-- 消息通知表 CREATE TABLE `notification` ( `id` bigint(20) NOT NULL COMMENT '主键ID', `receiver_id` bigint(20) NOT NULL COMMENT '接收者用户ID', `receiver_name` varchar(100) DEFAULT NULL COMMENT '接收者用户名', `message_type` varchar(20) NOT NULL COMMENT '消息类型:SYSTEM-系统通知,TASK-任务通知,REPORT-报告通知,MESSAGE-消息通知,REMINDER-提醒通知,WARNING-警告通知', `title` varchar(200) NOT NULL COMMENT '消息标题', `content` text COMMENT '消息内容', `priority` varchar(10) NOT NULL DEFAULT 'NORMAL' COMMENT '消息优先级:LOW-低,NORMAL-普通,HIGH-高,URGENT-紧急', `status` varchar(10) NOT NULL DEFAULT 'UNREAD' COMMENT '消息状态:UNREAD-未读,READ-已读,ARCHIVED-已归档', `pushed` tinyint(1) DEFAULT '0' COMMENT '是否已推送到前端:0-未推送,1-已推送', `business_id` varchar(50) DEFAULT NULL COMMENT '关联的业务ID(可选)', `business_type` varchar(50) DEFAULT NULL COMMENT '关联的业务类型(可选)', `sender_id` bigint(20) DEFAULT NULL COMMENT '发送者用户ID(系统通知可为空)', `sender_name` varchar(100) DEFAULT NULL COMMENT '发送者用户名(系统通知可为空)', `send_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间', `read_time` datetime DEFAULT NULL COMMENT '阅读时间', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', `extra_params` text COMMENT '扩展参数(JSON格式)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` tinyint(1) DEFAULT '0' COMMENT '删除标记:0-未删除,1-已删除', PRIMARY KEY (`id`), KEY `idx_receiver_id` (`receiver_id`), KEY `idx_message_type` (`message_type`), KEY `idx_status` (`status`), KEY `idx_send_time` (`send_time`), KEY `idx_receiver_status` (`receiver_id`, `status`), KEY `idx_expire_time` (`expire_time`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表'; -- 用户在线状态表(可选,用于记录用户WebSocket连接状态) CREATE TABLE `user_online_status` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `username` varchar(100) DEFAULT NULL COMMENT '用户名', `session_id` varchar(100) NOT NULL COMMENT 'WebSocket会话ID', `server_ip` varchar(50) DEFAULT NULL COMMENT '服务器IP', `client_ip` varchar(50) DEFAULT NULL COMMENT '客户端IP', `browser` varchar(100) DEFAULT NULL COMMENT '浏览器信息', `os` varchar(100) DEFAULT NULL COMMENT '操作系统信息', `status` varchar(20) DEFAULT 'ONLINE' COMMENT '状态:ONLINE-在线,OFFLINE-离线', `connect_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '连接时间', `last_heartbeat` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间', `disconnect_time` datetime DEFAULT NULL COMMENT '断开时间', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_session_id` (`session_id`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`status`), KEY `idx_last_heartbeat` (`last_heartbeat`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户在线状态表';