kindergarten_java/docs/dev-logs/2026-03-12-java-migration.md

190 lines
6.3 KiB
Markdown
Raw Normal View History

# 开发日志 - 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 后端核心模块已补充完成*