Skip to content

wangyufan253/Ocean_platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ocean Platform 在线学习课堂后端

Ocean Platform 是一个面向在线学习课堂场景的 Spring Boot 后端项目,集成了用户登录认证、课程管理、抢课处理、文件上传、课堂实时通信等常见教学平台核心能力

项目简介

本项目围绕“在线课堂”业务展开,提供了从用户登录、课程创建、课程查询,到学生抢课、文件上传、课堂消息广播的一整套后端基础能力。

项目不仅包含常规的 RESTful API,还结合了 Redis、RabbitMQ、MinIO 和 WebSocket,覆盖了真实业务系统中常见的缓存、消息队列、对象存储和实时通信等技术点。

技术栈

  • Java 17
  • Spring Boot 3.3
  • MyBatis-Plus
  • MySQL 8
  • Redis 7
  • RabbitMQ 3
  • MinIO
  • WebSocket
  • JWT
  • Docker Compose

核心功能

  • 用户登录与当前用户信息查询
  • 教师端课程创建与编辑
  • 课程列表与课程详情查询
  • 学生抢课与异步处理结果查询
  • 基于 MinIO 的文件上传
  • 基于 WebSocket 的课堂实时消息通信
  • 基于 RabbitMQ 的异步消息处理与广播

项目结构

src/main/java/com/studyclassroom
├─ common      # 通用返回体、上下文、异常处理、拦截器、工具类
├─ config      # JWT、MinIO、RabbitMQ、WebMvc、WebSocket 配置
└─ module
   ├─ user       # 用户登录与用户信息
   ├─ course     # 课程管理与查询
   ├─ file       # 文件上传
   ├─ selection  # 抢课与结果查询
   ├─ mq         # 抢课异步消息生产与消费
   └─ classroom  # 课堂 WebSocket 实时通信

快速开始

1. 启动基础依赖服务

项目通过 Docker Compose 启动 MySQL、Redis、RabbitMQ 和 MinIO。

docker compose up -d

默认服务端口如下:

  • MySQL: 127.0.0.1:3307
  • Redis: 127.0.0.1:6379
  • RabbitMQ: 127.0.0.1:5672
  • RabbitMQ 管理后台: http://127.0.0.1:15672
  • MinIO API: http://127.0.0.1:9000
  • MinIO 控制台: http://127.0.0.1:9001

2. 启动后端项目

mvn spring-boot:run

或者先打包再运行:

mvn clean package
java -jar target/study-classroom-0.0.1-SNAPSHOT.jar

项目默认启动地址:

http://127.0.0.1:8080

默认配置说明

项目示例配置文件位于 src/main/resources/application.yml

默认配置包括:

  • MySQL 数据库名:study_classroom
  • MySQL 用户名:root
  • MySQL 密码:root1234
  • RabbitMQ 用户名:study
  • RabbitMQ 密码:study1234
  • MinIO Access Key:minioadmin
  • MinIO Secret Key:minioadmin
  • 服务端口:8080

如果用于生产环境,请务必修改默认账号、密码和 JWT 密钥。

接口概览

用户模块

  • POST /api/user/login:用户登录
  • GET /api/user/me:获取当前登录用户信息

课程模块

  • POST /api/teacher/course:创建课程
  • PUT /api/teacher/course/{courseId}:编辑课程
  • GET /api/course/list:查询课程列表
  • GET /api/course/{courseId}:查询课程详情

抢课模块

  • POST /api/course/{courseId}/select:提交抢课请求
  • GET /api/course/select/result?requestId=xxx:查询抢课处理结果

文件模块

  • POST /api/file/upload:上传文件

实时课堂模块

  • GET /ws/classroom/{courseId}:连接课堂 WebSocket 通道

WebSocket 连接会在握手阶段解析登录信息,用于识别当前课堂用户身份。

业务流程说明

1. 登录认证

用户通过登录接口获取 JWT,后续请求通过拦截器解析登录态,并将当前用户信息写入上下文,供业务模块使用。

2. 课程管理

教师可以创建和编辑课程,学生端可以查看课程列表与课程详情。

3. 抢课处理

学生发起抢课请求后,系统会先提交请求,再通过 RabbitMQ 异步消费处理选课逻辑,避免高并发下直接同步落库带来的压力。

系统支持:

  • requestId 幂等控制
  • 重复抢课判断
  • 库存扣减
  • 选课结果轮询查询

4. 文件上传

上传文件后,系统会将文件保存到 MinIO,并返回对应的文件访问地址和元数据。

5. 实时课堂通信

课堂消息通过 WebSocket 接入,后端将消息投递到 RabbitMQ 广播链路,再分发给当前课程下的在线会话,实现课堂实时消息同步。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors