完成从Node.js/NestJS到Java Spring Boot的后端迁移,修复资源管理API错误。 **核心修复:** - 修复资源库API 500错误 - ResourceLibrary/ResourceItem实体与数据库表结构对齐 - 更新ID类型从Long改为String,匹配数据库varchar(32) - 修正字段映射(libraryType → type) **新增Java实体(7个):** - CoursePackage, CoursePackageCourse, TenantPackage - CourseLesson, LessonStep, LessonStepResource - Theme **新增API控制器(5个):** - AdminResourceController - 资源库管理 - AdminPackageController - 课程套餐管理 - AdminCourseLessonController - 课程环节管理 - AdminThemeController - 主题字典管理 - SchoolPackageController - 学校套餐管理 **新增服务层(5个):** - ResourceLibraryService, CoursePackageService, CourseLessonService - ThemeService, FileStorageService **文档更新:** - 新增 Java环境配置与启动指南.md - 新增 Java后端启动完整指南.md - 新增 数据库迁移指南.md - 更新 CHANGELOG.md 和开发日志 **前端修复:** - 解决package.json合并冲突 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.9 KiB
6.9 KiB
Java 后端启动完整指南
✅ 环境配置完成
当前系统状态(已完成配置):
- ✅ Java 17.0.18 (Amazon Corretto) - 通过 SDKMAN 安装
- ✅ Maven 3.9.13 - 通过 SDKMAN 安装
- ✅ Python 3.9.6 - 已安装
- ✅ MySQL 连接器 - 已安装
快速启动指南
方案 A:使用命令行(推荐)
步骤:
-
加载环境变量:
source "$HOME/.sdkman/bin/sdkman-init.sh" -
验证安装:
java -version mvn -version -
进入项目目录:
cd /Users/retirado/Program/ccProgram_0312/reading-platform-java -
启动后端:
mvn spring-boot:run
优点:
- 快速直接,无需额外工具
- 可以看到完整的启动日志
- 便于调试
方案 B:使用 IntelliJ IDEA(图形界面)
步骤:
-
下载并安装 IntelliJ IDEA Community Edition (免费)
-
打开 IntelliJ IDEA
-
选择
File→Open -
选择目录:
/Users/retirado/Program/ccProgram_0312/reading-platform-java -
等待 IDEA 自动识别项目并下载 Maven 依赖
-
找到
src/main/java/com/reading/platform/ReadingPlatformApplication.java -
点击类名旁边的绿色播放按钮 ▶️
优点:
- 图形化界面,操作简单
- 内置代码编辑和调试功能
- 无需手动配置环境变量
启动成功后的验证
1. 检查启动日志
控制台应显示以下内容表示启动成功:
Tomcat started on port 8080 (http)
Started ReadingPlatformApplication in X seconds
2. 访问 API 文档
http://localhost:8080/doc.html
Knife4j 文档界面提供:
- 完整的 API 列表
- 在线测试功能
- 接口参数说明
3. 测试登录接口
请求示例:
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
预期响应:
{
"code": 200,
"message": "success",
"data": {
"token": "eyJhbGc...",
"userId": 1,
"username": "admin",
"name": "平台管理员",
"role": "admin"
}
}
4. 测试新 API 端点
使用返回的 token 测试受保护的接口:
TOKEN="返回的token值"
# 查询主题列表
curl http://localhost:8080/api/v1/admin/themes \
-H "Authorization: Bearer $TOKEN"
# 查询课程套餐
curl http://localhost:8080/api/v1/admin/packages \
-H "Authorization: Bearer $TOKEN"
# 查询资源库
curl http://localhost:8080/api/v1/admin/resources/libraries \
-H "Authorization: Bearer $TOKEN"
数据库配置
数据库连接信息:
spring:
datasource:
url: jdbc:mysql://8.148.151.56:3306/reading_platform
username: root
password: reading_platform_pwd
已创建的数据表:
t_admin_user- 管理员用户t_teacher- 教师用户t_parent- 家长用户t_student- 学生t_tenant- 租户course_package- 课程套餐course_package_course- 套餐课程关联tenant_package- 租户套餐course_lesson- 课程环节lesson_step- 教学环节lesson_step_resource- 环节资源关联theme- 主题字典t_resource_library- 资源库t_resource_item- 资源项目
JWT 配置
jwt:
secret: readingPlatformJwtSecretKeyForTokenGeneration2024
expiration: 86400000 # 24小时(毫秒)
已实现的 API 端点
认证接口
POST /api/auth/login- 用户登录GET /api/auth/me- 获取当前用户信息POST /api/auth/change-password- 修改密码
超管端接口 (/api/v1/admin)
- 主题管理:
/themes- CRUD操作 - 课程套餐:
/packages- 创建、审核、发布、下线 - 课程环节:
/courses/{courseId}/lessons- 管理6种课程类型 - 资源库:
/resources/libraries,/resources/items- 资源库管理 - 文件上传:
/files/upload- 文件上传接口
学校端接口 (/api/v1/school)
- 套餐管理:
/packages- 查询、续费套餐
常见问题
Q: 提示端口 8080 被占用
A: 查找并终止占用进程:
lsof -ti :8080 | xargs kill -9
Q: SDKMAN 命令找不到
A: 需要先加载 SDKMAN 环境:
source "$HOME/.sdkman/bin/sdkman-init.sh"
Q: 编译失败
A: 清理并重新编译:
mvn clean compile
Q: 数据库连接失败
A: 检查网络连接和数据库服务状态
项目结构
reading-platform-java/
├── src/main/java/com/reading/platform/
│ ├── ReadingPlatformApplication.java # 启动类
│ ├── common/ # 公共组件
│ │ ├── annotation/ # 注解定义
│ │ ├── aspect/ # AOP切面
│ │ ├── config/ # 配置类
│ │ ├── enums/ # 枚举定义
│ │ ├── exception/ # 异常处理
│ │ ├── response/ # 响应封装
│ │ └── security/ # 安全模块
│ ├── controller/ # 控制器
│ │ ├── admin/ # 超管端
│ │ ├── school/ # 学校端
│ │ ├── teacher/ # 教师端
│ │ └── parent/ # 家长端
│ ├── dto/ # 数据传输对象
│ │ ├── request/ # 请求DTO
│ │ └── response/ # 响应DTO
│ ├── entity/ # 实体类
│ ├── mapper/ # MyBatis Mapper
│ ├── service/ # 业务逻辑
│ └── util/ # 工具类
├── src/main/resources/
│ ├── application.yml # 应用配置
│ └── db/migration/ # 数据库迁移脚本
└── pom.xml # Maven配置
技术栈
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 17.0.18 | Amazon Corretto |
| Spring Boot | 3.2.3 | 基础框架 |
| MyBatis-Plus | 3.5.5 | ORM框架 |
| MySQL Connector | 8.3.0 | 数据库驱动 |
| JWT | jjwt 0.12.5 | Token生成 |
| Knife4j | 4.4.0 | API文档 |
| Lombok | - | 代码简化 |
| Hutool | 5.8.26 | 工具库 |
开发模式提示
启用调试日志
在 application.yml 中设置:
logging:
level:
com.reading.platform: debug
热重载(开发时)
使用 Spring Boot DevTools 可实现自动重载(需添加依赖)
测试账号
- 超管: admin / admin123
- 学校: school1 / 123456
- 教师: teacher1 / 123456
- 家长: parent1 / 123456
最后更新: 2026-03-12 - Java后端环境配置完成