kindergarten_java/补全接口修复总结.md
En 583b47c430 feat: 新增学校通知、任务模板和日程管理功能
- 新增学校通知控制器 (SchoolNotificationController)
- 新增任务模板创建/更新请求 DTO
- 新增日程计划创建和模板应用请求 DTO
- 新增 TokenService 服务实现
- 新增多个服务实现类 (AdminStats, CourseLesson, CoursePackage 等)
- 添加数据库迁移脚本 V7__fix_schedule_plans.sql
- 更新配置文件和依赖

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:06:03 +08:00

8.0 KiB

API 接口补全修复总结

修复日期

2026-03-09

问题修复

Bug 修复

修复了 TaskServiceImpl.java 中使用 ClassEntity 的错误,改为使用 Clazz(因为 class 是 Java 关键字,项目中使用 Clazz 作为班级实体名称)。

修改位置: reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java

  • 第 284 行:List<ClassEntity> classesList<Clazz> classes
  • 第 288 行:for (ClassEntity cls : classes)for (Clazz cls : classes)

数据库迁移

新增数据库迁移脚本 V7__fix_schedule_plans.sql,为 schedule_plans 表添加以下字段:

  • course_id - 课程 ID
  • teacher_id - 教师 ID
  • day_of_week - 星期几 (1-7)
  • period - 节次
  • start_time - 开始时间
  • end_time - 结束时间
  • location - 教室/地点
  • note - 备注

已补全的 API 接口

1. 任务管理接口

新增 Service 方法 (TaskService)

// 任务统计
Map<String, Object> getTaskStats(Long tenantId);
Map<String, Object> getStatsByType(Long tenantId);
List<Map<String, Object>> getStatsByClass(Long tenantId);
List<Map<String, Object>> getMonthlyStats(Long tenantId, Integer months);

// 任务完成情况
Page<TaskCompletion> getTaskCompletions(Long tenantId, Long taskId, Integer pageNum, Integer pageSize, String status);
TaskCompletion updateTaskCompletion(Long tenantId, Long taskId, Long studentId, String status, String feedback);

// 任务模板
Page<TaskTemplate> getTemplatePage(Long tenantId, Integer pageNum, Integer pageSize, String keyword, String type);
TaskTemplate getTemplateById(Long tenantId, Long id);
TaskTemplate getDefaultTemplate(Long tenantId, String taskType);
TaskTemplate createTemplate(Long tenantId, Long creatorId, TaskTemplateCreateRequest request);
TaskTemplate updateTemplate(Long tenantId, Long id, TaskTemplateUpdateRequest request);
void deleteTemplate(Long tenantId, Long id);
Task createTaskFromTemplate(Long tenantId, Long creatorId, String creatorRole, CreateTaskFromTemplateRequest request);

新增 Controller 端点

SchoolTaskController (学校管理员 - 任务管理):

  • GET /api/v1/school/tasks/stats - 获取任务统计数据
  • GET /api/v1/school/tasks/stats/by-type - 按任务类型统计
  • GET /api/v1/school/tasks/stats/by-class - 按班级统计
  • GET /api/v1/school/tasks/stats/monthly - 月度统计趋势
  • GET /api/v1/school/tasks/:id/completions - 获取任务完成情况分页
  • PUT /api/v1/school/tasks/:taskId/completions/:studentId - 更新任务完成状态
  • GET /api/v1/school/task-templates - 获取任务模板列表
  • GET /api/v1/school/task-templates/:id - 获取单个模板
  • GET /api/v1/school/task-templates/default/:taskType - 获取默认模板
  • POST /api/v1/school/task-templates - 创建任务模板
  • PUT /api/v1/school/task-templates/:id - 更新任务模板
  • DELETE /api/v1/school/task-templates/:id - 删除任务模板
  • POST /api/v1/school/tasks/from-template - 从模板创建任务

TeacherTaskController (教师端 - 任务管理):

  • GET /api/v1/teacher/tasks/stats - 获取任务统计数据
  • GET /api/v1/teacher/tasks/stats/by-type - 按任务类型统计
  • GET /api/v1/teacher/tasks/stats/by-class - 按班级统计
  • GET /api/v1/teacher/tasks/stats/monthly - 月度统计趋势
  • GET /api/v1/teacher/tasks/:id/completions - 获取任务完成情况分页
  • PUT /api/v1/teacher/tasks/:taskId/completions/:studentId - 更新任务完成状态
  • GET /api/v1/teacher/task-templates - 获取任务模板列表
  • GET /api/v1/teacher/task-templates/:id - 获取单个模板
  • GET /api/v1/teacher/task-templates/default/:taskType - 获取默认模板
  • POST /api/v1/teacher/tasks/from-template - 从模板创建任务

