283 lines
6.2 KiB
Markdown
283 lines
6.2 KiB
Markdown
# 学校详情 JSONB 接口对接文档(前端)
|
||
|
||
## 1. 目标
|
||
JSONB 字段不在 school_detail 基础接口中返回,仅通过以下接口按需获取与编辑。
|
||
管理端页面需要呈现“可视化表单 + JSON 预览(可选)”的效果。
|
||
|
||
## 2. 通用规范
|
||
### 2.1 URL 规则
|
||
- 基础路径:`/art/schoolDetail/json/*`
|
||
|
||
### 2.2 通用响应
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "success",
|
||
"data": { ... }
|
||
}
|
||
```
|
||
|
||
### 2.3 通用请求
|
||
- `schoolId` 必填
|
||
- PUT 请求体统一为:`{ "schoolId": 1, "<fieldName>": <JSON> }`
|
||
|
||
### 2.4 字段命名
|
||
后端字段统一使用:
|
||
- `satisfactionJson`
|
||
- `scholarshipJson`
|
||
- `specialMajorJson`
|
||
- `employmentReportJson`
|
||
- `photoJson`
|
||
- `accommodationJson`
|
||
- `subjectReviewsJson`
|
||
- `researchJson`
|
||
- `univMajorsJson`
|
||
- `univPostgraduateJson`
|
||
|
||
## 3. 页面效果与接口格式
|
||
|
||
### 3.1 满意度明细(satisfactionJson)
|
||
#### 页面效果
|
||
- 展示“综合满意度明细”列表:维度名称、投票数、分档人数等
|
||
- 支持新增/删除/编辑一行
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/satisfaction?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/satisfaction`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"satisfactionJson": {
|
||
"details": [
|
||
{
|
||
"name": "综合满意度",
|
||
"votes": "1207",
|
||
"score": "4.8",
|
||
"s1": "2",
|
||
"s2": "1",
|
||
"s3": "3",
|
||
"s4": "7",
|
||
"s5": "87"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.2 奖学金数组(scholarshipJson)
|
||
#### 页面效果
|
||
- 展示可编辑文本列表(支持多条)
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/scholarship?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/scholarship`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"scholarshipJson": [
|
||
{ "奖学金": "奖学金说明文本..." }
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.3 特色专业(specialMajorJson)
|
||
#### 页面效果
|
||
- 按“类型”分组展示(国家级/省级等)
|
||
- 每组内为专业列表
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/specialMajor?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/specialMajor`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"specialMajorJson": [
|
||
{
|
||
"type": "国家级",
|
||
"majorList": [
|
||
{ "majorId": "247", "majorName": "智能科学与技术" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.4 就业报告(employmentReportJson)
|
||
#### 页面效果
|
||
- 列表编辑:报告名称 + 预览链接 + 下载链接
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/employmentReport?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/employmentReport`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"employmentReportJson": [
|
||
{
|
||
"reportName": "北京大学2021年度就业报告",
|
||
"onlinePreview": "https://m.51sdx.com/images/employment_report/PDF/北京大学2021年度就业报告.PDF",
|
||
"reportUrl": "https://scc.pku.edu.cn/home!downloadCenter.action"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.5 学校图片(photoJson)
|
||
#### 页面效果
|
||
- 分类展示(如校园风光)
|
||
- 支持上传/删除/排序
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/photo?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/photo`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"photoJson": {
|
||
"staticUrl": "https://static.51sdx.com",
|
||
"scenerys": [
|
||
{
|
||
"cover": "https://sdxedu.oss-cn-beijing.aliyuncs.com/univ/scenerys/d7c0b4e9a0c746d2a23f45c24793db94.jpeg",
|
||
"size": 1,
|
||
"scenery": "河流"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.6 建筑/配套(accommodationJson)
|
||
#### 页面效果
|
||
- 图文块列表(如食堂/宿舍/配套)
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/accommodation?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/accommodation`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"accommodationJson": [
|
||
{ "name": "食堂", "value": "..." }
|
||
]
|
||
}
|
||
```
|
||
****
|
||
### 3.7 学科评估(subjectReviewsJson)
|
||
#### 页面效果
|
||
- 评估轮次分组
|
||
- 每组内展示学科名称与评级
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/subjectReviews?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/subjectReviews`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"subjectReviewsJson": [
|
||
{
|
||
"type": "第四轮",
|
||
"subList": [
|
||
{ "subjectName": "统计学", "assessLevel": "A+", "assessGrade": "1档" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.8 科研信息(researchJson)
|
||
#### 页面效果
|
||
- 展示“师资力量/特色/学科/实验室”等区块
|
||
- 支持富文本编辑
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/research?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/research`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"researchJson": {
|
||
"features": { "name": "国家级特色专业", "value": "..." },
|
||
"teacher": { "name": "师资力量", "value": "..." },
|
||
"laboratory": [ { "name": "国家实验室", "value": "..." } ],
|
||
"subject": [ { "name": "一级学科国家重点学科", "value": "..." } ],
|
||
"program": [ { "name": "硕士点说明", "value": "..." } ],
|
||
"base": { "硕士点数量": "333", "博士点数量": "307" }
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.9 专业标签(univMajorsJson)
|
||
#### 页面效果
|
||
- 标签分组 + 专业列表
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/univMajors?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/univMajors`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"univMajorsJson": [
|
||
{
|
||
"className": "国家特色",
|
||
"majorList": [
|
||
{ "majorId": "1", "majorName": "哲学", "majorTag": "国家特色", "year": "四年" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.10 保研信息(univPostgraduateJson)
|
||
#### 页面效果
|
||
- 年份列表 + 保研率
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/univPostgraduate?schoolId=1`
|
||
- PUT `/art/schoolDetail/json/univPostgraduate`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"univPostgraduateJson": [
|
||
{ "year": 2024, "exemption": 64.6 }
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3.11 JSONB 全量获取(all)
|
||
#### 页面效果
|
||
- 管理端初始化时一次性加载所有 JSONB 数据(用于整页编辑或预览)
|
||
|
||
#### 接口
|
||
- GET `/art/schoolDetail/json/all?schoolId=1`
|
||
|
||
#### 返回格式(示例)
|
||
```json
|
||
{
|
||
"satisfactionJson": { "details": [] },
|
||
"scholarshipJson": [],
|
||
"specialMajorJson": [],
|
||
"employmentReportJson": [],
|
||
"photoJson": {},
|
||
"accommodationJson": [],
|
||
"subjectReviewsJson": [],
|
||
"researchJson": {},
|
||
"univMajorsJson": [],
|
||
"univPostgraduateJson": []
|
||
}
|
||
```
|
||
|
||
## 4. 前端交互建议
|
||
- JSONB 独立页/弹窗编辑,保存后局部刷新。
|
||
- 列表型 JSON 建议用“可增删行”的表单组件。
|
||
- 保留原始 JSON 结构,避免字段名变更。
|