7.0 KiB
7.0 KiB
奖学金申请列表显示问题排查手册
📅 创建时间
- 日期: 2025-01-26 23:50:00
- 适用场景: 前台奖学金申请列表页面无法显示数据
- 操作人: 系统管理员
🔍 问题现象
- 访问前台奖学金申请列表页面
- 页面加载正常,但列表中没有显示任何申请记录
- 可能显示"暂无数据"或空白列表
📋 排查步骤
步骤1: 检查浏览器网络请求 ⭐⭐⭐
重要性: ⭐⭐⭐ (最重要,优先检查)
-
打开浏览器开发者工具
- 按
F12或右键选择"检查" - 切换到
Network(网络) 标签
- 按
-
刷新奖学金申请列表页面
- 观察网络请求
- 查找
/jcbt/scholarshipApplication/list请求
-
检查API请求状态
✅ 状态码 200: API调用成功 ❌ 状态码 403: 权限不足 → 跳转到步骤4 ❌ 状态码 401: 未登录 → 跳转到步骤3 ❌ 状态码 500: 服务器错误 → 检查后端日志 -
检查响应数据
- 点击该请求,查看
Response标签 - 检查返回的数据结构:
{ "code": 200, "msg": "操作成功", "rows": [], // 如果为空数组,说明查询到0条数据 "total": 0 }
- 点击该请求,查看
步骤2: 检查用户登录状态 ⭐⭐
重要性: ⭐⭐ (如果步骤1发现401错误)
-
确认是否已登录
- 检查页面顶部是否显示用户信息
- 查看浏览器本地存储中是否有Token
-
重新登录
- 退出当前账号
- 使用正确的账号密码重新登录
- 再次访问申请列表页面
步骤3: 检查用户权限配置 ⭐⭐
重要性: ⭐⭐ (如果步骤1发现403错误)
-
确认当前登录用户角色
- 记录当前登录的用户名和角色
-
检查权限配置
- 登录后台管理系统
- 进入 系统管理 → 角色管理
- 找到当前用户的角色,点击"修改"
- 在权限配置中确认是否勾选了:
☑️ 家长综合信息服务平台 ☑️ 学生奖学金管理 ☑️ 奖学金申请记录 ☑️ 奖学金申请记录查询 (jcbt:scholarshipApplication:list)
-
如果权限缺失
- 勾选相应权限
- 点击"提交"保存
- 让用户重新登录前台系统
步骤4: 检查数据库中的实际数据 ⭐⭐⭐
重要性: ⭐⭐⭐ (如果API返回空数组)
方法A: 使用数据库管理工具
-- 1. 检查总记录数
SELECT COUNT(*) as total_count FROM jcbt_scholarship_application;
-- 2. 检查未删除的记录数
SELECT COUNT(*) as active_count FROM jcbt_scholarship_application WHERE deleted = 0;
-- 3. 检查申请类型分布
SELECT application_type, COUNT(*) as count
FROM jcbt_scholarship_application
GROUP BY application_type;
-- 4. 检查最近的5条记录
SELECT id, student_name, application_type, status, deleted, create_time
FROM jcbt_scholarship_application
ORDER BY create_time DESC
LIMIT 5;
方法B: 使用预制检查脚本
# 在项目根目录执行
mysql -u数据库用户名 -p数据库密码 hzdyjs_xg < docs/设计文档/database/奖学金申请数据检查脚本.sql
检查结果分析:
- 总记录数为0: 说明数据库中确实没有申请数据 → 跳转到步骤6
- 有记录但deleted=1: 说明数据被软删除了 → 跳转到步骤7
- 有记录但application_type='RECOMMEND': 说明数据修复脚本没执行 → 跳转到步骤5
步骤5: 执行数据修复脚本 ⭐⭐
重要性: ⭐⭐ (如果发现RECOMMEND类型数据)
# 执行申请类型修复脚本
mysql -u数据库用户名 -p数据库密码 hzdyjs_xg < docs/设计文档/database/奖学金申请列表数据修复脚本.sql
# 重启后端服务
cd backend
mvn clean compile
# 然后重启应用服务
步骤6: 创建测试数据 ⭐
重要性: ⭐ (如果数据库确实没有数据)
-- 创建测试申请记录
INSERT INTO jcbt_scholarship_application (
id, batch_id, scholarship_type_id, student_code, student_name,
student_id, dept_id, class_id, application_type, status,
deleted, tenant_id, create_time, create_by
) VALUES (
UNIX_TIMESTAMP() * 1000, 1, 1, 'TEST001', '测试学生',
1, 100, 200, 'TEACHER_RECOMMEND', 'PENDING',
0, 1, NOW(), 1
);
步骤7: 检查多租户配置 ⭐
重要性: ⭐ (如果数据存在但tenant_id不匹配)
-
确认当前用户的租户ID
- 在前台系统中查看用户信息
- 或在数据库中查询:
SELECT tenant_id FROM sys_user WHERE user_name = '当前登录用户名';
-
检查申请数据的租户ID
SELECT DISTINCT tenant_id, COUNT(*) as count FROM jcbt_scholarship_application WHERE deleted = 0 GROUP BY tenant_id; -
如果租户ID不匹配
- 联系系统管理员调整数据或用户配置
步骤8: 检查前端查询参数 ⭐
重要性: ⭐ (如果上述都正常但仍无数据)
在浏览器控制台中检查实际发送的查询参数:
// 在申请列表页面的控制台中执行
console.log('查询参数:', window.location.search);
常见问题:
- 状态过滤条件过于严格
- 时间范围过滤导致数据被过滤掉
- 其他业务字段过滤条件
🎯 快速检查清单
✅ 5分钟快速检查
- 浏览器F12检查API请求状态码是否为200
- 检查API响应中rows数组是否为空
- 确认用户已正常登录
- 确认用户有查询权限
✅ 10分钟深入检查
- 数据库中确实存在申请记录且deleted=0
- 申请记录的application_type为正确值(非RECOMMEND)
- 申请记录的tenant_id与当前用户匹配
- 后端服务已重启且代码修复生效
🚨 常见问题和解决方案
问题1: API返回403权限不足
原因: 用户缺少查询权限
解决: 在角色管理中为用户角色添加 jcbt:scholarshipApplication:list 权限
问题2: API返回空数组但数据库有数据
原因: 可能是申请类型值错误(RECOMMEND vs TEACHER_RECOMMEND) 解决: 执行数据修复脚本
问题3: 数据库连接失败
原因: 数据库用户名密码错误或服务未启动 解决: 检查数据库配置和服务状态
问题4: 多租户数据隔离
原因: 当前用户的tenant_id与数据记录的tenant_id不匹配 解决: 检查和调整租户配置
📞 技术支持
如果按照上述步骤仍无法解决问题,请收集以下信息:
-
前端错误信息
- 浏览器控制台错误日志
- Network面板中API请求的完整信息
-
后端日志信息
- 后端服务日志中与奖学金申请相关的错误
-
数据库检查结果
- 奖学金申请表的记录数量和状态分布
-
用户和权限信息
- 当前登录用户名和角色
- 用户的权限配置情况
💡 提示: 按照步骤顺序执行检查,大多数问题可以在步骤1-4中发现和解决。