# 学校端家长管理"选择孩子"列表字段完善计划

## 问题背景

学校端家长管理页面中的"选择孩子"弹窗列表（用于将学生关联到家长）缺少两个关键字段的显示：
1. **性别** (gender) - 学生性别
2. **所属班级** (className) - 学生所在班级名称

## 问题分析

通过代码审查发现：

### 1. 前端代码 (`ParentListView.vue`)
- 第 597-601 行定义了表格列，期望显示 `gender` 和 `className`：
```typescript
const studentTableColumns = [
  { title: '姓名', dataIndex: 'name', key: 'name', width: 120 },
  { title: '性别', dataIndex: 'gender', key: 'gender', width: 80 },
  { title: '班级', dataIndex: 'className', key: 'className', width: 120 },
];
```

### 2. 后端代码 (`SchoolStudentController.java`)
- 第 89-119 行的 `getStudentPage` 方法返回学生列表
- 目前只设置了 `classId`，未设置 `className`

### 3. DTO (`StudentResponse.java`)
- 有 `gender` 字段（第 29 行）✅
- 有 `classId` 字段（第 56 行）✅
- **缺少 `className` 字段** ❌

### 4. 实体类 (`Student.java`)
- 有 `gender` 字段（第 26 行）✅

## 根本原因

1. `StudentResponse` DTO 缺少 `className` 字段
2. Controller 中只查询和设置了 `classId`，没有查询班级名称并设置 `className`

## 修改方案

### 1. 添加 `className` 字段到 `StudentResponse`

**文件**: `reading-platform-java/src/main/java/com/reading/platform/dto/response/StudentResponse.java`

在 `classId` 字段后添加 `className` 字段：
```java
@Schema(description = "所在班级 ID")
private Long classId;

@Schema(description = "所在班级名称")
private String className;
```

### 2. 在 Controller 中设置 `className`

**文件**: `reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolStudentController.java`

修改 `getStudentPage` 方法（第 100-118 行）：
```java
for (StudentResponse vo : voList) {
    // 设置班级
    var clazz = classService.getPrimaryClassByStudentId(vo.getId());
    vo.setClassId(clazz != null ? clazz.getId() : null);
    vo.setClassName(clazz != null ? clazz.getName() : null);  // 新增

    // ... 其余代码不变
}
```

同样修改 `getStudent` 方法（第 66-86 行），添加 `className` 的设置。

### 3. 验证 `gender` 字段

`gender` 字段应该已通过 MapStruct 自动映射。如果前端仍不显示，需要检查：
- 数据库中 `gender` 字段是否有值
- Mapper 是否正确映射了该字段

## 关键文件列表

| 文件路径 | 修改类型 | 说明 |
|---------|---------|------|
| `reading-platform-java/src/main/java/com/reading/platform/dto/response/StudentResponse.java` | 修改 | 添加 `className` 字段 |
| `reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolStudentController.java` | 修改 | 设置 `className` 字段值 |

## 验证步骤

1. 启动后端服务
2. 进入学校端家长管理页面
3. 点击任意家长的"孩子"按钮打开管理弹窗
4. 点击"添加孩子"打开选择学生弹窗
5. 验证表格中是否正确显示：
   - 性别列（男/女）
   - 班级列（班级名称）

## 风险评估

- **低风险**：只是添加一个返回字段，不影响现有功能
- **向后兼容**：前端已准备好接收这些字段，不会破坏现有功能

