231 lines
6.5 KiB
Markdown
231 lines
6.5 KiB
Markdown
|
|
# 管理师补充反馈最终修复方案
|
|||
|
|
|
|||
|
|
## 📋 问题现状
|
|||
|
|
|
|||
|
|
管理师点击"补充反馈"时,提示"工单不存在"(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
|