kindergarten_java/docs/dev-logs/2026-03-24.md
En 53273ab6e0 feat: 租户详情优化 - 添加统计字段,移除最近列表查询
后端变更:
- TenantResponse 添加 classCount、lessonCount 字段用于统计显示
- TenantServiceImpl 添加 getTenantDetail() 和 buildTenantResponse() 方法
- 移除最近教师/学生/班级列表查询逻辑(性能优化)
- 新增 StudentClassStatus 枚举类

前端变更:
- TenantListView.vue 更新详情展示,使用统计数字替代列表
- admin.ts 更新 TenantDetail 类型定义

优化:
- ClassServiceImpl 和 StudentServiceImpl 代码优化

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-24 11:34:25 +08:00

2.6 KiB

开发日志 - 2026-03-24

工作内容

租户管理详情页字段补充

背景

超管端租户管理查看详情时,前端页面期望展示以下数据:

  1. 使用统计:教师数、学生数、班级数授课数
  2. 最近教师列表(姓名、手机号、状态)
  3. 最近学生列表(姓名、性别、阅读数)
  4. 最近班级列表(名称、年级、学生数)

修改内容

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 接口:
    • 添加 classCountlessonCount 字段
    • students[].classId 改为可选字段(因为学生班级关联是可选的)

5. 前端详情组件更新 (TenantListView.vue)

  • 修改统计数据显示使用 detailData.classCountdetailData.lessonCount

技术细节

  1. 学生班级 ID 获取:由于学生实体没有直接的 classId 字段,通过 student_class_history 关联表查询学生当前所在的班级 ID。

  2. 班级学生数统计:通过 student_class_history 表查询每个班级的 ACTIVE 状态学生数量。

  3. 学生阅读次数统计:通过 student_record 表统计每个学生的记录数。

  4. 教师授课次数统计:通过 schedule_plan 表统计每个教师的排课数量。

验证步骤

  1. 后端编译成功
  2. 启动服务测试(待用户验证)

文件清单

文件 修改内容
TenantResponse.java 新增字段和内部类
TenantServiceImpl.java 新增方法和 Mapper 依赖
AdminTenantController.java 修改详情查询方法
admin.ts 扩展类型定义
TenantListView.vue 更新详情展示