8.6 KiB
8.6 KiB
线上督学功能彻底修复完成
日期: 2026-01-31
问题: 点击线上督学下的各种督学类型时出现404错误
📋 问题分析
原始错误1 - 列表接口404
GET http://localhost:8089/api/online-supervision/list?pageNum=1&pageSize=10&level=mingshi 404
错误信息:未找到存在
原始错误2 - 详情接口404
GET http://localhost:8089/api/online-supervision/detail/10098 404
错误信息:未找到存在
根本原因
- 后端列表接口已存在 -
OnlineSupervisionListController已经实现了/api/online-supervision/list接口 - 后端缺少详情接口 - 没有实现
/api/online-supervision/detail/{id}接口 - 前端地址验证问题 - 订单创建页面对所有服务类型都要求填写服务地址
- 线上督学是纯线上服务 - 不需要填写服务地址
✅ 修复内容
1. 添加后端详情接口
文件: peidu/backend/src/main/java/com/peidu/controller/OnlineSupervisionListController.java
新增方法:
@ApiOperation("获取线上督学详情")
@GetMapping("/detail/{id}")
public Result<Teacher> getSupervisionDetail(@PathVariable Long id) {
log.info("📚 获取线上督学详情 - id: {}", id);
try {
Teacher teacher = teacherService.getTeacherDetail(id);
if (teacher == null) {
log.warn("⚠️ 督学不存在 - id: {}", id);
return Result.error("督学不存在");
}
// 检查是否已审核通过
if (teacher.getAuditStatus() != 1) {
log.warn("⚠️ 督学未审核通过 - id: {}, auditStatus: {}", id, teacher.getAuditStatus());
return Result.error("该督学暂不可用");
}
log.info("✅ 查询成功 - name: {}, level: {}", teacher.getName(), teacher.getTeacherLevel());
return Result.success(teacher);
} catch (Exception e) {
log.error("❌ 获取线上督学详情失败 - id: {}", id, e);
return Result.error("获取详情失败: " + e.getMessage());
}
}
2. 修改订单创建页面 - 地址验证逻辑
文件: peidu/uniapp/src/order-package/pages/order/create.vue
修改1:隐藏地址输入框
<!-- 服务地址 - 线上督学不需要地址 -->
<view class="section" v-if="serviceType !== 'online_supervision'">
<view class="section-title">服务地址</view>
<textarea class="address-input" v-model="serviceAddress" placeholder="请输入详细地址" maxlength="200"></textarea>
</view>
修改2:跳过地址验证
// 线上督学不需要服务地址
if (this.serviceType !== 'online_supervision' && !this.serviceAddress) {
uni.showToast({ title: '请输入服务地址', icon: 'none' })
return
}
3. 后端接口确认
控制器: OnlineSupervisionListController
| 接口 | 路径 | 参数 | 功能 |
|---|---|---|---|
| 列表接口 | /api/online-supervision/list |
level, pageNum, pageSize | 查询督学列表 |
| 详情接口 | /api/online-supervision/detail/{id} |
id | 查询督学详情 |
数据来源: teacher 表
- 筛选条件:
audit_status = 1(已审核通过) - 分类字段:
teacher_level(xueba/mingshi/quanke/yishu)
4. 重启服务
- ✅ 后端服务已重启(端口:8089)
- ✅ 前端缓存已清除
🎯 功能说明
线上督学完整流程
- 选择督学类型 - 学霸督学/名师督学/全科督学/艺术督学
- 查看督学列表 - 显示该类型的所有督学老师
- 查看督学详情 - 点击督学卡片查看详细信息
- 选择督学老师 - 点击"立即预约"
- 创建订单 - 选择学生、时间、时长(不需要填写地址)
- 提交订单 - 完成支付
督学类型说明
| 类型 | level值 | 说明 | 特点 |
|---|---|---|---|
| 学霸督学 | xueba | 国家重点大学优秀人才 | 清华北大、985/211、学习方法、高效提分 |
| 名师督学 | mingshi | 师范专业教学经验丰富 | 师范专业、教学经验、因材施教、耐心负责 |
| 全科督学 | quanke | 全科辅导,综合提升 | 全科辅导、综合提升、作业辅导、答疑解惑 |
| 艺术督学 | yishu | 艺术专业督学 | 音乐、美术、舞蹈、艺术素养 |
📝 测试步骤
-
启动服务
- 后端:
http://localhost:8089(已启动) - 小程序:在HBuilderX中运行
- 后端:
-
测试流程
首页 → 线上督学 → 选择类型(如:名师督学) → 查看列表 → 点击督学卡片 → 查看详情 → 点击"立即预约" → 填写订单信息(不需要地址) → 提交订单 → 完成支付 -
验证点
- ✅ 督学列表能正常加载
- ✅ 督学详情能正常显示
- ✅ 订单创建页面不显示地址输入框
- ✅ 可以正常提交订单
- ✅ 可以正常支付
🔍 相关文件
前端
peidu/uniapp/src/activity-package/pages/supervision/category.vue- 督学分类页面peidu/uniapp/src/activity-package/pages/supervision/list.vue- 督学列表页面peidu/uniapp/src/activity-package/pages/supervision/detail.vue- 督学详情页面peidu/uniapp/src/order-package/pages/order/create.vue- 订单创建页面(已修改)
后端
OnlineSupervisionListController.java- 线上督学控制器(已修改,新增detail接口)TeacherService.java- 教师服务(提供督学数据)TeacherController.java- 教师控制器(提供getTeacherDetail方法)
API
peidu/uniapp/src/api/index.js- supervisionApi配置
⚠️ 注意事项
- 数据来源 - 线上督学使用
teacher表的数据,不创建新的督学信息 - 审核状态 - 只显示
audit_status = 1(已审核通过)的教师 - 教师等级 - 通过
teacher_level字段区分不同类型的督学 - 纯线上服务 - 不需要填写服务地址,这是与其他服务的主要区别
- 数据映射 - 前端会自动映射teacher表的字段到督学显示格式
🔧 API接口详情
1. 获取督学列表
GET /api/online-supervision/list
参数:
- level: string (可选) - 督学类型 xueba/mingshi/quanke/yishu
- pageNum: integer (默认1) - 页码
- pageSize: integer (默认10) - 每页数量
返回:
{
"code": 200,
"message": "success",
"data": {
"records": [...], // 督学列表
"total": 100, // 总记录数
"size": 10, // 每页数量
"current": 1 // 当前页
}
}
2. 获取督学详情
GET /api/online-supervision/detail/{id}
参数:
- id: long (必填) - 督学ID(即teacher表的id)
返回:
{
"code": 200,
"message": "success",
"data": {
"id": 10098,
"name": "张老师",
"teacherLevel": "mingshi",
"subjects": "数学,英语",
"hourlyRate": 150.00,
"education": "本科",
"photo": "http://...",
"intro": "...",
"auditStatus": 1,
...
}
}
✨ 下一步
如果列表为空,需要添加测试数据:
- 在后台管理系统中添加教师
- 设置教师等级 -
teacher_level字段设置为 xueba/mingshi/quanke/yishu - 审核通过 -
audit_status设置为 1 - 设置必要信息 - 姓名、科目、时薪、简介等
或者执行SQL添加测试数据:
-- 添加测试督学数据
INSERT INTO teacher (name, teacher_level, subjects, hourly_rate, education, intro, audit_status, phone)
VALUES
('张学霸', 'xueba', '数学,物理', 200.00, '清华大学本科', '清华大学优秀毕业生,擅长数学物理', 1, '13800000001'),
('李名师', 'mingshi', '语文,英语', 150.00, '北京师范大学', '10年教学经验,因材施教', 1, '13800000002'),
('王全科', 'quanke', '全科', 120.00, '本科', '全科辅导专家', 1, '13800000003'),
('赵艺术', 'yishu', '钢琴,美术', 180.00, '中央音乐学院', '艺术教育专家', 1, '13800000004');
📊 修复总结
| 问题 | 状态 | 说明 |
|---|---|---|
| 列表接口404 | ✅ 已解决 | 后端接口已存在,正常工作 |
| 详情接口404 | ✅ 已解决 | 新增detail接口 |
| 地址必填问题 | ✅ 已解决 | 线上督学不需要地址 |
| 订单创建流程 | ✅ 已完善 | 支持线上督学类型 |
| 后端服务 | ✅ 已重启 | 正常运行中 |
🎉 功能已彻底修复!
现在你可以:
- 在HBuilderX中重新编译运行小程序
- 在微信开发者工具中清除缓存
- 测试完整的线上督学流程:选择类型 → 查看列表 → 查看详情 → 预约 → 支付
如果还有任何问题,请告诉我!