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

6.5 KiB
Raw Permalink Blame History

管理师补充反馈最终修复方案

📋 问题现状

管理师点击"补充反馈"时,提示"工单不存在"400错误

🔍 根本原因

  1. 前端调用接口PUT /api/manager/feedback/teacher/{id},参数 {supplement: "..."}
  2. 后端接口实现:在 ManagerFeedbackController.updateTeacherFeedback 方法中
  3. 问题:后端修改后没有重启,或者代码被覆盖了

完整修复方案

1. 后端修改

文件peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.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. 兼容 supplementmanagerSupplement 两种参数名
  3. 添加详细的日志输出
  4. 添加参数验证

2. 前端代码

文件peidu/uniapp/src/manager-package/pages/manager/feedback.vue

当前代码(无需修改):

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

当前代码(无需修改):

// 修改补充陪伴员反馈
updateTeacherFeedback(id, params) {
  return request.put(`/api/manager/feedback/teacher/${id}`, params)
},

🚀 执行步骤

步骤1确认后端代码

检查文件:peidu/backend/src/main/java/com/peidu/controller/ManagerFeedbackController.java

确认 updateTeacherFeedback 方法包含以下关键代码:

GrowthRecord growthRecord = growthRecordService.getById(id);
if (growthRecord == null) {
    return Result.error("成长记录不存在");
}

步骤2重启后端服务

# 停止当前后端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