wuzhen update
This commit is contained in:
1 parent
bab7b53074
commit
a2222f63cb
284 files changed
+48629
-3473
No files matched your search
@@ -0,0 +1,169 @@
|
||||
# 奖学金审核功能问题调试指南
|
||||
|
||||
## 🔍 问题描述
|
||||
奖学金申请审核时报错:"学生学号不能为空",需要通过日志定位具体问题环节。
|
||||
|
||||
## 📋 已添加的调试日志
|
||||
|
||||
### 前端日志 (浏览器控制台)
|
||||
- 🔍 `[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. 准备测试环境
|
||||
```bash
|
||||
# 确保前后端服务已启动
|
||||
# 前端:http://localhost
|
||||
# 后端:http://localhost:8080
|
||||
```
|
||||
|
||||
### 2. 打开浏览器开发者工具
|
||||
- 按F12打开开发者工具
|
||||
- 切换到"Console"标签页
|
||||
- 清空控制台日志
|
||||
|
||||
### 3. 执行审核操作
|
||||
1. 访问奖学金审核页面:`http://localhost/jcbt/scholarship/review`
|
||||
2. 找到一个状态为"已提交"的申请记录
|
||||
3. 点击"批准"按钮
|
||||
4. 观察前端控制台日志输出
|
||||
|
||||
### 4. 查看后端日志
|
||||
- 查看后端控制台输出
|
||||
- 重点关注包含 `🔍 [DEBUG]` 和 `❌ [ERROR]` 的日志
|
||||
|
||||
## 🔍 关键检查点
|
||||
|
||||
### 前端数据流检查
|
||||
1. **表格行数据** - 确认 `row` 包含完整的申请信息
|
||||
2. **获取详情响应** - 确认API返回完整数据
|
||||
3. **字段映射** - 确认 `studentNo`、`studentName` 等字段存在
|
||||
4. **发送数据** - 确认发送给后端的数据完整
|
||||
|
||||
### 后端数据处理检查
|
||||
1. **Controller接收** - 确认后端正确接收到数据
|
||||
2. **BO对象字段** - 检查BO中的关键字段值
|
||||
3. **Entity转换** - 检查BO转Entity后字段是否丢失
|
||||
4. **数据校验** - 定位具体在哪个字段校验时失败
|
||||
|
||||
## 📊 日志分析示例
|
||||
|
||||
### 正常情况的日志流程
|
||||
```
|
||||
前端:
|
||||
🔍 [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] 学生学号为空!
|
||||
```
|
||||
|
||||
## 🎯 问题定位策略
|
||||
|
||||
### 根据日志定位问题环节
|
||||
|
||||
1. **如果前端 `传入的row数据` 中 `studentNo` 为空**
|
||||
- 问题:表格数据源有问题
|
||||
- 解决:检查列表查询接口
|
||||
|
||||
2. **如果 `getScholarshipApplication 响应` 中 `studentNo` 为空**
|
||||
- 问题:详情查询接口返回数据不完整
|
||||
- 解决:检查后端详情查询逻辑
|
||||
|
||||
3. **如果前端数据正常,但后端BO中 `studentNo` 为空**
|
||||
- 问题:字段映射问题
|
||||
- 解决:检查前后端字段名是否一致
|
||||
|
||||
4. **如果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正常
|
||||
- [ ] 数据校验通过
|
||||
```
|
||||
|
||||
## 🚀 修复方案
|
||||
|
||||
根据日志分析结果,已实施以下修复:
|
||||
|
||||
1. **字段映射统一** - 前端统一使用 `status` 字段
|
||||
2. **BO类增强** - 添加 `status` 字段并与 `currentStatus` 同步
|
||||
3. **数据完整性** - 确保关键字段在整个流程中不丢失
|
||||
|
||||
测试完成后,如果问题仍然存在,请提供完整的日志信息以便进一步分析。
|
||||
Reference in new issue
Block a user