学生信息管理API文档
1. 文档说明
1.1 API基础信息
- 模块名称: 学工管理 - 学生信息管理
- 模块代码: ruoyi-xg
- 基础路径:
/studentMsg/studentMsg
- 权限前缀:
studentMsg:studentMsg
- 版本: 1.0.0
- 更新时间: 2025-01-27(新增班级学生查询接口)
1.2 通用规范
- 请求方式: 支持GET、POST、PUT、DELETE
- 数据格式: JSON
- 字符编码: UTF-8
- 认证方式: Bearer Token
- 权限控制: Sa-Token + 数据权限
1.3 响应格式
{
"code": 200,
"msg": "操作成功",
"data": {},
"timestamp": "2025-01-27T18:00:00"
}
2. 学生信息管理接口
2.1 查询学生信息列表
- 接口路径: GET
/studentMsg/studentMsg/list
- 权限标识:
studentMsg:studentMsg:list
- 功能描述: 分页查询学生信息列表,支持多条件筛选
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| pageNum |
integer |
否 |
页码,默认1 |
| pageSize |
integer |
否 |
每页大小,默认10 |
| studentNo |
string |
否 |
学号 |
| name |
string |
否 |
姓名(模糊查询) |
| idCard |
string |
否 |
身份证号 |
| gender |
string |
否 |
性别:0-男,1-女 |
| studentStatus |
string |
否 |
学籍状态 |
| phone |
string |
否 |
联系电话(模糊查询) |
| email |
string |
否 |
邮箱 |
| classId |
string |
否 |
班级ID |
| className |
string |
否 |
班级名称 |
| majorId |
string |
否 |
专业ID |
| majorName |
string |
否 |
专业名称 |
| collegeId |
string |
否 |
学院ID |
| collegeName |
string |
否 |
学院名称 |
响应数据
{
"code": 200,
"msg": "查询成功",
"rows": [
{
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1",
"createTime": "2025-01-27 10:00:00",
"updateTime": "2025-01-27 10:00:00"
}
],
"total": 1
}
2.2 根据组织ID查询学生信息列表
- 接口路径: POST
/studentMsg/studentMsg/listByDeptId
- 权限标识:
studentMsg:studentMsg:list
- 功能描述: 根据部门ID查询该组织下所有学生信息
请求参数
{
"dept_id": 101,
"name": "张",
"studentNo": "2023001",
"phone": "138",
"studentStatus": "1",
"beginTime": "2025-01-01",
"endTime": "2025-01-27"
}
响应数据
{
"code": 200,
"msg": "查询成功",
"rows": [...],
"total": 10
}
2.3 查询班级中所有学生信息 ⭐ 新增
- 接口路径: GET
/studentMsg/studentMsg/listByClassId
- 权限标识:
studentMsg:studentMsg:query
- 功能描述: 查询指定班级中所有在籍学生信息
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| classId |
string |
是 |
班级ID |
| name |
string |
否 |
学生姓名(模糊查询) |
响应数据
{
"code": 200,
"msg": "查询成功",
"data": [
{
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1",
"createTime": "2025-01-27 10:00:00",
"updateTime": "2025-01-27 10:00:00"
}
]
}
业务逻辑
- 在
xg_student_msg 表中查询:
deleted = 0 (未删除)
student_status = '1' (在籍状态)
class_id = 入参的classId (班级ID)
name LIKE '%入参的name%' (姓名模糊查询,可选)
- 按创建时间倒序排列
2.4 获取学生信息详情
- 接口路径: GET
/studentMsg/studentMsg/{id}
- 权限标识:
studentMsg:studentMsg:query
- 功能描述: 根据ID获取学生详细信息
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| id |
long |
是 |
学生ID |
响应数据
{
"code": 200,
"msg": "查询成功",
"data": {
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1",
"createTime": "2025-01-27 10:00:00",
"updateTime": "2025-01-27 10:00:00"
}
}
2.5 新增学生信息
- 接口路径: POST
/studentMsg/studentMsg
- 权限标识:
studentMsg:studentMsg:add
- 功能描述: 新增学生信息
请求参数
{
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1"
}
响应数据
{
"code": 200,
"msg": "新增成功"
}
2.6 修改学生信息
- 接口路径: PUT
/studentMsg/studentMsg
- 权限标识:
studentMsg:studentMsg:edit
- 功能描述: 修改学生信息
请求参数
{
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1"
}
响应数据
{
"code": 200,
"msg": "修改成功"
}
2.7 删除学生信息
- 接口路径: DELETE
/studentMsg/studentMsg/{ids}
- 权限标识:
studentMsg:studentMsg:remove
- 功能描述: 批量删除学生信息
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| ids |
string |
是 |
学生ID列表,多个用逗号分隔 |
响应数据
{
"code": 200,
"msg": "删除成功"
}
2.8 导出学生信息
- 接口路径: POST
/studentMsg/studentMsg/export
- 权限标识:
studentMsg:studentMsg:export
- 功能描述: 导出学生信息列表
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| studentNo |
string |
否 |
学号 |
| name |
string |
否 |
姓名 |
| studentStatus |
string |
否 |
学籍状态 |
响应数据
返回Excel文件流
2.8.1 高级检索导出学生信息
- 接口路径: POST
/studentMsg/studentMsg/advancedSearchExport
- 权限标识:
studentMsg:studentMsg:export
- 功能描述: 根据高级检索条件导出学生信息列表,支持多维度复合查询条件
- 版本: 1.2.1 (2025-01-07修复MapStruct转换错误)
- 修复: 解决
XgStudentMsgVo 到 XgStudentMsgExportVo 转换器缺失问题
请求参数
支持以下高级检索条件:
基础信息检索
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| studentNo | string | 否 | 学号(模糊查询) |
| name | string | 否 | 姓名(模糊查询) |
| idCard | string | 否 | 身份证号(模糊查询) |
| phone | string | 否 | 手机号码(模糊查询) |
| email | string | 否 | 邮箱(模糊查询) |
| gender | array | 否 | 性别数组:0-男,1-女 |
| nationality | array | 否 | 民族数组 |
| politicalStatus | array | 否 | 政治面貌数组 |
| birthDateStart | string | 否 | 出生日期开始:yyyy-MM-dd |
| birthDateEnd | string | 否 | 出生日期结束:yyyy-MM-dd |
学籍信息检索
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| studentStatus | array | 否 | 学籍状态数组:1-在籍,2-休学,3-复学,4-退学,5-毕业 |
| enrollmentYearStart | integer | 否 | 入学年份开始 |
| enrollmentYearEnd | integer | 否 | 入学年份结束 |
| admissionCategory | array | 否 | 录取类别数组 |
学院专业班级检索
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| collegeName | string | 否 | 学院名称(模糊查询) |
| majorName | string | 否 | 专业名称(模糊查询) |
| className | string | 否 | 班级名称(模糊查询) |
| grade | array | 否 | 年级数组 |
| counselorName | string | 否 | 辅导员姓名(模糊查询) |
| classTeacherName | string | 否 | 班主任姓名(模糊查询) |
家庭信息检索
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| fatherName | string | 否 | 父亲姓名(模糊查询) |
| motherName | string | 否 | 母亲姓名(模糊查询) |
| familyEconomicStatus | array | 否 | 家庭经济状况数组 |
| familyIncomeMin | number | 否 | 家庭收入最小值 |
| familyIncomeMax | number | 否 | 家庭收入最大值 |
特殊身份检索
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| isPoorStudent | array | 否 | 是否贫困生:0-否,1-是 |
| isMinority | array | 否 | 是否少数民族:0-否,1-是 |
| isDisabled | array | 否 | 是否残疾:0-否,1-是 |
| isOrphan | array | 否 | 是否孤儿:0-否,1-是 |
权限范围
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| deptIds | array | 否 | 部门ID数组,用于权限控制 |
响应数据
返回Excel文件流,包含完整的学生信息数据
修复记录
- 2025-01-07 v1.2.1: 修复MapStruct转换错误,解决
XgStudentMsgVo 到 XgStudentMsgExportVo 转换器缺失问题
- 问题:
MapstructUtils.convert() 无法找到两个VO类之间的转换器,导致导出功能报错
- 解决: 在Controller中添加手动转换方法
convertToExportVo() 和 convertToExportVoList()
- 影响: 导出功能正常工作,所有字段完整映射
- 2025-01-07 v1.2.0: 修复分页限制问题,导出时pageSize设置为50000,确保能导出所有符合条件的记录
- 问题: 之前由于BO类默认pageSize=10,导致只能导出10条记录
- 解决: 取消注释Controller中的分页参数设置代码
2.9 查询学生个人信息
- 接口路径: GET
/studentMsg/studentMsg/personalInfo
- 权限标识:
studentMsg:studentMsg:query
- 功能描述: 查询当前登录学生的个人信息
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| userId |
long |
否 |
用户ID,为空时使用当前登录用户ID |
响应数据
{
"code": 200,
"msg": "查询成功",
"data": {
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1",
"createTime": "2025-01-27 10:00:00",
"updateTime": "2025-01-27 10:00:00"
}
}
2.10 根据班级ID查询学生信息列表
- 接口路径: GET
/studentMsg/studentMsg/listByClassId
- 权限标识:
studentMsg:studentMsg:query
- 功能描述: 查询指定班级中所有在籍学生信息
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| classId |
string |
是 |
班级ID |
| name |
string |
否 |
学生姓名(模糊查询) |
响应数据
{
"code": 200,
"msg": "查询成功",
"data": [
{
"id": 1,
"studentNo": "2023001001",
"name": "张三",
"gender": "0",
"birthDate": "2000-01-01",
"idCard": "110101199901010001",
"phone": "13800138000",
"email": "zhangsan@example.com",
"classId": "101",
"className": "计算机2023-1班",
"majorId": "CS001",
"majorName": "计算机科学与技术",
"collegeId": "CS",
"collegeName": "计算机学院",
"studentStatus": "1",
"createTime": "2025-01-27 10:00:00",
"updateTime": "2025-01-27 10:00:00"
}
]
}
2.11 导入学生信息数据
- 接口路径: POST
/studentMsg/studentMsg/importData
- 权限标识:
studentMsg:studentMsg:import
- 功能描述: 批量导入学生信息数据,支持Excel文件上传
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| file |
MultipartFile |
是 |
Excel文件(.xlsx格式) |
| updateSupport |
boolean |
否 |
是否支持更新已存在数据,默认false |
请求示例
POST /studentMsg/studentMsg/importData
Content-Type: multipart/form-data
file: [Excel文件]
updateSupport: true
响应数据
{
"code": 200,
"msg": "恭喜您,数据已全部导入成功!共 10 条,数据如下:",
"data": null
}
错误响应示例
{
"code": 500,
"msg": "很抱歉,导入失败!共 2 条数据格式不正确,错误如下:<br/>1、学号 2023001001 已存在<br/>2、学号 2023001002 导入失败:手机号码格式不正确",
"data": null
}
2.12 获取导入模板
- 接口路径: POST
/studentMsg/studentMsg/importTemplate
- 权限标识:
studentMsg:studentMsg:import
- 功能描述: 下载学生信息导入模板文件
请求参数
无
响应数据
返回Excel模板文件(.xlsx格式)
模板字段说明
| 字段名 |
类型 |
必填 |
说明 |
| 学号 |
string |
是 |
学生学号,必须唯一 |
| 姓名 |
string |
是 |
学生姓名 |
| 性别 |
string |
是 |
0-男,1-女 |
| 身份证号 |
string |
否 |
身份证号码 |
| 手机号码 |
string |
否 |
手机号码,必须唯一 |
| 电子邮箱 |
string |
否 |
邮箱地址,必须唯一 |
| 出生日期 |
date |
否 |
出生日期 |
| 民族 |
string |
否 |
民族代码 |
| 政治面貌 |
string |
否 |
政治面貌代码 |
| 家庭地址 |
string |
否 |
家庭住址 |
| 现住址 |
string |
否 |
现居住地址 |
| 班级ID |
string |
否 |
班级编号 |
| 班级名称 |
string |
否 |
班级名称 |
| 专业ID |
string |
否 |
专业编号 |
| 专业名称 |
string |
否 |
专业名称 |
| 学院ID |
string |
否 |
学院编号 |
| 学院名称 |
string |
否 |
学院名称 |
| 学籍状态 |
string |
否 |
1-在籍,2-休学,3-复学,4-退学,5-毕业 |
3. 数据字典
3.1 性别字典
3.2 学籍状态字典
| 字典值 |
字典标签 |
| 1 |
在籍 |
| 2 |
休学 |
| 3 |
复学 |
| 4 |
退学 |
| 5 |
毕业 |
3.3 信息状态字典
| 字典值 |
字典标签 |
| 1 |
正常 |
| 2 |
待审核 |
| 3 |
审核中 |
| 4 |
已驳回 |
| 5 |
已锁定 |
4. 错误码说明
| 错误码 |
说明 |
| 200 |
操作成功 |
| 400 |
请求参数错误 |
| 401 |
未授权 |
| 403 |
无权限 |
| 404 |
资源不存在 |
| 500 |
服务器内部错误 |
5. 权限说明
5.1 数据权限控制
- 超级管理员: 可查看所有学生信息
- 学工管理员: 可查看所有学生信息
- 二级学院管理员: 只能查看本学院学生信息
- 辅导员: 只能查看负责班级的学生信息
- 班主任: 只能查看负责班级的学生信息
- 学生: 只能查看自己的信息
5.2 操作权限控制
- 新增: 学工管理员、二级学院管理员
- 修改: 学工管理员、二级学院管理员、辅导员、班主任(限制范围)
- 删除: 学工管理员、二级学院管理员
- 导入: 学工管理员、二级学院管理员
- 导出: 学工管理员、二级学院管理员、辅导员、班主任
- 查询: 所有有权限的用户
6. 注意事项
- 所有接口都需要Bearer Token认证
- 删除操作为逻辑删除,不会物理删除数据
- 学号和身份证号必须唯一
- 新增学生时会自动创建对应的系统用户账号
- 支持多租户数据隔离
- 所有时间字段使用yyyy-MM-dd HH:mm:ss格式
- 数据权限按照用户角色自动过滤
- 班级学生查询接口只返回在籍状态的学生
7. 更新日志
2025-01-27 - 新增学生信息导入功能
- 新增功能: 新增学生信息批量导入功能
- 新增接口:
POST /studentMsg/studentMsg/importData - 学生信息导入接口
POST /studentMsg/studentMsg/importTemplate - 导入模板下载接口
- 功能特性:
- 支持Excel文件批量导入
- 支持新增和更新两种模式
- 自动验证学号、手机号、邮箱唯一性
- 完整的错误处理和结果统计
- 自动创建对应的系统用户账号
- 技术实现:
- 使用自定义Listener处理Excel解析
- 事务保证数据一致性
- 详细的导入结果反馈
2025-01-27 - 新增班级学生查询接口
- 新增功能: 新增
GET /studentMsg/studentMsg/listByClassId 接口
- 功能描述: 查询指定班级中所有在籍学生信息
- 过滤条件:
deleted = 0 (未删除)
student_status = '1' (在籍状态)
class_id = 入参的classId (班级ID)
name LIKE '%入参的name%' (姓名模糊查询,可选)
- 排序方式: 按创建时间倒序排列
17. 获取学生信息树 ⭐ 新增
接口描述
获取按年级、学院、专业、班级层级组织的学生信息树结构,用于宿舍分配等场景的学生选择。
接口URL
GET /studentMsg/studentMsg/getStudentTree
请求参数
| 参数名 |
类型 |
是否必填 |
说明 |
示例值 |
| secondaryCollegeId |
Long |
否 |
二级学院ID,默认为101 |
101 |
请求示例
// GET请求
/studentMsg/studentMsg/getStudentTree?secondaryCollegeId=101
响应参数
| 参数名 |
类型 |
说明 |
示例值 |
| code |
Integer |
响应码,200表示成功 |
200 |
| msg |
String |
响应消息 |
"操作成功" |
| data |
Array |
学生信息树数据 |
见下方详细结构 |
学生树节点结构
| 参数名 |
类型 |
说明 |
示例值 |
| id |
String |
节点唯一标识 |
"college-101" |
| label |
String |
节点显示名称 |
"计算机学院" |
| type |
String |
节点类型:college/major/class |
"college" |
| maleAssigned |
Integer |
已分配男生数量 |
45 |
| maleTotal |
Integer |
男生总数 |
120 |
| femaleAssigned |
Integer |
已分配女生数量 |
25 |
| femaleTotal |
Integer |
女生总数 |
60 |
| grade |
String |
年级信息(仅班级节点有值) |
"2025" |
| collegeId |
Long |
学院ID |
101 |
| collegeName |
String |
学院名称 |
"计算机学院" |
| majorId |
Long |
专业ID(专业和班级节点有值) |
1001 |
| majorName |
String |
专业名称(专业和班级节点有值) |
"计算机科学与技术" |
| classId |
Long |
班级ID(仅班级节点有值) |
10001 |
| className |
String |
班级名称(仅班级节点有值) |
"计算机科学与技术1班" |
| sortOrder |
Integer |
排序序号 |
1 |
| children |
Array |
子节点数组 |
[] |
后端实现
// Controller
@GetMapping("/getStudentTree")
@SaCheckPermission("studentMsg:studentMsg:query")
public R<List<XgStudentTreeVo>> getStudentTree(@RequestParam(defaultValue = "101") Long secondaryCollegeId) {
List<XgStudentTreeVo> tree = studentService.getStudentTree(secondaryCollegeId);
return R.ok(tree);
}
// Service实现
@Override
public List<XgStudentTreeVo> getStudentTree(Long secondaryCollegeId) {
return baseMapper.getStudentTree(secondaryCollegeId);
}
数据库查询
<select id="getCollegeStudentStats" resultType="java.util.Map">
SELECT
s.college_id,
s.college_name,
s.major_id,
s.major_name,
s.class_id,
s.class_name,
s.grade,
COUNT(CASE WHEN s.gender = '1' THEN 1 END) as male_total,
COUNT(CASE WHEN s.gender = '0' THEN 1 END) as female_total,
COUNT(CASE WHEN s.gender = '1' AND s.is_boarder = 1 THEN 1 END) as male_assigned,
COUNT(CASE WHEN s.gender = '0' AND s.is_boarder = 1 THEN 1 END) as female_assigned
FROM xg_student s
WHERE s.secondary_college_id = #{secondaryCollegeId}
AND s.deleted = 0
AND s.student_status = '1'
GROUP BY s.college_id, s.college_name, s.major_id, s.major_name, s.class_id, s.class_name, s.grade
ORDER BY s.college_id, s.major_id, s.class_id
</select>
前端调用
// API定义
export function getStudentTree(secondaryCollegeId: number = 101): AxiosPromise<R<XgStudentTreeVO[]>> {
return request({
url: '/studentMsg/studentMsg/getStudentTree',
method: 'get',
params: {
secondaryCollegeId
}
});
}
// 组件中使用
const getStudentTreeData = async () => {
try {
const res = await getStudentTree(101);
if (res.data.code === 200) {
studentTreeData.value = res.data.data || [];
} else {
ElMessage.error(res.data.msg || '获取学生信息树失败');
}
} catch (error) {
console.error('获取学生信息树失败:', error);
ElMessage.error('获取学生信息树失败');
}
};
响应示例
{
"code": 200,
"msg": "操作成功",
"data": [
{
"id": "college-101",
"label": "计算机学院",
"type": "college",
"collegeId": 101,
"collegeName": "计算机学院",
"maleAssigned": 45,
"maleTotal": 120,
"femaleAssigned": 25,
"femaleTotal": 60,
"children": [
{
"id": "major-1001",
"label": "计算机科学与技术",
"type": "major",
"collegeId": 101,
"collegeName": "计算机学院",
"majorId": 1001,
"majorName": "计算机科学与技术",
"maleAssigned": 45,
"maleTotal": 80,
"femaleAssigned": 15,
"femaleTotal": 40,
"children": [
{
"id": "class-10001",
"label": "计算机科学与技术1班",
"type": "class",
"collegeId": 101,
"collegeName": "计算机学院",
"majorId": 1001,
"majorName": "计算机科学与技术",
"classId": 10001,
"className": "计算机科学与技术1班",
"grade": "2025",
"maleAssigned": 20,
"maleTotal": 40,
"femaleAssigned": 10,
"femaleTotal": 20
},
{
"id": "class-10002",
"label": "计算机科学与技术2班",
"type": "class",
"collegeId": 101,
"collegeName": "计算机学院",
"majorId": 1001,
"majorName": "计算机科学与技术",
"classId": 10002,
"className": "计算机科学与技术2班",
"grade": "2025",
"maleAssigned": 25,
"maleTotal": 40,
"femaleAssigned": 5,
"femaleTotal": 20
}
]
}
]
}
]
}
错误响应
{
"code": 500,
"msg": "获取学生信息树失败",
"data": null
}
注意事项
- 权限控制: 需要
studentMsg:studentMsg:query 权限
- 树结构: 按学院->专业->班级的层级组织(移除年级分组)
- 统计信息: 每个节点包含已分配和总数的男女生统计信息
- 排序规则: 按学院ID、专业ID、班级ID顺序排列
- 应用场景: 主要用于宿舍分配时显示各班级的入住统计
- 数据过滤: 支持按二级学院过滤数据范围,默认为101
- 逻辑删除: 查询时排除已删除的学生记录
- 学籍状态: 只统计在籍学生(student_status='1')
- 住宿统计逻辑:
- total: 需要住宿的学生总数(is_boarder=1)
- assigned: 实际已分配住宿的学生数(通过xg_dorm_bed_student表关联,status='0')
📋 更新日志
2025-01-27 - 学生信息树接口优化
- 功能优化: 优化
GET /studentMsg/studentMsg/getStudentTree 接口
- 结构调整: 移除年级分组,调整为学院->专业->班级的三级层级结构
- 性能优化: 减少嵌套层级,提升前端渲染性能
- 统计信息: 保持各层级男女生人数和住宿分配统计
- 逻辑修正: 修正住宿统计逻辑,通过xg_dorm_bed_student表准确统计已分配住宿学生数
2025-01-27 - 新增班级学生查询接口
- 新增功能: 新增
GET /studentMsg/studentMsg/listByClassId 接口
- 功能描述: 查询指定班级中所有在籍学生信息
- 过滤条件: 支持按班级ID和学生姓名查询
- 排序方式: 按创建时间倒序排列
文档更新时间: 2025-01-27
文档版本: 1.4.0
维护人员: Cursor AI
更新说明:
- 优化学生信息树接口,移除年级分组,简化层级结构
- 新增学生信息树查询接口,支持宿舍分配场景
- 新增高级检索导出接口文档
- 修复高级检索导出分页限制问题
- 之前版本:新增学生信息导入功能,完善学生信息管理API文档