Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-17-student-available-batches-api.md
T
2025-07-27 13:09:34 +08:00

5.2 KiB

学生可参与批次信息查询API开发记录

日期: 2025-01-17
开发者: Cursor AI
变更类型: 新增功能
影响范围: 后端API接口

📋 变更概述

在 XgStuColBatchClassController.java 中新增了 getStudentAvailableBatches API接口,用于查询学生可以参与的批次信息。

🔧 具体变更

1. Controller层变更

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java

新增内容

  • 添加了 getStudentAvailableBatches API接口
  • 接口路径: GET /stuColBatchClass/stuColBatchClass/getStudentAvailableBatches
  • 无入参,自动获取当前登录用户ID
  • 返回类型: R<List<Map<String, Object>>>
  • 添加了权限注解 @SaCheckPermission("stuColBatchClass:stuColBatchClass:query")

实现逻辑

  1. 获取当前用户ID: 使用 LoginHelper.getUserId() 获取当前登录用户ID
  2. 权限校验: 检查用户是否已登录
  3. 数据查询: 调用Mapper方法查询学生可参与的批次信息
  4. 异常处理: 捕获并处理查询过程中的异常

2. Mapper层变更

文件: backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java

新增方法

  • selectStudentAvailableBatches(Long studentId): 查询学生可参与的批次信息
  • 返回类型: List<Map<String, Object>>

3. XML映射文件变更

文件: backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml

新增SQL查询

  • 实现了 selectStudentAvailableBatches 的SQL查询语句
  • 通过三张表关联查询:xg_stu_col_batch、xg_stu_col_batch_class、xg_student_msg
  • 查询条件:
    • xg_student_msg.id = 当前登录用户ID
    • xg_student_msg.class_id = xg_stu_col_batch_class.class_id
    • xg_stu_col_batch_class.batch_id = xg_stu_col_batch.id
    • deleted = 0 (所有表)
    • xg_stu_col_batch.status = '0' (批次状态正常)

返回字段

  • 批次信息:batchId、batchName、description、startTime、endTime、status、collectionType、remark
  • 班级信息:classId、className、majorId、majorName、collegeId、collegeName

📊 数据库关联逻辑

表关联关系

xg_student_msg (学生信息表)
    ↓ class_id
xg_stu_col_batch_class (批次班级权限表)
    ↓ batch_id
xg_stu_col_batch (批次信息表)

查询条件

  1. 学生匹配: xg_student_msg.id = 当前登录用户ID
  2. 班级匹配: xg_student_msg.class_id = xg_stu_col_batch_class.class_id
  3. 批次匹配: xg_stu_col_batch_class.batch_id = xg_stu_col_batch.id
  4. 数据有效性: 所有表的 deleted = 0
  5. 批次状态: xg_stu_col_batch.status = '0' (正常状态)

🔐 权限控制

接口权限

  • 权限标识: stuColBatchClass:stuColBatchClass:query
  • 访问控制: 需要登录用户
  • 数据范围: 只能查询当前登录用户对应的学生信息

安全考虑

  • 使用 LoginHelper.getUserId() 获取当前用户ID,确保数据安全
  • 通过表关联确保用户只能查看自己班级的批次信息
  • 添加异常处理,避免敏感信息泄露

📝 API接口规范

请求信息

  • 请求方法: GET
  • 请求路径: /stuColBatchClass/stuColBatchClass/getStudentAvailableBatches
  • 请求参数: 无
  • 请求头: 需要包含有效的Token

响应格式

{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "batchId": 1,
      "batchName": "2025年春季学期信息收集",
      "description": "收集学生基本信息",
      "startTime": "2025-01-01 00:00:00",
      "endTime": "2025-01-31 23:59:59",
      "status": "0",
      "collectionType": "1",
      "remark": "新学期信息收集",
      "classId": 101,
      "className": "计算机科学与技术2021级1班",
      "majorId": 1,
      "majorName": "计算机科学与技术",
      "collegeId": 1,
      "collegeName": "信息工程学院"
    }
  ]
}

错误响应

{
  "code": 500,
  "msg": "查询学生可参与批次信息失败:具体错误信息"
}

🧪 测试建议

功能测试

  1. 正常场景: 登录学生用户,查询可参与的批次信息
  2. 无权限场景: 未登录用户访问接口
  3. 无数据场景: 学生没有可参与的批次
  4. 异常场景: 数据库连接异常

数据验证

  1. 验证返回的批次信息是否正确
  2. 验证班级信息是否与当前用户匹配
  3. 验证批次状态是否为正常状态
  4. 验证数据排序是否正确(按开始时间倒序)

📚 相关文档

  • API文档: 学生信息收集批次管理API
  • 数据库设计: 学生信息收集批次管理表设计
  • 权限配置: 菜单权限配置指南

🔄 后续优化建议

  1. 缓存优化: 考虑对批次信息进行缓存,提高查询性能
  2. 分页支持: 如果批次数量较多,可以考虑添加分页功能
  3. 状态过滤: 可以添加参数支持按批次状态过滤
  4. 时间范围: 可以添加参数支持按时间范围查询

开发完成时间: 2025-01-17
代码审查: 待审查
测试状态: 待测试
部署状态: 待部署