2. 通知接口

新增 SchoolNotificationController (学校管理员 - 通知):

  • GET /api/v1/school/notifications - 获取通知列表
  • GET /api/v1/school/notifications/:id - 根据 ID 获取通知
  • GET /api/v1/school/notifications/unread-count - 获取未读数量
  • POST /api/v1/school/notifications/:id/read - 标记已读
  • POST /api/v1/school/notifications/read-all - 全部标记已读

3. 排课和课表接口

新增 Service 方法 (ScheduleService)

Page<SchedulePlan> getSchedulePlans(int pageNum, int pageSize, Long tenantId, Long classId, LocalDate startDate, LocalDate endDate);
List<Map<String, Object>> getTimetable(Long tenantId, LocalDate startDate, LocalDate endDate, Long classId);
List<SchedulePlan> batchCreateSchedules(Long tenantId, Long userId, List<SchedulePlanCreateRequest> requests);
ScheduleTemplate updateScheduleTemplate(Long id, ScheduleTemplate template);
List<SchedulePlan> applyScheduleTemplate(Long tenantId, Long templateId, ScheduleTemplateApplyRequest request);

新增 Controller 端点 (SchoolScheduleController)

  • GET /api/v1/school/schedules/timetable - 获取课表(带日期范围)
  • POST /api/v1/school/schedules/batch - 批量创建排课
  • GET /api/v1/school/schedules/templates/:id - 获取单个模板
  • PUT /api/v1/school/schedules/templates/:id - 更新模板
  • POST /api/v1/school/schedules/templates/:id/apply - 应用模板

4. 实体类增强

SchedulePlan (新增字段):

  • courseId - 课程 ID
  • teacherId - 教师 ID
  • dayOfWeek - 星期几 (1-7)
  • period - 节次
  • startTime - 开始时间
  • endTime - 结束时间
  • location - 教室/地点
  • note - 备注

5. 新增 DTO

TaskTemplateCreateRequest - 任务模板创建请求

- name: 模板名称
- description: 模板描述
- type: 任务类型
- content: 任务内容模板
- isPublic: 是否公共模板

TaskTemplateUpdateRequest - 任务模板更新请求

CreateTaskFromTemplateRequest - 从模板创建任务请求

- templateId: 模板 ID
- targetIds: 目标 ID 列表
- targetType: 目标类型 (CLASS/STUDENT)
- startDate: 开始日期
- endDate: 截止日期

SchedulePlanCreateRequest - 课表计划创建请求

- classId: 班级 ID
- courseId: 课程 ID
- teacherId: 授课教师 ID
- dayOfWeek: 星期几
- period: 节次
- startTime: 开始时间
- endTime: 结束时间
- location: 教室/地点
- note: 备注
- startDate: 开始日期
- endDate: 结束日期

ScheduleTemplateApplyRequest - 课表模板应用请求

- classId: 班级 ID
- startDate: 应用开始日期
- weeks: 应用周数

文件变更列表

新增文件 (7 个)

  1. dto/request/TaskTemplateCreateRequest.java
  2. dto/request/TaskTemplateUpdateRequest.java
  3. dto/request/CreateTaskFromTemplateRequest.java
  4. dto/request/SchedulePlanCreateRequest.java
  5. dto/request/ScheduleTemplateApplyRequest.java
  6. controller/school/SchoolNotificationController.java
  7. resources/db/migration/V7__fix_schedule_plans.sql

修改文件 (7 个)

  1. service/TaskService.java - 添加统计和模板方法接口
  2. service/impl/TaskServiceImpl.java - 实现统计和模板逻辑 + 修复 ClassEntity bug
  3. service/ScheduleService.java - 添加课表相关方法
  4. entity/SchedulePlan.java - 添加课程、教师等字段
  5. controller/school/SchoolTaskController.java - 添加统计和模板端点
  6. controller/teacher/TeacherTaskController.java - 添加统计和模板端点
  7. controller/school/SchoolScheduleController.java - 添加课表和模板端点

仍需补全的接口(下一步建议)

高优先级

  1. 成长档案接口 - 按学生/班级查询
  2. 教师端课时反馈 - 完成课时、学生记录、反馈接口
  3. 班级管理 - 班级教师/学生管理、学生调班

中优先级

  1. 统计报告 - 学校统计、报告导出
  2. 导出接口增强 - 带日期范围参数
  3. 管理员课程审核 - 提交、审核、发布流程

使用说明

  1. 运行数据库迁移:
# Flyway 会在应用启动时自动运行 V7 迁移脚本
  1. 编译项目:
cd reading-platform-java
mvn clean compile
  1. 启动应用后,访问 API 文档:
http://localhost:8080/doc.html