5.0 KiB
5.0 KiB
奖学金审核功能问题调试指南
🔍 问题描述
奖学金申请审核时报错:"学生学号不能为空",需要通过日志定位具体问题环节。
📋 已添加的调试日志
前端日志 (浏览器控制台)
- 🔍
[DEBUG] handleApprove 开始执行- 批准操作开始 - 🔍
[DEBUG] 传入的row数据- 表格行数据 - 🔍
[DEBUG] getScholarshipApplication 响应- 获取详情接口响应 - 🔍
[DEBUG] 提取的fullData- 从响应中提取的完整数据 - 🔍
[DEBUG] 准备更新的数据 updateData- 准备发送给后端的数据 - 🔍
[DEBUG] 关键字段检查- 检查关键字段是否存在 - 🔍
[DEBUG] updateScholarshipApplication 响应- 更新接口响应 - ❌
[ERROR] handleApprove 出错- 如果有错误
后端日志 (后端控制台)
- 🔍
[DEBUG] Controller.edit 开始执行- Controller接收请求 - 🔍
[DEBUG] 接收到的BO对象- 后端接收到的数据 - 🔍
[DEBUG] Service.updateByBo 开始执行- Service层开始处理 - 🔍
[DEBUG] 转换后的Entity对象- BO转Entity后的数据 - 🔍
[DEBUG] validEntityBeforeSave 开始执行- 数据校验开始 - 🔍
[DEBUG] 校验学生学号- 具体校验每个字段 - ❌
[ERROR] 学生学号为空!- 如果校验失败
🧪 测试步骤
1. 准备测试环境
# 确保前后端服务已启动
# 前端:http://localhost
# 后端:http://localhost:8080
2. 打开浏览器开发者工具
- 按F12打开开发者工具
- 切换到"Console"标签页
- 清空控制台日志
3. 执行审核操作
- 访问奖学金审核页面:
http://localhost/jcbt/scholarship/review - 找到一个状态为"已提交"的申请记录
- 点击"批准"按钮
- 观察前端控制台日志输出
4. 查看后端日志
- 查看后端控制台输出
- 重点关注包含
🔍 [DEBUG]和❌ [ERROR]的日志
🔍 关键检查点
前端数据流检查
- 表格行数据 - 确认
row包含完整的申请信息 - 获取详情响应 - 确认API返回完整数据
- 字段映射 - 确认
studentNo、studentName等字段存在 - 发送数据 - 确认发送给后端的数据完整
后端数据处理检查
- Controller接收 - 确认后端正确接收到数据
- BO对象字段 - 检查BO中的关键字段值
- Entity转换 - 检查BO转Entity后字段是否丢失
- 数据校验 - 定位具体在哪个字段校验时失败
📊 日志分析示例
正常情况的日志流程
前端:
🔍 [DEBUG] handleApprove 开始执行
🔍 [DEBUG] 传入的row数据: {"id": 123, "studentNo": "2021001", "studentName": "张三", ...}
🔍 [DEBUG] 关键字段检查:
- id: 123
- studentNo: 2021001
- studentName: 张三
- status: APPROVED
后端:
🔍 [DEBUG] Controller.edit 开始执行
🔍 [DEBUG] BO关键字段检查:
- id: 123
- studentNo: 2021001
- studentName: 张三
- status: APPROVED
🔍 [DEBUG] 数据库更新结果: true
异常情况的日志流程
前端:
🔍 [DEBUG] 准备更新的数据 updateData: {"id": 123, "studentNo": null, ...}
❌ [ERROR] handleApprove 出错: 请求失败
后端:
🔍 [DEBUG] BO关键字段检查:
- studentNo: null ← 发现问题
❌ [ERROR] 学生学号为空!
🎯 问题定位策略
根据日志定位问题环节
-
如果前端
传入的row数据中studentNo为空- 问题:表格数据源有问题
- 解决:检查列表查询接口
-
如果
getScholarshipApplication 响应中studentNo为空- 问题:详情查询接口返回数据不完整
- 解决:检查后端详情查询逻辑
-
如果前端数据正常,但后端BO中
studentNo为空- 问题:字段映射问题
- 解决:检查前后端字段名是否一致
-
如果BO正常,但Entity中
studentNo为空- 问题:BO到Entity转换问题
- 解决:检查MapStruct映射配置
📝 测试报告模板
请按以下格式提供测试结果:
### 测试环境
- 前端地址:http://localhost
- 后端地址:http://localhost:8080
- 测试时间:2025-01-XX XX:XX:XX
### 前端日志 (关键部分)
🔍 [DEBUG] 传入的row数据: {...} 🔍 [DEBUG] 关键字段检查:
- id: XXX
- studentNo: XXX
- studentName: XXX
### 后端日志 (关键部分)
🔍 [DEBUG] BO关键字段检查:
- id: XXX
- studentNo: XXX
- studentName: XXX
### 错误信息
❌ [ERROR] 具体错误信息
### 问题定位
- [ ] 前端表格数据正常
- [ ] 详情接口响应正常
- [ ] 前端发送数据正常
- [ ] 后端接收数据正常
- [ ] BO转Entity正常
- [ ] 数据校验通过
🚀 修复方案
根据日志分析结果,已实施以下修复:
- 字段映射统一 - 前端统一使用
status字段 - BO类增强 - 添加
status字段并与currentStatus同步 - 数据完整性 - 确保关键字段在整个流程中不丢失
测试完成后,如果问题仍然存在,请提供完整的日志信息以便进一步分析。