完成从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>
190 lines
6.3 KiB
Markdown
190 lines
6.3 KiB
Markdown
# 开发日志 - 2026-03-12
|
||
|
||
## 今日任务:Java 后端完善 - 根据 NestJS 后端补充缺失模块
|
||
|
||
### 任务背景
|
||
|
||
根据统一开发规范,项目将全面使用 Java (Spring Boot) 后端,不再使用 Node.js/NestJS。今日任务是根据 NestJS 后端代码,将 Java 后端缺失的模块全部补全。
|
||
|
||
---
|
||
|
||
## 完成的工作
|
||
|
||
### Phase 1: 分析 NestJS 后端结构 ✅
|
||
|
||
分析了以下 NestJS 模块的代码结构:
|
||
- Tenant (租户管理)
|
||
- CoursePackage (课程包/套餐管理)
|
||
- CourseLesson (课程环节管理)
|
||
- FileUpload (文件上传)
|
||
- Resource (资源库管理)
|
||
- Theme (主题字典)
|
||
- SchoolCourse (校本课程)
|
||
|
||
### Phase 2: 创建实体类 (Entity) ✅
|
||
|
||
创建了以下实体类:
|
||
1. `CoursePackage.java` - 课程套餐
|
||
2. `CoursePackageCourse.java` - 套餐课程关联
|
||
3. `TenantPackage.java` - 租户套餐关联
|
||
4. `CourseLesson.java` - 课程环节
|
||
5. `LessonStep.java` - 教学环节
|
||
6. `LessonStepResource.java` - 环节资源关联
|
||
7. `Theme.java` - 主题字典
|
||
|
||
### Phase 3: 创建 Mapper 层 ✅
|
||
|
||
创建了对应的 Mapper 接口:
|
||
1. `CoursePackageMapper.java`
|
||
2. `CoursePackageCourseMapper.java`
|
||
3. `TenantPackageMapper.java`
|
||
4. `CourseLessonMapper.java`
|
||
5. `LessonStepMapper.java`
|
||
6. `LessonStepResourceMapper.java`
|
||
7. `ThemeMapper.java`
|
||
|
||
### Phase 4: 创建 DTO 类 ✅
|
||
|
||
创建了请求 DTO:
|
||
1. `PackageCreateRequest.java` - 创建套餐请求
|
||
2. `ThemeCreateRequest.java` - 创建主题请求
|
||
3. `CourseLessonCreateRequest.java` - 创建课程环节请求
|
||
|
||
### Phase 5: 创建 Service 层 ✅
|
||
|
||
创建了以下服务类:
|
||
1. `ThemeService.java` - 主题字典服务
|
||
- findAll, findById, create, update, delete, reorder
|
||
|
||
2. `CoursePackageService.java` - 课程套餐服务
|
||
- findAllPackages, findOnePackage, createPackage, updatePackage, deletePackage
|
||
- setPackageCourses, submitPackage, reviewPackage, publishPackage, offlinePackage
|
||
- findTenantPackages, renewTenantPackage
|
||
|
||
3. `CourseLessonService.java` - 课程环节服务
|
||
- findByCourseId, findById, findByType, create, update, delete, reorder
|
||
- findSteps, createStep, updateStep, deleteStep, reorderSteps
|
||
- findCourseLessonsForTeacher (带权限检查)
|
||
|
||
4. `FileStorageService.java` - 文件存储服务
|
||
- saveFile, deleteFile, validateFileType, validateFileSize
|
||
|
||
5. `ResourceLibraryService.java` - 资源库服务
|
||
- findAllLibraries, findLibraryById, createLibrary, updateLibrary, deleteLibrary
|
||
- findAllItems, findItemById, createItem, updateItem, deleteItem, batchDeleteItems
|
||
- getStats
|
||
|
||
### Phase 6: 创建 Controller 层 ✅
|
||
|
||
创建了以下控制器:
|
||
|
||
**超管端:**
|
||
1. `AdminThemeController.java` - 主题字典管理
|
||
- GET /api/v1/admin/themes
|
||
- GET /api/v1/admin/themes/{id}
|
||
- POST /api/v1/admin/themes
|
||
- PUT /api/v1/admin/themes/{id}
|
||
- DELETE /api/v1/admin/themes/{id}
|
||
- PUT /api/v1/admin/themes/reorder
|
||
|
||
2. `AdminPackageController.java` - 课程套餐管理
|
||
- GET /api/v1/admin/packages (分页查询)
|
||
- GET /api/v1/admin/packages/{id}
|
||
- POST /api/v1/admin/packages (创建)
|
||
- PUT /api/v1/admin/packages/{id} (更新)
|
||
- DELETE /api/v1/admin/packages/{id}
|
||
- PUT /api/v1/admin/packages/{id}/courses (设置课程)
|
||
- POST /api/v1/admin/packages/{id}/submit (提交审核)
|
||
- POST /api/v1/admin/packages/{id}/review (审核)
|
||
- POST /api/v1/admin/packages/{id}/publish (发布)
|
||
- POST /api/v1/admin/packages/{id}/offline (下线)
|
||
|
||
3. `AdminCourseLessonController.java` - 课程环节管理
|
||
- GET /api/v1/admin/courses/{courseId}/lessons
|
||
- GET /api/v1/admin/courses/{courseId}/lessons/{id}
|
||
- GET /api/v1/admin/courses/{courseId}/lessons/type/{lessonType}
|
||
- POST /api/v1/admin/courses/{courseId}/lessons (创建)
|
||
- PUT /api/v1/admin/courses/{courseId}/lessons/{id} (更新)
|
||
- DELETE /api/v1/admin/courses/{courseId}/lessons/{id}
|
||
- PUT /api/v1/admin/courses/{courseId}/lessons/reorder
|
||
- GET /api/v1/admin/courses/{courseId}/lessons/{lessonId}/steps
|
||
- POST /api/v1/admin/courses/{courseId}/lessons/{lessonId}/steps (创建环节)
|
||
- PUT /api/v1/admin/courses/{courseId}/lessons/steps/{stepId} (更新环节)
|
||
- DELETE /api/v1/admin/courses/{courseId}/lessons/steps/{stepId}
|
||
- PUT /api/v1/admin/courses/{courseId}/lessons/{lessonId}/steps/reorder
|
||
|
||
4. `AdminResourceController.java` - 资源库管理
|
||
- GET /api/v1/admin/resources/libraries (分页查询)
|
||
- GET /api/v1/admin/resources/libraries/{id}
|
||
- POST /api/v1/admin/resources/libraries (创建)
|
||
- PUT /api/v1/admin/resources/libraries/{id}
|
||
- DELETE /api/v1/admin/resources/libraries/{id}
|
||
- GET /api/v1/admin/resources/items (分页查询)
|
||
- GET /api/v1/admin/resources/items/{id}
|
||
- POST /api/v1/admin/resources/items (创建)
|
||
- PUT /api/v1/admin/resources/items/{id}
|
||
- DELETE /api/v1/admin/resources/items/{id}
|
||
- POST /api/v1/admin/resources/items/batch-delete
|
||
- GET /api/v1/admin/resources/stats (统计)
|
||
|
||
**学校端:**
|
||
1. `SchoolPackageController.java` - 套餐管理
|
||
- GET /api/v1/school/packages (查询租户套餐)
|
||
- POST /api/v1/school/packages/{id}/renew (续费)
|
||
|
||
**公共:**
|
||
1. `FileUploadController.java` - 文件上传
|
||
- POST /api/v1/files/upload (上传文件)
|
||
- DELETE /api/v1/files/delete (删除文件)
|
||
|
||
---
|
||
|
||
## 技术规范遵循
|
||
|
||
所有代码严格遵循以下规范:
|
||
1. **Spring Boot 3.2+** - 使用最新版本
|
||
2. **MyBatis-Plus** - 简化 CRUD 操作
|
||
3. **三层架构** - Controller → Service → Mapper
|
||
4. **统一响应格式** - Result<T>
|
||
5. **OpenAPI 文档** - 使用 Swagger 注解
|
||
6. **类型安全** - 强类型校验
|
||
|
||
---
|
||
|
||
## 待完成任务
|
||
|
||
1. **数据库迁移脚本** - 需要为新实体创建对应的数据库表
|
||
2. **单元测试** - 为新创建的 Service 编写测试用例
|
||
3. **集成测试** - 验证 API 接口功能
|
||
4. **前端适配** - 更新前端 API 调用地址
|
||
5. **Tenant 完善** - 完善 AdminTenantController 的缺失功能
|
||
6. **SchoolCourse 完善** - 完善校本课程功能
|
||
|
||
---
|
||
|
||
## 文件统计
|
||
|
||
**新增文件:**
|
||
- Entity: 7 个
|
||
- Mapper: 7 个
|
||
- DTO: 3 个
|
||
- Service: 5 个
|
||
- Controller: 5 个
|
||
|
||
**总计:27 个新文件**
|
||
|
||
---
|
||
|
||
## 下一步计划
|
||
|
||
1. 创建数据库迁移脚本(Flyway)
|
||
2. 完善 Tenant 相关功能
|
||
3. 完善 SchoolCourse 相关功能
|
||
4. 启动 Java 后端进行功能测试
|
||
5. 更新启动脚本,只启动 Java 后端
|
||
|
||
---
|
||
|
||
*本日志记录于 2026-03-12*
|
||
*任务状态:Java 后端核心模块已补充完成*
|