# 专业/宿舍关联校区接口评估与需求

## 1. 当前可用能力评估

### 1.1 宿舍管理（可支撑）
- 已有校区列表接口：`GET /art/schoolCampus/list`
  - 支持入参 `schoolId`，可按学校查询校区。
- 已有宿舍新增/修改接口：
  - `POST /art/schoolDorm`
  - `PUT /art/schoolDorm`
  - 入参已包含 `campusId`，可直接做“校区下拉选择后提交关联”。

### 1.2 专业管理（当前不可完全支撑）
- 专业接口当前为：
  - `GET /art/schoolMajor/list`
  - `POST /art/schoolMajor`
  - `PUT /art/schoolMajor`
- 现有专业模型/类型无 `campusId` 字段，仅有 `schoolId`、`collegeId` 等。
- 结论：前端可加载校区列表，但无法通过现有专业接口保存“专业 -> 校区”关联。

## 2. 专业管理所需接口改造（建议）

## 2.1 方案：在专业主模型中新增 `campusId`（单校区关联）

### 专业列表查询
- URL: `GET /art/schoolMajor/list`
- 新增查询入参:
  - `campusId` `number|string` 可选
- 返回字段新增:
  - `campusId` `number|string`
  - `campusName` `string`（建议返回，便于表格展示）

#### 查询入参示例
```json
{
  "pageNum": 1,
  "pageSize": 10,
  "schoolId": 1001,
  "campusId": 2001,
  "majorName": "视觉传达设计"
}
```

#### 查询返回 rows 单项示例
```json
{
  "majorId": 3001,
  "schoolId": 1001,
  "campusId": 2001,
  "campusName": "主校区",
  "collegeId": 5001,
  "majorName": "视觉传达设计"
}
```

### 专业新增
- URL: `POST /art/schoolMajor`
- 新增必填入参:
  - `campusId` `number|string`

#### 新增入参示例
```json
{
  "schoolId": 1001,
  "campusId": 2001,
  "collegeId": 5001,
  "majorCode": "130502",
  "majorName": "视觉传达设计",
  "educationLevel": "本科",
  "durationYears": 4
}
```

### 专业修改
- URL: `PUT /art/schoolMajor`
- 新增必填入参:
  - `campusId` `number|string`

#### 修改入参示例
```json
{
  "majorId": 3001,
  "schoolId": 1001,
  "campusId": 2002,
  "collegeId": 5001,
  "majorName": "视觉传达设计"
}
```

## 3. 统一返回格式建议

### 列表接口返回（保持现有 RuoYi 分页结构）
```json
{
  "code": 200,
  "msg": "操作成功",
  "rows": [],
  "total": 0
}
```

### 新增/修改接口返回
```json
{
  "code": 200,
  "msg": "操作成功",
  "data": true
}
```

