完成从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.3 KiB
6.3 KiB
开发日志 - 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) ✅
创建了以下实体类:
CoursePackage.java- 课程套餐CoursePackageCourse.java- 套餐课程关联TenantPackage.java- 租户套餐关联CourseLesson.java- 课程环节LessonStep.java- 教学环节LessonStepResource.java- 环节资源关联Theme.java- 主题字典
Phase 3: 创建 Mapper 层 ✅
创建了对应的 Mapper 接口:
CoursePackageMapper.javaCoursePackageCourseMapper.javaTenantPackageMapper.javaCourseLessonMapper.javaLessonStepMapper.javaLessonStepResourceMapper.javaThemeMapper.java
Phase 4: 创建 DTO 类 ✅
创建了请求 DTO:
PackageCreateRequest.java- 创建套餐请求ThemeCreateRequest.java- 创建主题请求CourseLessonCreateRequest.java- 创建课程环节请求
Phase 5: 创建 Service 层 ✅
创建了以下服务类:
-
ThemeService.java- 主题字典服务- findAll, findById, create, update, delete, reorder
-
CoursePackageService.java- 课程套餐服务- findAllPackages, findOnePackage, createPackage, updatePackage, deletePackage
- setPackageCourses, submitPackage, reviewPackage, publishPackage, offlinePackage
- findTenantPackages, renewTenantPackage
-
CourseLessonService.java- 课程环节服务- findByCourseId, findById, findByType, create, update, delete, reorder
- findSteps, createStep, updateStep, deleteStep, reorderSteps
- findCourseLessonsForTeacher (带权限检查)
-
FileStorageService.java- 文件存储服务- saveFile, deleteFile, validateFileType, validateFileSize
-
ResourceLibraryService.java- 资源库服务- findAllLibraries, findLibraryById, createLibrary, updateLibrary, deleteLibrary
- findAllItems, findItemById, createItem, updateItem, deleteItem, batchDeleteItems
- getStats
Phase 6: 创建 Controller 层 ✅
创建了以下控制器:
超管端:
-
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
-
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 (下线)
-
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
-
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 (统计)
学校端:
SchoolPackageController.java- 套餐管理- GET /api/v1/school/packages (查询租户套餐)
- POST /api/v1/school/packages/{id}/renew (续费)
公共:
FileUploadController.java- 文件上传- POST /api/v1/files/upload (上传文件)
- DELETE /api/v1/files/delete (删除文件)
技术规范遵循
所有代码严格遵循以下规范:
- Spring Boot 3.2+ - 使用最新版本
- MyBatis-Plus - 简化 CRUD 操作
- 三层架构 - Controller → Service → Mapper
- 统一响应格式 - Result
- OpenAPI 文档 - 使用 Swagger 注解
- 类型安全 - 强类型校验
待完成任务
- 数据库迁移脚本 - 需要为新实体创建对应的数据库表
- 单元测试 - 为新创建的 Service 编写测试用例
- 集成测试 - 验证 API 接口功能
- 前端适配 - 更新前端 API 调用地址
- Tenant 完善 - 完善 AdminTenantController 的缺失功能
- SchoolCourse 完善 - 完善校本课程功能
文件统计
新增文件:
- Entity: 7 个
- Mapper: 7 个
- DTO: 3 个
- Service: 5 个
- Controller: 5 个
总计:27 个新文件
下一步计划
- 创建数据库迁移脚本(Flyway)
- 完善 Tenant 相关功能
- 完善 SchoolCourse 相关功能
- 启动 Java 后端进行功能测试
- 更新启动脚本,只启动 Java 后端
本日志记录于 2026-03-12 任务状态:Java 后端核心模块已补充完成