在application.properties里面修改数据库连接信息 然后点到entiity包里面的user里面的user类的名字,会有个点击连接数据源,会帮自动更新对应数据库的信息,即往里面初始化表信息,然后后面跑起来之后就可以使用api了
-
聊天室管理(必做)
- 聊天室创建与管理
- 消息记录与实时通信
- 用户与聊天室关系
- 文件与多媒体支持
-
教师直播管理(选做)
- 直播间创建与启动
- 实时观看与互动
- 直播资源管理(课件与录播)
- 数据统计与分析
-
课程管理(选做)
- 课程信息
- 学习进度
- 测验与作业
- 课程评价
- users(用户表)
- id(主键)
- username(用户名)
- email(邮箱)
- password(密码,需加密存储)
- role(角色,如学生、教师、管理员)
- created_at(注册时间)
- updated_at(更新时间)
- chat_rooms(聊天室表)
id(主键)name(聊天室名称,例如课程讨论组)course_id(课程 ID,可选,关联courses表)created_at(创建时间)updated_at(更新时间)
- messages(消息表)
id(主键)chat_room_id(聊天室 ID,关联chat_rooms表)user_id(用户 ID,关联users表)content(消息内容)message_type(消息类型,如文本、图片、文件等)created_at(消息发送时间)
- chat_room_members(聊天室成员表)
id(主键)chat_room_id(聊天室 ID,关联chat_rooms表)user_id(用户 ID,关联users表)joined_at(加入时间)is_active(是否活跃,方便管理成员状态)
- attachments(附件表)
id(主键)message_id(消息 ID,关联messages表)file_url(文件存储路径)file_type(文件类型,如图片、文档、视频)uploaded_at(上传时间)
- message_notifications(消息通知表)
id(主键)user_id(用户 ID)message_id(消息 ID,关联messages表)is_read(是否已读)notified_at(通知时间)
-
支持群聊与私聊
- 对于群聊,关联
chat_rooms表和chat_room_members表。 - 对于私聊,可以跳过
chat_rooms表,直接使用user_id和recipient_id字段(存储发消息和接收消息的双方)。
- 对于群聊,关联
-
搜索功能
- 为
messages.content字段添加全文索引,方便实现消息搜索功能。
- 为
-
消息持久化与优化
- 定期归档历史消息到冷数据存储(如云存储),减少数据库压力。
- 使用分页查询加载历史消息。
-
实时通信支持
- 使用 WebSocket 或 Server-Sent Events 实现实时消息推送。
- 数据库中保存基础数据,实时消息通过内存缓存(如 Redis)处理。
为了支持教师在平台上进行直播功能,可以设计以下数据库表和功能模块:
- live_rooms(直播间表)
id(主键)title(直播标题)teacher_id(教师 ID,关联users表)course_id(课程 ID,关联courses表,可选)status(直播状态,如未开始、直播中、已结束)start_time(计划开始时间)end_time(实际结束时间)created_at(创建时间)updated_at(更新时间)
- live_viewers(观看记录表)
id(主键)live_room_id(直播间 ID,关联live_rooms表)user_id(用户 ID,关联users表)join_time(进入时间)leave_time(离开时间,可为空表示还在观看)
(可复用聊天室的表结构,也可以单独为直播设计)
- live_chat_messages(直播聊天表)
id(主键)live_room_id(直播间 ID)user_id(用户 ID,关联users表)content(聊天内容)message_type(消息类型,如文本、表情、图片等)created_at(发送时间)
- live_assets(直播资源表)
id(主键)live_room_id(直播间 ID)file_url(文件地址,如课件、录播视频)file_type(资源类型,如视频、PDF、图片等)uploaded_at(上传时间)
- live_statistics(直播统计表)
id(主键)live_room_id(直播间 ID)viewer_count(总观看人数)peak_viewers(同时在线人数峰值)average_watch_time(人均观看时长)collected_at(统计时间)
- 教师可以创建直播间,指定标题、课程关联、计划时间等。
- 保存到
live_rooms表。
- 教师在指定时间内启动直播,系统将更新
live_rooms.status为 "直播中"。 - 结束直播时,更新状态为 "已结束",并记录结束时间。
- 学生通过课程或首页推荐列表进入直播间。
- 在进入时,记录到
live_viewers表,实时更新观看人数。 - 离开直播间时,更新离开时间。
- 支持文字聊天、发送表情、提问等互动,保存到
live_chat_messages表。 - 可设置管理员权限,教师或助教可以删除不当消息。
- 教师可以上传课件或共享屏幕。
- 直播结束后,录播视频可以自动上传并关联到直播间。
- 实时统计观看人数,并记录峰值。
- 支持教师查看历史直播的观看数据。
-
实时推流技术
- 使用 WebRTC 或 RTMP 协议来实现视频直播。
- 可以集成流媒体服务器(如 Wowza、Nginx-RTMP 或开源的 MediaSoup)。
-
实时互动
- 使用 WebSocket 实现低延迟的聊天、弹幕、问答功能。
-
录播功能
- 直播过程中支持录制流媒体并保存到文件服务器或云存储(如 AWS S3、阿里云 OSS)。
-
负载均衡
- 对于大规模用户,使用 CDN 加速视频流分发(如 Cloudflare 或腾讯云 CDN)。
- 使用 Redis 或 Kafka 管理实时消息队列。
-
权限管理
- 直播间分权限(如教师、助教、学生),控制可操作的功能。
- 限制未报名的学生观看直播。
-
courses(课程表)
- id(主键)
- title(课程名称)
- description(课程描述)
- teacher_id(教师 ID,关联
users表) - category_id(分类 ID,关联
categories表) - created_at(创建时间)
- updated_at(更新时间)
-
categories(课程分类表)
- id(主键)
- name(分类名称)
- parent_id(父分类 ID,支持多级分类)
-
enrollments(课程报名表)
- id(主键)
- user_id(用户 ID,关联
users表) - course_id(课程 ID,关联
courses表) - enrolled_at(报名时间)
-
progress(学习进度表)
- id(主键)
- user_id(用户 ID)
- course_id(课程 ID)
- lesson_id(课时 ID,关联
lessons表) - status(状态,如未开始、进行中、已完成)
- last_accessed_at(最后访问时间)
- lessons(课程内容表)
- id(主键)
- course_id(课程 ID)
- title(课时标题)
- content_url(内容链接,如视频或文档)
- order(课时顺序)
- created_at(创建时间)
-
quizzes(测验表)
- id(主键)
- course_id(课程 ID)
- title(测验标题)
- created_at(创建时间)
-
questions(题目表)
- id(主键)
- quiz_id(测验 ID)
- question_text(题目内容)
- question_type(题目类型,如选择题、填空题)
- options(选项,适用于选择题)
-
submissions(提交记录表)
- id(主键)
- user_id(用户 ID)
- quiz_id(测验 ID)
- answer(提交答案)
- score(得分)
- submitted_at(提交时间)
- orders(订单表)
- id(主键)
- user_id(用户 ID)
- course_id(课程 ID)
- amount(支付金额)
- status(支付状态,如待支付、已支付、已取消)
- created_at(创建时间)
- reviews(课程评价表)
- id(主键)
- user_id(用户 ID)
- course_id(课程 ID)
- rating(评分)
- comment(评价内容)
- created_at(创建时间)
- notifications(通知表)
- id(主键)
- user_id(用户 ID)
- message(通知内容)
- is_read(是否已读)
- created_at(创建时间)