5.2 KiB
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
新增内容
- 添加了
getStudentAvailableBatchesAPI接口 - 接口路径:
GET /stuColBatchClass/stuColBatchClass/getStudentAvailableBatches - 无入参,自动获取当前登录用户ID
- 返回类型:
R<List<Map<String, Object>>> - 添加了权限注解
@SaCheckPermission("stuColBatchClass:stuColBatchClass:query")
实现逻辑
- 获取当前用户ID: 使用
LoginHelper.getUserId()获取当前登录用户ID - 权限校验: 检查用户是否已登录
- 数据查询: 调用Mapper方法查询学生可参与的批次信息
- 异常处理: 捕获并处理查询过程中的异常
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 = 当前登录用户IDxg_student_msg.class_id = xg_stu_col_batch_class.class_idxg_stu_col_batch_class.batch_id = xg_stu_col_batch.iddeleted = 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 (批次信息表)
查询条件
- 学生匹配:
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'(正常状态)
🔐 权限控制
接口权限
- 权限标识:
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": "查询学生可参与批次信息失败:具体错误信息"
}
🧪 测试建议
功能测试
- 正常场景: 登录学生用户,查询可参与的批次信息
- 无权限场景: 未登录用户访问接口
- 无数据场景: 学生没有可参与的批次
- 异常场景: 数据库连接异常
数据验证
- 验证返回的批次信息是否正确
- 验证班级信息是否与当前用户匹配
- 验证批次状态是否为正常状态
- 验证数据排序是否正确(按开始时间倒序)
📚 相关文档
- API文档: 学生信息收集批次管理API
- 数据库设计: 学生信息收集批次管理表设计
- 权限配置: 菜单权限配置指南
🔄 后续优化建议
- 缓存优化: 考虑对批次信息进行缓存,提高查询性能
- 分页支持: 如果批次数量较多,可以考虑添加分页功能
- 状态过滤: 可以添加参数支持按批次状态过滤
- 时间范围: 可以添加参数支持按时间范围查询
开发完成时间: 2025-01-17
代码审查: 待审查
测试状态: 待测试
部署状态: 待部署