peixue-dev/Archive/[一次性]管理师补充反馈最终修复方案-2026-01-28.md

231 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 管理师补充反馈最终修复方案
## 📋 问题现状
管理师点击"补充反馈"时,提示"工单不存在"400错误
## 🔍 根本原因
1. **前端调用接口**`PUT /api/manager/feedback/teacher/{id}`,参数 `{supplement: "..."}`
2. **后端接口实现**:在 `ManagerFeedbackController.updateTeacherFeedback` 方法中
3. **问题**:后端修改后没有重启,或者代码被覆盖了
## ✅ 完整修复方案
### 1. 后端修改
**文件**`peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.java`
**修改内容**
```java
/**
* 修改补充陪伴员反馈
*/
@PutMapping("/teacher/{id}")
public Result<String> updateTeacherFeedback(
@PathVariable Long id,
@RequestBody Map<String, Object> params
) {
try {
log.info("=== 管理师补充反馈 ===");
log.info("id: {}, params: {}", id, params);
// ✅ 修复:查询 growth_record 表而不是 work_order 表
GrowthRecord growthRecord = growthRecordService.getById(id);
if (growthRecord == null) {
log.error("成长记录不存在id: {}", id);
return Result.error("成长记录不存在");
}
// ✅ 兼容两种参数名supplement 和 managerSupplement
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) {
log.info("补充反馈成功id: {}", id);
return Result.success("修改成功");
} else {
log.error("补充反馈失败id: {}", id);
return Result.error("修改失败");
}
} catch (Exception e) {
log.error("补充反馈异常", e);
return Result.error("修改失败:" + e.getMessage());
}
}
```
**关键修改点**
1. ✅ 查询 `growth_record` 表(不是 `work_order` 表)
2. ✅ 兼容 `supplement``managerSupplement` 两种参数名
3. ✅ 添加详细的日志输出
4. ✅ 添加参数验证
### 2. 前端代码
**文件**`peidu/uniapp/src/manager-package/pages/manager/feedback.vue`
**当前代码**(无需修改):
```javascript
async submitEdit() {
if (!this.editForm.supplement.trim()) {
uni.showToast({ title: '请输入补充内容', icon: 'none' })
return
}
try {
uni.showLoading({ title: '提交中...' })
console.log('[补充反馈] 当前反馈对象:', this.currentFeedback)
console.log('[补充反馈] 反馈ID:', this.currentFeedback.id)
console.log('[补充反馈] 补充内容:', this.editForm.supplement)
// 调用 managerApi.updateTeacherFeedback
const res = await managerApi.updateTeacherFeedback(this.currentFeedback.id, {
supplement: this.editForm.supplement
})
console.log('[补充反馈] API响应:', res)
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()
}
}
```
**说明**:前端代码已经正确,调用 `/api/manager/feedback/teacher/{id}` 接口,参数名为 `supplement`
### 3. API定义
**文件**`peidu/uniapp/src/api/index.js`
**当前代码**(无需修改):
```javascript
// 修改补充陪伴员反馈
updateTeacherFeedback(id, params) {
return request.put(`/api/manager/feedback/teacher/${id}`, params)
},
```
## 🚀 执行步骤
### 步骤1确认后端代码
检查文件:`peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.java`
确认 `updateTeacherFeedback` 方法包含以下关键代码:
```java
GrowthRecord growthRecord = growthRecordService.getById(id);
if (growthRecord == null) {
return Result.error("成长记录不存在");
}
```
### 步骤2重启后端服务
```bash
# 停止当前后端Ctrl+C
# 重新启动
cd peidu/backend
mvn clean spring-boot:run
```
### 步骤3等待启动完成
看到类似日志表示启动成功:
```
Started PeiduApplication in X.XXX seconds
```
### 步骤4测试功能
1. 在管理师界面进入"反馈管理"
2. 点击任意一条反馈的"补充反馈"
3. 输入补充内容
4. 点击"确定"
5. 查看是否提示"修改成功"
### 步骤5查看后端日志
后端应该输出类似日志:
```
=== 管理师补充反馈 ===
id: 123, params: {supplement=测试内容}
补充反馈成功id: 123
```
如果看到"成长记录不存在"说明传入的ID有问题。
## 🔍 故障排查
### 问题1仍然提示"工单不存在"
**原因**:后端代码没有更新或没有重启
**解决**
1. 确认后端代码已修改
2. 完全停止后端进程
3. 使用 `mvn clean spring-boot:run` 重新编译并启动
### 问题2提示"成长记录不存在"
**原因**传入的ID不是 `growth_record` 表的ID
**解决**
1. 检查前端传递的 `this.currentFeedback.id` 是否正确
2. 在数据库中查询:`SELECT * FROM growth_record WHERE id = ?`
### 问题3前端没有调用接口
**原因**:前端代码有错误或编译问题
**解决**
1. 重新编译前端:`npm run dev:mp-weixin`
2. 清除微信开发者工具缓存
3. 查看控制台是否有JavaScript错误
## 📝 验证清单
- [ ] 后端代码已修改(查询 `growth_record` 表)
- [ ] 后端已重启
- [ ] 后端启动成功(无报错)
- [ ] 前端代码正确(调用 `managerApi.updateTeacherFeedback`
- [ ] 测试功能(点击"补充反馈"
- [ ] 查看后端日志(确认接口被调用)
- [ ] 验证数据库(`growth_record` 表的 `supplement` 字段已更新)
## 📅 修复时间
2026-01-28
## 👤 修复人员
Kiro AI Assistant