院校专业组树形结构
接口概述
- 接口名称:院校专业组树形结构
- 接口用途:根据院校ID(slug)获取该院校的专业组树形数据,按
sg_name(专业组)内存分组,返回每个专业组下的专业列表及详细信息。
- 请求路径:
GET /api/v1/schools/:slug/major-groups
- 请求方法:GET
- Content-Type:application/json
请求参数
路径参数
| 参数名 |
类型 |
是否必填 |
说明 |
| slug |
string |
是 |
院校标识,支持 sid 或短编码 slug |
Query 参数
| 参数名 |
类型 |
是否必填 |
默认值 |
说明 |
| province |
string |
否 |
- |
省份名称,如 江苏 |
| year |
number |
否 |
- |
年份,如 2024 |
注意:slug 优先使用院校原始 sid(数字ID),也可使用院校详情返回的 slug 短编码。
返回结构
成功时返回标准成功响应,其中 data 为院校专业组树形对象。
{
"code": 200,
"message": "success",
"data": {
"sid": 166,
"name": "南京信息工程大学",
"logo": "https://file.gk.gansanzhiyuan.com/upload/logo/166.jpg",
"level_name": "普通本科",
"type_name": "理工类",
"province": "江苏",
"city": "南京市",
"f985": null,
"f211": null,
"min": 635,
"min_section": 69274,
"z_num": 16456,
"zy_groups": [
{
"sg_name": "10",
"sg_infos": "化",
"zy_count": 10,
"zy_list": [
{
"spname": "人工智能",
"spcode": null,
"num": 15,
"length": null,
"tuition": 6380,
"min": 60,
"min_section": 0,
"year": 2024,
"local_batch_name": "本科批",
"kemu": "物理",
"sg_infos": "化",
"sg_name": "10",
"is_dual_class": ""
}
]
}
]
}
}
返回字段说明
外层字段(院校信息)
| 字段名 |
类型 |
说明 |
| sid |
number |
院校ID |
| name |
string |
院校名称 |
| logo |
string |
院校Logo地址 |
| level_name |
string |
院校层次(如普通本科、专科(高职)) |
| type_name |
string |
院校类型(如理工类、综合、医药类) |
| province |
string |
所在省份 |
| city |
string |
所在城市 |
| f985 |
string |
是否985(值为 "985" 或 null) |
| f211 |
string |
是否211(值为 "211" 或 null) |
| min |
number |
该校所有专业中的最高最低分 |
| min_section |
number |
该校所有专业中的最高最低位次 |
| z_num |
number |
该校所有专业的招生计划总数 |
| zy_groups |
array |
专业组列表,按 sg_name 分组 |
zy_groups item 字段(专业组)
| 字段名 |
类型 |
说明 |
| sg_name |
string |
专业组名称(经过 str_set 格式化,中文括号转为英文括号) |
| sg_infos |
string |
选科要求信息(如 物理,化学、化、不限 等) |
| zy_count |
number |
该专业组下的专业数量 |
| zy_list |
array |
该专业组下的专业详情列表 |
zy_list item 字段(专业详情)
| 字段名 |
类型 |
说明 |
| spname |
string |
专业名称 |
| spcode |
string |
专业代码 |
| num |
number |
招生计划人数 |
| length |
string |
学制(如 四年、五年) |
| tuition |
number |
学费(元/年) |
| min |
number |
历年最低录取分数 |
| min_section |
number |
历年最低录取位次 |
| year |
number |
数据年份 |
| local_batch_name |
string |
本地批次名称(如 本科批、一本) |
| kemu |
string |
科目要求(如 物理、物理类、理科) |
| sg_infos |
string |
选科要求信息 |
| sg_name |
string |
所属专业组原始名称 |
| is_dual_class |
string |
是否双一流专业(值为 "1" 或 "") |
分组逻辑说明
本接口复用冲稳保服务(recommend-new-v3.service.ts)中的 group_zyz 按 sg_name 内存分组逻辑:
- 从
gk_schools_plans 表中查询该院校的招生计划数据;
- 过滤掉
spname(专业名称)为空的记录;
- 按
sg_name(专业组名称)进行内存分组,构建 zy_groups;
- 对每个组内的专业,补充
is_dual_class(双一流标记);
sg_name 经过 str_set 处理:提取从第一个中文括号 ( 开始的后缀,并将中文括号替换为英文括号 ()。
调用示例
请求
GET /api/v1/schools/166/major-groups?province=%E6%B1%9F%E8%8B%8F HTTP/1.1
成功响应
{
"code": 200,
"message": "success",
"data": {
"sid": 166,
"name": "南京信息工程大学",
"logo": "https://file.gk.gansanzhiyuan.com/upload/logo/166.jpg",
"level_name": "普通本科",
"type_name": "理工类",
"province": "江苏",
"city": "南京市",
"f985": null,
"f211": null,
"min": 635,
"min_section": 69274,
"z_num": 16456,
"zy_groups": [
{
"sg_name": "10",
"sg_infos": "化",
"zy_count": 10,
"zy_list": [
{
"spname": "人工智能",
"spcode": null,
"num": 15,
"length": null,
"tuition": 6380,
"min": 60,
"min_section": 0,
"year": 2024,
"local_batch_name": "本科批",
"kemu": "物理",
"sg_infos": "化",
"sg_name": "10",
"is_dual_class": ""
},
{
"spname": "信息安全",
"spcode": null,
"num": 15,
"length": null,
"tuition": 6380,
"min": 578,
"min_section": 50217,
"year": 2024,
"local_batch_name": "本科批",
"kemu": "物理",
"sg_infos": "化",
"sg_name": "10",
"is_dual_class": ""
}
]
}
]
}
}
错误响应(院校不存在)
{
"code": 404,
"message": "School not found",
"data": {}
}
注意事项
sg_name 为 null 或空字符串时,所有空组专业会被统一归入 sg_name: "" 的组中。
- 建议传入
province 参数进行过滤,否则可能返回该院校在全国各省的全部招生计划,数据量较大。
- 如需进一步按年份筛选,可传入
year 参数(如 2024)。
- 本接口数据来源于
gk_schools_plans 表,字段最全,包含 num(计划人数)、length(学制)、tuition(学费)等。