后端变更: - TenantResponse 添加 classCount、lessonCount 字段用于统计显示 - TenantServiceImpl 添加 getTenantDetail() 和 buildTenantResponse() 方法 - 移除最近教师/学生/班级列表查询逻辑(性能优化) - 新增 StudentClassStatus 枚举类 前端变更: - TenantListView.vue 更新详情展示,使用统计数字替代列表 - admin.ts 更新 TenantDetail 类型定义 优化: - ClassServiceImpl 和 StudentServiceImpl 代码优化 Co-Authored-By: Claude <noreply@anthropic.com>
2.6 KiB
2.6 KiB
开发日志 - 2026-03-24
工作内容
租户管理详情页字段补充
背景
超管端租户管理查看详情时,前端页面期望展示以下数据:
- 使用统计:教师数、学生数、班级数、授课数
- 最近教师列表(姓名、手机号、状态)
- 最近学生列表(姓名、性别、阅读数)
- 最近班级列表(名称、年级、学生数)
修改内容
1. 后端 DTO 扩展 (TenantResponse.java)
- 新增
classCount字段 - 班级数量 - 新增
lessonCount字段 - 授课数量 - 新增
teachers字段 - 最近教师列表(TeacherItem内部类) - 新增
students字段 - 最近学生列表(StudentItem内部类) - 新增
classes字段 - 最近班级列表(ClassItem内部类)
2. 后端 Service 层修改 (TenantServiceImpl.java)
- 新增
getTenantDetail()方法 - 返回完整的租户详情响应 - 新增
buildTenantResponse()方法 - 构建包含统计信息和列表的响应数据 - 新增 Mapper 依赖注入:
ClazzMapper- 班级数据访问StudentRecordMapper- 学生阅读记录访问StudentClassHistoryMapper- 学生班级关联访问
3. 后端 Controller 层修改 (AdminTenantController.java)
- 修改
getTenant()方法调用tenantService.getTenantDetail(id)返回完整详情
4. 前端类型定义更新 (admin.ts)
- 扩展
TenantDetail接口:- 添加
classCount和lessonCount字段 students[].classId改为可选字段(因为学生班级关联是可选的)
- 添加
5. 前端详情组件更新 (TenantListView.vue)
- 修改统计数据显示使用
detailData.classCount和detailData.lessonCount
技术细节
-
学生班级 ID 获取:由于学生实体没有直接的
classId字段,通过student_class_history关联表查询学生当前所在的班级 ID。 -
班级学生数统计:通过
student_class_history表查询每个班级的 ACTIVE 状态学生数量。 -
学生阅读次数统计:通过
student_record表统计每个学生的记录数。 -
教师授课次数统计:通过
schedule_plan表统计每个教师的排课数量。
验证步骤
- ✅ 后端编译成功
- ⏳ 启动服务测试(待用户验证)
文件清单
| 文件 | 修改内容 |
|---|---|
TenantResponse.java |
新增字段和内部类 |
TenantServiceImpl.java |
新增方法和 Mapper 依赖 |
AdminTenantController.java |
修改详情查询方法 |
admin.ts |
扩展类型定义 |
TenantListView.vue |
更新详情展示 |