5.3 KiB
5.3 KiB
管理师补充反馈功能最终修复方案
📋 业务流程
- 陪伴员:选择工单 → 填写反馈 → 保存到
growth_record表 - 管理师:查看陪伴员反馈列表 → 选择一条反馈 → 添加补充内容 → 保存到
growth_record.supplement字段
🔍 问题根源
数据流分析
陪伴员提交反馈
↓
growth_record 表(每日反馈)
↓
管理师查看反馈列表(从 growth_record 表查询)
↓
管理师点击"补充反馈"
↓
前端调用:PUT /api/manager/feedback/teacher/{id}
↓
后端接口:ManagerFeedbackController.updateTeacherFeedback()
↓
更新 growth_record.supplement 字段
之前的问题
- 后端接口已修复:
ManagerFeedbackController.updateTeacherFeedback()已改为查询growth_record表 - 前端代码混乱:尝试调用不存在的新接口
/api/growth-record/update-supplement/{id} - 参数名不统一:前端传
managerSupplement,后端期望supplement
✅ 最终修复方案
1. 后端修改(已完成)
文件:peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.java
修改内容:
updateTeacherFeedback方法查询growth_record表(不是work_order表)- 兼容两种参数名:
supplement和managerSupplement - 返回错误信息改为"成长记录不存在"(而不是"工单不存在")
@PutMapping("/teacher/{id}")
public Result<String> updateTeacherFeedback(
@PathVariable Long id,
@RequestBody Map<String, Object> params
) {
try {
// ✅ 查询 growth_record 表
GrowthRecord growthRecord = growthRecordService.getById(id);
if (growthRecord == null) {
return Result.error("成长记录不存在");
}
// ✅ 兼容两种参数名
String supplement = null;
if (params.containsKey("managerSupplement")) {
supplement = params.get("managerSupplement").toString();
} else if (params.containsKey("supplement")) {
supplement = params.get("supplement").toString();
}
if (supplement == null || supplement.trim().isEmpty()) {
return Result.error("补充内容不能为空");
}
growthRecord.setSupplement(supplement);
growthRecord.setUpdateTime(LocalDateTime.now());
boolean updated = growthRecordService.updateById(growthRecord);
if (updated) {
return Result.success("修改成功");
} else {
return Result.error("修改失败");
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("修改失败:" + e.getMessage());
}
}
2. 前端修改(已完成)
文件:peidu/uniapp/src/manager-package/pages/manager/feedback.vue
修改内容:
- 简化
submitEdit方法 - 直接使用
managerApi.updateTeacherFeedback()方法 - 参数名使用
supplement(后端已兼容)
async submitEdit() {
if (!this.editForm.supplement.trim()) {
uni.showToast({ title: '请输入补充内容', icon: 'none' })
return
}
try {
uni.showLoading({ title: '提交中...' })
// 🔥 使用 managerApi 的 updateTeacherFeedback 方法
const res = await managerApi.updateTeacherFeedback(this.currentFeedback.id, {
supplement: this.editForm.supplement
})
if (res && (res.code === 200 || res.code === '200')) {
uni.showToast({ title: '修改成功', icon: 'success' })
this.showEditModal = false
this.page = 1
this.list = []
this.loadList()
} else {
const errorMsg = res?.message || res?.msg || '修改失败'
uni.showToast({ title: errorMsg, icon: 'none' })
}
} catch (error) {
console.error('[补充反馈] 修改异常:', error)
const errorMsg = error?.message || error?.msg || error?.data?.message || '修改失败'
uni.showToast({ title: errorMsg, icon: 'none' })
} finally {
uni.hideLoading()
}
}
🚀 部署步骤
1. 重启后端
# 停止后端服务(Ctrl+C)
# 重新启动
cd peidu/backend
mvn spring-boot:run
2. 重新编译前端
cd peidu/uniapp
npm run dev:mp-weixin
3. 清除微信开发者工具缓存
- 点击"清缓存" -> "清除全部缓存"
- 重新编译
🧪 测试步骤
- 管理师登录
- 进入"反馈管理"
- 切换到"陪伴员反馈"标签
- 点击任意一条反馈
- 点击"补充反馈"按钮
- 输入补充内容(如:"111")
- 点击"确定"
- 验证:
- ✅ 提示"修改成功"
- ✅ 列表刷新
- ✅ 该反馈显示"已补充"徽章
📊 数据验证
查询补充内容
SELECT
id,
content AS '陪伴员反馈',
supplement AS '管理师补充',
create_time AS '创建时间',
update_time AS '更新时间'
FROM growth_record
WHERE supplement IS NOT NULL
ORDER BY update_time DESC
LIMIT 10;
🎯 关键点
- 统一接口:前后端都使用
/api/manager/feedback/teacher/{id}接口 - 统一参数:参数名使用
supplement - 统一数据源:都操作
growth_record表 - 不涉及工单:管理师补充反馈不需要查询
work_order表
📅 修复时间
2026-01-28
👤 修复人员
Kiro AI Assistant