完成从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>
286 lines
6.9 KiB
Markdown
286 lines
6.9 KiB
Markdown
# Java 后端启动完整指南
|
||
|
||
## ✅ 环境配置完成
|
||
|
||
当前系统状态(已完成配置):
|
||
- ✅ **Java 17.0.18** (Amazon Corretto) - 通过 SDKMAN 安装
|
||
- ✅ **Maven 3.9.13** - 通过 SDKMAN 安装
|
||
- ✅ **Python 3.9.6** - 已安装
|
||
- ✅ **MySQL 连接器** - 已安装
|
||
|
||
---
|
||
|
||
## 快速启动指南
|
||
|
||
### 方案 A:使用命令行(推荐)
|
||
|
||
**步骤:**
|
||
|
||
1. **加载环境变量**:
|
||
```bash
|
||
source "$HOME/.sdkman/bin/sdkman-init.sh"
|
||
```
|
||
|
||
2. **验证安装**:
|
||
```bash
|
||
java -version
|
||
mvn -version
|
||
```
|
||
|
||
3. **进入项目目录**:
|
||
```bash
|
||
cd /Users/retirado/Program/ccProgram_0312/reading-platform-java
|
||
```
|
||
|
||
4. **启动后端**:
|
||
```bash
|
||
mvn spring-boot:run
|
||
```
|
||
|
||
**优点**:
|
||
- 快速直接,无需额外工具
|
||
- 可以看到完整的启动日志
|
||
- 便于调试
|
||
|
||
---
|
||
|
||
### 方案 B:使用 IntelliJ IDEA(图形界面)
|
||
|
||
**步骤:**
|
||
1. 下载并安装 IntelliJ IDEA Community Edition (免费)
|
||
- 下载地址:https://www.jetbrains.com/idea/download/
|
||
|
||
2. 打开 IntelliJ IDEA
|
||
3. 选择 `File` → `Open`
|
||
4. 选择目录:`/Users/retirado/Program/ccProgram_0312/reading-platform-java`
|
||
5. 等待 IDEA 自动识别项目并下载 Maven 依赖
|
||
6. 找到 `src/main/java/com/reading/platform/ReadingPlatformApplication.java`
|
||
7. 点击类名旁边的绿色播放按钮 ▶️
|
||
|
||
**优点**:
|
||
- 图形化界面,操作简单
|
||
- 内置代码编辑和调试功能
|
||
- 无需手动配置环境变量
|
||
|
||
---
|
||
|
||
## 启动成功后的验证
|
||
|
||
### 1. 检查启动日志
|
||
控制台应显示以下内容表示启动成功:
|
||
```
|
||
Tomcat started on port 8080 (http)
|
||
Started ReadingPlatformApplication in X seconds
|
||
```
|
||
|
||
### 2. 访问 API 文档
|
||
```
|
||
http://localhost:8080/doc.html
|
||
```
|
||
|
||
Knife4j 文档界面提供:
|
||
- 完整的 API 列表
|
||
- 在线测试功能
|
||
- 接口参数说明
|
||
|
||
### 3. 测试登录接口
|
||
|
||
**请求示例:**
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username":"admin","password":"admin123"}'
|
||
```
|
||
|
||
**预期响应:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": {
|
||
"token": "eyJhbGc...",
|
||
"userId": 1,
|
||
"username": "admin",
|
||
"name": "平台管理员",
|
||
"role": "admin"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4. 测试新 API 端点
|
||
|
||
使用返回的 token 测试受保护的接口:
|
||
|
||
```bash
|
||
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"
|
||
```
|
||
|
||
---
|
||
|
||
## 数据库配置
|
||
|
||
**数据库连接信息:**
|
||
```yaml
|
||
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 配置
|
||
|
||
```yaml
|
||
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:** 查找并终止占用进程:
|
||
```bash
|
||
lsof -ti :8080 | xargs kill -9
|
||
```
|
||
|
||
### Q: SDKMAN 命令找不到
|
||
**A:** 需要先加载 SDKMAN 环境:
|
||
```bash
|
||
source "$HOME/.sdkman/bin/sdkman-init.sh"
|
||
```
|
||
|
||
### Q: 编译失败
|
||
**A:** 清理并重新编译:
|
||
```bash
|
||
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` 中设置:
|
||
```yaml
|
||
logging:
|
||
level:
|
||
com.reading.platform: debug
|
||
```
|
||
|
||
### 热重载(开发时)
|
||
使用 Spring Boot DevTools 可实现自动重载(需添加依赖)
|
||
|
||
### 测试账号
|
||
- **超管**: admin / admin123
|
||
- **学校**: school1 / 123456
|
||
- **教师**: teacher1 / 123456
|
||
- **家长**: parent1 / 123456
|
||
|
||
---
|
||
|
||
*最后更新: 2026-03-12 - Java后端环境配置完成*
|