notification.sql 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. -- 消息通知表
  2. CREATE TABLE `notification` (
  3. `id` bigint(20) NOT NULL COMMENT '主键ID',
  4. `receiver_id` bigint(20) NOT NULL COMMENT '接收者用户ID',
  5. `receiver_name` varchar(100) DEFAULT NULL COMMENT '接收者用户名',
  6. `message_type` varchar(20) NOT NULL COMMENT '消息类型:SYSTEM-系统通知,TASK-任务通知,REPORT-报告通知,MESSAGE-消息通知,REMINDER-提醒通知,WARNING-警告通知',
  7. `title` varchar(200) NOT NULL COMMENT '消息标题',
  8. `content` text COMMENT '消息内容',
  9. `priority` varchar(10) NOT NULL DEFAULT 'NORMAL' COMMENT '消息优先级:LOW-低,NORMAL-普通,HIGH-高,URGENT-紧急',
  10. `status` varchar(10) NOT NULL DEFAULT 'UNREAD' COMMENT '消息状态:UNREAD-未读,READ-已读,ARCHIVED-已归档',
  11. `pushed` tinyint(1) DEFAULT '0' COMMENT '是否已推送到前端:0-未推送,1-已推送',
  12. `business_id` varchar(50) DEFAULT NULL COMMENT '关联的业务ID(可选)',
  13. `business_type` varchar(50) DEFAULT NULL COMMENT '关联的业务类型(可选)',
  14. `sender_id` bigint(20) DEFAULT NULL COMMENT '发送者用户ID(系统通知可为空)',
  15. `sender_name` varchar(100) DEFAULT NULL COMMENT '发送者用户名(系统通知可为空)',
  16. `send_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
  17. `read_time` datetime DEFAULT NULL COMMENT '阅读时间',
  18. `expire_time` datetime DEFAULT NULL COMMENT '过期时间',
  19. `extra_params` text COMMENT '扩展参数(JSON格式)',
  20. `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  21. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  22. `deleted` tinyint(1) DEFAULT '0' COMMENT '删除标记:0-未删除,1-已删除',
  23. PRIMARY KEY (`id`),
  24. KEY `idx_receiver_id` (`receiver_id`),
  25. KEY `idx_message_type` (`message_type`),
  26. KEY `idx_status` (`status`),
  27. KEY `idx_send_time` (`send_time`),
  28. KEY `idx_receiver_status` (`receiver_id`, `status`),
  29. KEY `idx_expire_time` (`expire_time`),
  30. KEY `idx_create_time` (`create_time`)
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
  32. -- 用户在线状态表(可选,用于记录用户WebSocket连接状态)
  33. CREATE TABLE `user_online_status` (
  34. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  35. `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  36. `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  37. `session_id` varchar(100) NOT NULL COMMENT 'WebSocket会话ID',
  38. `server_ip` varchar(50) DEFAULT NULL COMMENT '服务器IP',
  39. `client_ip` varchar(50) DEFAULT NULL COMMENT '客户端IP',
  40. `browser` varchar(100) DEFAULT NULL COMMENT '浏览器信息',
  41. `os` varchar(100) DEFAULT NULL COMMENT '操作系统信息',
  42. `status` varchar(20) DEFAULT 'ONLINE' COMMENT '状态:ONLINE-在线,OFFLINE-离线',
  43. `connect_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '连接时间',
  44. `last_heartbeat` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间',
  45. `disconnect_time` datetime DEFAULT NULL COMMENT '断开时间',
  46. `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  47. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  48. PRIMARY KEY (`id`),
  49. UNIQUE KEY `uk_session_id` (`session_id`),
  50. KEY `idx_user_id` (`user_id`),
  51. KEY `idx_status` (`status`),
  52. KEY `idx_last_heartbeat` (`last_heartbeat`)
  53. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户在线状态表';