# school_chat_messages 表文档 ## 表概述 **表名**: school_chat_messages **功能**: 聊天消息管理表,用于记录和管理系统内部的即时通讯消息,支持员工与学员、员工之间的多种类型消息交流,包括文本、图片、系统通知等,为教育机构提供完整的内部沟通平台 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references from_type enum('personnel','customer','system') utf8mb4_general_ci NO NULL select,insert,update,references 发送者类型|personnel=员工,customer=学生(客户)system(系统消息) from_id int NULL NO NULL select,insert,update,references 发送者ID(员工/学生)根据from_type进行判断为presonnel时,必然是员工id,为customer时必然是学生id to_id int NULL NO MUL NULL select,insert,update,references 接收者ID(员工/学生)根据from_type进行判断为presonnel时,必然是员工id,为customer时必然是学生id to_type enum('personnel','customer','member') utf8mb4_general_ci NO customer select,insert,update,references 接收者类型 friend_id int NULL NO NULL select,insert,update,references 关联chat_friends表id message_type enum('text','img','system','notification','homework','feedback','reminder','order','student_courses','person_course_schedule') utf8mb4_general_ci YES text select,insert,update,references content text utf8mb4_general_ci NO NULL select,insert,update,references 文本内容(JSON 格式扩展字段) created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 添加时间 updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 delete_time int NULL NO 0 select,insert,update,references 逻辑删除时间 is_read tinyint(1) NULL YES 0 select,insert,update,references 是否已读 0-未读 1-已读 read_time timestamp NULL YES NULL select,insert,update,references 已读时间 title varchar(255) utf8mb4_general_ci YES select,insert,update,references 消息标题 business_id int NULL YES NULL select,insert,update,references 关联业务ID business_type varchar(50) utf8mb4_general_ci YES select,insert,update,references 业务类型 ``` ## 功能用途 ### 主要功能 - **多类型消息支持**: 支持文本、图片、系统通知、作业、反馈等多种消息类型 - **用户身份管理**: 区分员工、学员、系统等不同发送者和接收者类型 - **好友关系维护**: 通过friend_id关联聊天好友关系 - **消息状态跟踪**: 跟踪消息的已读状态和阅读时间 - **业务消息关联**: 支持与具体业务对象的关联,如课程、订单等 - **软删除机制**: 支持消息的逻辑删除,保护数据完整性 - **消息标题管理**: 支持消息标题,便于消息分类和展示 - **时间戳记录**: 完整记录消息的创建和更新时间 ### 业务场景 - **师生沟通**: 教师与学员之间的课程咨询和学习交流 - **作业布置**: 教师向学员布置和批改作业 - **学习反馈**: 学员向教师反馈学习情况和问题 - **课程提醒**: 系统自动发送课程安排和变更通知 - **订单通知**: 支付成功、课程购买等订单相关通知 - **系统公告**: 重要系统公告和通知的推送 - **客服咨询**: 学员与客服人员的在线咨询 - **内部协作**: 员工之间的工作协作和信息交流 - **家校沟通**: 教师与家长的沟通交流 - **紧急通知**: 紧急情况下的即时通知和提醒 ## 关联关系 ### 主要关联表 - **school_chat_friends**: 聊天好友表,通过friend_id关联好友关系 - **school_personnel**: 人员表,当from_type或to_type为personnel时关联 - **school_student**: 学员表,当from_type或to_type为customer时关联 - **school_member**: 会员表,当to_type为member时关联 - **school_course**: 课程表,当business_type为课程相关时关联 - **school_pay**: 支付表,当business_type为订单相关时关联 - **school_person_course_schedule**: 个人课程安排表,当message_type为person_course_schedule时关联 - **school_student_courses**: 学员课程表,当message_type为student_courses时关联 ### 关联说明 - 通过from_id和to_id建立消息发送者和接收者的关联 - 通过friend_id关联具体的好友关系记录 - 通过business_id和business_type关联具体的业务对象 - 支持多种用户类型之间的消息交流 - 消息类型决定了消息的展示方式和处理逻辑 ## 索引建议 ```sql -- 主键索引(自动创建) PRIMARY KEY (id) -- 接收者索引(用于查询接收的消息) INDEX idx_to_id (to_id) -- 好友关系索引(用于查询好友间的消息) INDEX idx_friend_id (friend_id) -- 发送者索引(用于查询发送的消息) INDEX idx_from_id (from_id) -- 已读状态索引(用于查询未读消息) INDEX idx_is_read (is_read) -- 创建时间索引(用于按时间排序) INDEX idx_created_at (created_at) -- 删除时间索引(用于软删除查询) INDEX idx_delete_time (delete_time) -- 消息类型索引(用于按类型查询) INDEX idx_message_type (message_type) -- 业务关联索引(用于查询业务相关消息) INDEX idx_business (business_type, business_id) -- 复合索引(接收者和已读状态) INDEX idx_to_read (to_id, is_read) -- 复合索引(好友和时间) INDEX idx_friend_time (friend_id, created_at) -- 复合索引(发送者类型和ID) INDEX idx_from_type_id (from_type, from_id) -- 复合索引(接收者类型和ID) INDEX idx_to_type_id (to_type, to_id) ``` ## 注意事项 - **消息安全**: 确保消息内容的安全性,防止敏感信息泄露 - **权限控制**: 严格控制消息的发送和接收权限 - **内容审核**: 建立消息内容的审核机制,防止不当内容 - **存储优化**: 大量消息数据需要考虑存储优化和归档策略 - **实时性**: 确保消息的实时推送和接收 - **消息格式**: JSON格式的content字段需要规范化处理 - **文件管理**: 图片等文件类型消息需要配套的文件存储方案 - **消息限制**: 设置合理的消息长度和发送频率限制 - **数据清理**: 定期清理过期的已删除消息数据 - **备份策略**: 重要消息需要建立备份和恢复机制 - **性能监控**: 监控消息系统的性能和响应时间 - **用户体验**: 优化消息的展示和交互体验 - **离线消息**: 处理用户离线时的消息存储和推送 - **消息统计**: 建立消息发送和接收的统计分析 - **异常处理**: 处理消息发送失败和网络异常情况