docs: 更新开发日志 2026-03-21
记录学校端课程中心重构工作: - 后端 SchoolCourseController 返回完整 CourseResponse - 新增 CourseCenterView.vue 组件 - 新增 course-center.ts API 层 - 菜单文案修改:课程管理 → 课程中心 - 课程详情页现在展示完整数据 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ca56d8556e
commit
c2e4477cdf
203
docs/dev-logs/2026-03-21.md
Normal file
203
docs/dev-logs/2026-03-21.md
Normal file
@ -0,0 +1,203 @@
|
||||
# 开发日志 - 2026-03-21
|
||||
|
||||
## 学校端课程中心重构
|
||||
|
||||
### 背景
|
||||
|
||||
原有学校端"课程管理"模块功能单一:
|
||||
- 课程详情页展示数据不完整(缺少课程介绍、排课参考、环创建设等)
|
||||
- 与教师端课程中心存在功能重复
|
||||
- 用户体验与教师端不一致
|
||||
|
||||
### 目标
|
||||
|
||||
1. 学校端课程中心照搬教师端实现
|
||||
2. 课程详情页返回完整数据
|
||||
3. 统一两端浏览体验
|
||||
|
||||
---
|
||||
|
||||
## 完成的工作
|
||||
|
||||
### 1. 后端修改
|
||||
|
||||
#### SchoolCourseController.java
|
||||
- `getSchoolCourse()` 改为返回 `CourseResponse`(之前返回 `SchoolCourseResponse`)
|
||||
- 使用 `courseService.getCourseByIdWithLessons(id)` 获取完整数据
|
||||
- 与教师端 `TeacherCourseController.getCourse()` 保持一致
|
||||
|
||||
```java
|
||||
// 修改后
|
||||
@GetMapping("/{id}")
|
||||
public Result<CourseResponse> getSchoolCourse(@PathVariable Long id) {
|
||||
Long tenantId = SecurityUtils.getCurrentTenantId();
|
||||
courseService.getCourseByIdWithTenantCheck(id, tenantId);
|
||||
return Result.success(courseService.getCourseByIdWithLessons(id));
|
||||
}
|
||||
```
|
||||
|
||||
#### SchoolPackageController.java
|
||||
- 新增 `getPackagesByCollection()` - 获取套餐下的课程包列表
|
||||
- 新增 `getFilterMeta()` - 获取筛选元数据(年级、主题)
|
||||
|
||||
#### CourseCollectionService.java / Impl
|
||||
- 新增 `getPackagesByCollection()` 方法
|
||||
- 新增 `getFilterMeta()` 方法
|
||||
|
||||
#### PackageFilterMetaResponse.java(新增)
|
||||
- 筛选元数据响应类
|
||||
- 包含 grades 和 themes 两个列表
|
||||
|
||||
### 2. 前端修改
|
||||
|
||||
#### 新增文件
|
||||
|
||||
| 文件 | 说明 |
|
||||
|-----|------|
|
||||
| `src/api/course-center.ts` | 课程中心通用 API |
|
||||
| `src/views/school/courses-new/CourseCenterView.vue` | 学校端课程中心页面 |
|
||||
| `src/views/school/courses-new/components/CoursePackageCard.vue` | 课程包卡片组件 |
|
||||
| `src/views/teacher/courses-new/CourseCenterView.vue` | 教师端课程中心页面 |
|
||||
| `src/views/teacher/courses-new/components/CoursePackageCard.vue` | 课程包卡片组件 |
|
||||
|
||||
#### 修改文件
|
||||
|
||||
| 文件 | 修改内容 |
|
||||
|-----|---------|
|
||||
| `src/router/index.ts` | 课程中心路由指向新组件 |
|
||||
| `src/views/school/LayoutView.vue` | 菜单文案:课程管理 → 课程中心 |
|
||||
| `src/api/school.ts` | `getSchoolCourse()` 返回 `Promise<any>` |
|
||||
|
||||
### 3. 设计文档
|
||||
|
||||
新增:`docs/design/25-课程中心重构设计.md`
|
||||
|
||||
内容包括:
|
||||
- 功能对比矩阵(教师端 vs 学校端)
|
||||
- 数据展示对比(重构前后)
|
||||
- 架构设计(组件、API、后端)
|
||||
- 页面布局设计
|
||||
- 关键技术实现
|
||||
- 文件变更清单
|
||||
- 测试验证清单
|
||||
|
||||
---
|
||||
|
||||
## 课程详情页数据对比
|
||||
|
||||
| 数据项 | 重构前 | 重构后 |
|
||||
|-------|:------:|:------:|
|
||||
| 基本信息 | ✅ | ✅ |
|
||||
| 使用统计 | ✅ | ✅ |
|
||||
| 版本记录 | ✅ | ✅ |
|
||||
| 课程介绍(8项) | ❌ | ✅ |
|
||||
| 排课计划参考 | ❌ | ✅ |
|
||||
| 环创建设 | ❌ | ✅ |
|
||||
| 课程配置(lessons) | ❌ | ✅ |
|
||||
| 数字资源 | ❌ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 关键技术点
|
||||
|
||||
### 1. API 返回完整 CourseResponse
|
||||
|
||||
课程详情 API 现在返回完整的 `CourseResponse`,包含:
|
||||
|
||||
```typescript
|
||||
{
|
||||
// 基本信息
|
||||
id, name, description, coverImagePath, durationMinutes,
|
||||
gradeTags, domainTags,
|
||||
|
||||
// 课程介绍(8项)
|
||||
introSummary, introHighlights, introGoals, introSchedule,
|
||||
introKeyPoints, introMethods, introEvaluation, introNotes,
|
||||
|
||||
// 排课参考
|
||||
scheduleRefData: JSON 格式的周计划表,
|
||||
|
||||
// 环创建设
|
||||
environmentConstruction,
|
||||
|
||||
// 课程配置
|
||||
courseLessons: [
|
||||
{
|
||||
id, name, lessonType, duration,
|
||||
objectives, preparation, extension, reflection,
|
||||
videoPath, pptPath, pdfPath,
|
||||
steps: [{ id, name, duration, objective, content }]
|
||||
}
|
||||
],
|
||||
|
||||
// 统计
|
||||
usageCount, teacherCount, avgRating
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 前端页面布局
|
||||
|
||||
课程中心采用左右两栏布局:
|
||||
- **左侧**:套餐列表(垂直列表)
|
||||
- **右侧**:课程包网格 + 筛选区
|
||||
|
||||
课程详情页展示区域:
|
||||
1. 封面图
|
||||
2. 基本信息卡片(3列)
|
||||
3. 课程介绍(Tab 切换)
|
||||
4. 排课计划参考(表格)
|
||||
5. 环创建设
|
||||
6. 课程配置(课程卡片列表)
|
||||
7. 数字资源(分类展示)
|
||||
|
||||
---
|
||||
|
||||
## 测试验证
|
||||
|
||||
### API 测试
|
||||
|
||||
```bash
|
||||
# 登录获取 token
|
||||
curl -X POST http://localhost:8480/api/v1/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"school1","password":"123456"}'
|
||||
|
||||
# 获取课程详情
|
||||
curl -H "Authorization: Bearer $TOKEN" \
|
||||
http://localhost:8480/api/v1/school/courses/17 | jq '.data | keys'
|
||||
```
|
||||
|
||||
结果验证:
|
||||
- ✅ courseLessons: 7 个课程
|
||||
- ✅ scheduleRefData: 存在
|
||||
- ✅ introSummary 等字段: 存在
|
||||
- ✅ environmentConstruction: 存在
|
||||
|
||||
### 前端测试
|
||||
|
||||
- ✅ 学校端课程中心页面正常加载
|
||||
- ✅ 套餐列表正常显示
|
||||
- ✅ 课程包网格正常显示
|
||||
- ✅ 筛选功能正常
|
||||
- ✅ 课程详情页展示完整数据
|
||||
|
||||
---
|
||||
|
||||
## Git 提交记录
|
||||
|
||||
```
|
||||
ca56d85 docs: 添加课程中心重构设计文档
|
||||
3183d1d feat: 学校端课程中心优化 - 照搬教师端实现
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 遗留问题
|
||||
|
||||
1. **组件复用**:学校端和教师端的 CourseCenterView 代码高度相似,可考虑抽象为通用组件
|
||||
2. **学校端收藏**:暂未实现收藏功能
|
||||
3. **学校端创建校本**:暂未实现
|
||||
|
||||
---
|
||||
|
||||
*本日志创建于 2026-03-21*
|
||||
Loading…
Reference in New Issue
Block a user