奖学金申请列表显示问题排查手册.md 7.0 KB

奖学金申请列表显示问题排查手册

📅 创建时间

  • 日期: 2025-01-26 23:50:00
  • 适用场景: 前台奖学金申请列表页面无法显示数据
  • 操作人: 系统管理员

🔍 问题现象

  • 访问前台奖学金申请列表页面
  • 页面加载正常,但列表中没有显示任何申请记录
  • 可能显示"暂无数据"或空白列表

📋 排查步骤

步骤1: 检查浏览器网络请求 ⭐⭐⭐

重要性: ⭐⭐⭐ (最重要,优先检查)

  1. 打开浏览器开发者工具

    • 按 F12 或右键选择"检查"
    • 切换到 Network (网络) 标签
  2. 刷新奖学金申请列表页面

    • 观察网络请求
    • 查找 /jcbt/scholarshipApplication/list 请求
  3. 检查API请求状态

    ✅ 状态码 200: API调用成功
    ❌ 状态码 403: 权限不足 → 跳转到步骤4
    ❌ 状态码 401: 未登录 → 跳转到步骤3  
    ❌ 状态码 500: 服务器错误 → 检查后端日志
    
  4. 检查响应数据

    • 点击该请求,查看 Response 标签
    • 检查返回的数据结构:

      {
      "code": 200,
      "msg": "操作成功", 
      "rows": [],  // 如果为空数组,说明查询到0条数据
      "total": 0
      }
      

      步骤2: 检查用户登录状态 ⭐⭐

      重要性: ⭐⭐ (如果步骤1发现401错误)

      1. 确认是否已登录
      2. 检查页面顶部是否显示用户信息
      3. 查看浏览器本地存储中是否有Token

      4. 重新登录

      5. 退出当前账号

      6. 使用正确的账号密码重新登录

      7. 再次访问申请列表页面

      步骤3: 检查用户权限配置 ⭐⭐

      重要性: ⭐⭐ (如果步骤1发现403错误)

      1. 确认当前登录用户角色
      2. 记录当前登录的用户名和角色

      3. 检查权限配置

      4. 登录后台管理系统

      5. 进入 系统管理 → 角色管理

      6. 找到当前用户的角色,点击"修改"

      7. 在权限配置中确认是否勾选了: ```

    ☑️ 家长综合信息服务平台 ☑️ 学生奖学金管理

     ☑️ 奖学金申请记录
       ☑️ 奖学金申请记录查询 (jcbt:scholarshipApplication:list)
    
    
    3. **如果权限缺失**
    - 勾选相应权限
    - 点击"提交"保存
    - 让用户重新登录前台系统
    
    ### 步骤4: 检查数据库中的实际数据 ⭐⭐⭐
    **重要性**: ⭐⭐⭐ (如果API返回空数组)
    
    **方法A: 使用数据库管理工具**
    ```sql
    -- 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不匹配)

  1. 确认当前用户的租户ID

    • 在前台系统中查看用户信息
    • 或在数据库中查询:

      SELECT tenant_id FROM sys_user WHERE user_name = '当前登录用户名';
      
      1. 检查申请数据的租户ID sql SELECT DISTINCT tenant_id, COUNT(*) as count FROM jcbt_scholarship_application WHERE deleted = 0 GROUP BY tenant_id;
  2. 如果租户ID不匹配

    • 联系系统管理员调整数据或用户配置

步骤8: 检查前端查询参数 ⭐

重要性: ⭐ (如果上述都正常但仍无数据)

在浏览器控制台中检查实际发送的查询参数:

// 在申请列表页面的控制台中执行
console.log('查询参数:', window.location.search);

常见问题:

  • 状态过滤条件过于严格
  • 时间范围过滤导致数据被过滤掉
  • 其他业务字段过滤条件

🎯 快速检查清单

✅ 5分钟快速检查

  1. 浏览器F12检查API请求状态码是否为200
  2. 检查API响应中rows数组是否为空
  3. 确认用户已正常登录
  4. 确认用户有查询权限

✅ 10分钟深入检查

  1. 数据库中确实存在申请记录且deleted=0
  2. 申请记录的application_type为正确值(非RECOMMEND)
  3. 申请记录的tenant_id与当前用户匹配
  4. 后端服务已重启且代码修复生效

🚨 常见问题和解决方案

问题1: API返回403权限不足

原因: 用户缺少查询权限 解决: 在角色管理中为用户角色添加 jcbt:scholarshipApplication:list 权限

问题2: API返回空数组但数据库有数据

原因: 可能是申请类型值错误(RECOMMEND vs TEACHER_RECOMMEND) 解决: 执行数据修复脚本

问题3: 数据库连接失败

原因: 数据库用户名密码错误或服务未启动 解决: 检查数据库配置和服务状态

问题4: 多租户数据隔离

原因: 当前用户的tenant_id与数据记录的tenant_id不匹配 解决: 检查和调整租户配置


📞 技术支持

如果按照上述步骤仍无法解决问题,请收集以下信息:

  1. 前端错误信息

    • 浏览器控制台错误日志
    • Network面板中API请求的完整信息
  2. 后端日志信息

    • 后端服务日志中与奖学金申请相关的错误
  3. 数据库检查结果

    • 奖学金申请表的记录数量和状态分布
  4. 用户和权限信息

    • 当前登录用户名和角色
    • 用户的权限配置情况

💡 提示: 按照步骤顺序执行检查,大多数问题可以在步骤1-4中发现和解决。