196 lines
5.3 KiB
Markdown
196 lines
5.3 KiB
Markdown
# 管理师补充反馈功能最终修复方案
|
||
|
||
## 📋 业务流程
|
||
|
||
1. **陪伴员**:选择工单 → 填写反馈 → 保存到 `growth_record` 表
|
||
2. **管理师**:查看陪伴员反馈列表 → 选择一条反馈 → 添加补充内容 → 保存到 `growth_record.supplement` 字段
|
||
|
||
## 🔍 问题根源
|
||
|
||
### 数据流分析
|
||
|
||
```
|
||
陪伴员提交反馈
|
||
↓
|
||
growth_record 表(每日反馈)
|
||
↓
|
||
管理师查看反馈列表(从 growth_record 表查询)
|
||
↓
|
||
管理师点击"补充反馈"
|
||
↓
|
||
前端调用:PUT /api/manager/feedback/teacher/{id}
|
||
↓
|
||
后端接口:ManagerFeedbackController.updateTeacherFeedback()
|
||
↓
|
||
更新 growth_record.supplement 字段
|
||
```
|
||
|
||
### 之前的问题
|
||
|
||
1. **后端接口已修复**:`ManagerFeedbackController.updateTeacherFeedback()` 已改为查询 `growth_record` 表
|
||
2. **前端代码混乱**:尝试调用不存在的新接口 `/api/growth-record/update-supplement/{id}`
|
||
3. **参数名不统一**:前端传 `managerSupplement`,后端期望 `supplement`
|
||
|
||
## ✅ 最终修复方案
|
||
|
||
### 1. 后端修改(已完成)
|
||
|
||
**文件**:`peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.java`
|
||
|
||
**修改内容**:
|
||
- `updateTeacherFeedback` 方法查询 `growth_record` 表(不是 `work_order` 表)
|
||
- 兼容两种参数名:`supplement` 和 `managerSupplement`
|
||
- 返回错误信息改为"成长记录不存在"(而不是"工单不存在")
|
||
|
||
```java
|
||
@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`(后端已兼容)
|
||
|
||
```javascript
|
||
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. 重启后端
|
||
|
||
```bash
|
||
# 停止后端服务(Ctrl+C)
|
||
# 重新启动
|
||
cd peidu/backend
|
||
mvn spring-boot:run
|
||
```
|
||
|
||
### 2. 重新编译前端
|
||
|
||
```bash
|
||
cd peidu/uniapp
|
||
npm run dev:mp-weixin
|
||
```
|
||
|
||
### 3. 清除微信开发者工具缓存
|
||
|
||
1. 点击"清缓存" -> "清除全部缓存"
|
||
2. 重新编译
|
||
|
||
## 🧪 测试步骤
|
||
|
||
1. 管理师登录
|
||
2. 进入"反馈管理"
|
||
3. 切换到"陪伴员反馈"标签
|
||
4. 点击任意一条反馈
|
||
5. 点击"补充反馈"按钮
|
||
6. 输入补充内容(如:"111")
|
||
7. 点击"确定"
|
||
8. 验证:
|
||
- ✅ 提示"修改成功"
|
||
- ✅ 列表刷新
|
||
- ✅ 该反馈显示"已补充"徽章
|
||
|
||
## 📊 数据验证
|
||
|
||
### 查询补充内容
|
||
|
||
```sql
|
||
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;
|
||
```
|
||
|
||
## 🎯 关键点
|
||
|
||
1. **统一接口**:前后端都使用 `/api/manager/feedback/teacher/{id}` 接口
|
||
2. **统一参数**:参数名使用 `supplement`
|
||
3. **统一数据源**:都操作 `growth_record` 表
|
||
4. **不涉及工单**:管理师补充反馈不需要查询 `work_order` 表
|
||
|
||
## 📅 修复时间
|
||
2026-01-28
|
||
|
||
## 👤 修复人员
|
||
Kiro AI Assistant
|