# 套餐和课程数据前端显示问题修复

## 问题描述
数据库中有很多套餐和课程包数据，但超管端、学校端、老师端页面上没有显示数据。接口有返回数据，但前端无法正确解析显示。

## 问题原因
1. **字段格式不匹配**：后端 `gradeLevels` 存储的是逗号分隔字符串，前端期望数组格式
2. **数据结构不匹配**：学校端期望的数据结构与后端返回不一致

## 修复内容

### 后端修改

#### 1. CoursePackageResponse.java
- `gradeLevels`: `String` → `String[]`
- 新增 `courses` 字段（包含的课程列表）
- 新增 `startDate`、`endDate` 字段（租户套餐信息）

#### 2. CoursePackageService.java
- `toResponse()`: 添加 `gradeLevels` 转换和 `courses` 填充逻辑
- `findTenantPackages()`: 返回 `CoursePackageResponse` 列表，包含租户套餐信息

#### 3. CoursePackageMapper.java
- 添加 MapStruct 类型转换方法处理 `String` ↔ `String[]`

#### 4. SchoolPackageController.java
- 导入 `CoursePackageResponse`
- 修改返回类型

### 前端修改

#### 1. src/views/school/PackageView.vue
- 修改数据访问路径：`item.package.xxx` → `item.xxx`
- 更新类型定义

#### 2. src/api/school.ts
- 更新 `CoursePackage` 接口定义
- 修改 API 返回类型

## 测试验证
1. 启动后端服务：`mvn spring-boot:run`
2. 启动前端服务：`npm run dev`
3. 访问超管端套餐列表页：`/admin/packages`
4. 访问学校端套餐视图页：`/school/package`

## 相关文件
- 后端：
  - `reading-platform-java/src/main/java/com/reading/platform/dto/response/CoursePackageResponse.java`
  - `reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java`
  - `reading-platform-java/src/main/java/com/reading/platform/common/mapper/CoursePackageMapper.java`
  - `reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolPackageController.java`

- 前端：
  - `reading-platform-frontend/src/views/school/PackageView.vue`
  - `reading-platform-frontend/src/api/school.ts`

## 修复日期
2026-03-14
