# 后台管理API文档

## 基础说明

- **基础URL**: `/api/admin`
- **认证方式**: Session（与现有后台保持一致）
- **数据格式**: JSON
- **字符编码**: UTF-8

## 响应格式

### 成功响应
```json
{
    "code": 200,
    "message": "操作成功",
    "data": {}
}
```

### 错误响应
```json
{
    "code": 400,
    "message": "错误信息",
    "data": null
}
```

## 接口列表

### 1. 登录相关

#### 1.1 管理员登录
- **URL**: `POST /api/admin/login`
- **说明**: 管理员登录
- **参数**:
  - `username` (string, 必填): 用户名
  - `password` (string, 必填): 密码
- **返回**: 管理员信息

#### 1.2 获取当前管理员信息
- **URL**: `GET /api/admin/login/info`
- **说明**: 获取当前登录的管理员信息
- **需要登录**: 是

#### 1.3 退出登录
- **URL**: `POST /api/admin/login/logout`
- **说明**: 退出登录
- **需要登录**: 是

### 2. 首页相关

#### 2.1 获取系统信息
- **URL**: `GET /api/admin/index/systemInfo`
- **说明**: 获取系统信息（PHP版本、MySQL版本、磁盘空间等）
- **需要登录**: 是

### 3. 个人信息

#### 3.1 获取个人信息
- **URL**: `GET /api/admin/profile/info`
- **说明**: 获取当前管理员个人信息
- **需要登录**: 是

#### 3.2 更新个人信息
- **URL**: `POST /api/admin/profile/update`
- **说明**: 更新个人信息
- **需要登录**: 是
- **参数**:
  - `nickname` (string): 昵称
  - `email` (string): 邮箱
  - `avatar` (file): 头像文件（可选）

#### 3.3 修改密码
- **URL**: `POST /api/admin/profile/updatePassword`
- **说明**: 修改密码
- **需要登录**: 是
- **参数**:
  - `old_password` (string, 必填): 当前密码
  - `new_password` (string, 必填): 新密码
  - `confirm_password` (string, 必填): 确认新密码

### 4. 教室管理

#### 4.1 获取教室列表
- **URL**: `GET /api/admin/classroom/list`
- **说明**: 获取教室列表（支持分页和筛选）
- **需要登录**: 是
- **参数**:
  - `page` (int): 页码，默认1
  - `limit` (int): 每页数量，默认10
  - `name` (string): 教室名称（模糊搜索）
  - `building` (string): 楼栋
  - `type` (string): 教室类型（normal/multimedia/lab）
  - `school_id` (int): 分校ID（仅超级管理员可用）

#### 4.2 获取教室详情
- **URL**: `GET /api/admin/classroom/detail`
- **说明**: 获取教室详细信息
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教室ID

#### 4.3 保存教室（新增/编辑）
- **URL**: `POST /api/admin/classroom/save`
- **说明**: 新增或编辑教室
- **需要登录**: 是
- **参数**: 教室信息（包含id则为编辑，不包含则为新增）

#### 4.4 删除教室
- **URL**: `POST /api/admin/classroom/delete`
- **说明**: 删除教室
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教室ID

#### 4.5 批量删除教室
- **URL**: `POST /api/admin/classroom/batchDelete`
- **说明**: 批量删除教室
- **需要登录**: 是
- **参数**:
  - `ids` (array, 必填): 教室ID数组

#### 4.6 保存座位布局
- **URL**: `POST /api/admin/classroom/saveLayout`
- **说明**: 保存教室座位布局
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教室ID
  - `layout` (json, 必填): 布局数据

#### 4.7 获取教室座位状态
- **URL**: `GET /api/admin/classroom/status`
- **说明**: 获取教室座位状态（包含预订信息）
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教室ID

#### 4.8 分配座位
- **URL**: `POST /api/admin/classroom/assignSeat`
- **说明**: 为学生分配座位
- **需要登录**: 是
- **参数**:
  - `classroomId` (int, 必填): 教室ID
  - `studentId` (int, 必填): 学生ID
  - `row` (int, 必填): 行号
  - `col` (int, 必填): 列号
  - `number` (string, 必填): 座位号

#### 4.9 随机分配座位
- **URL**: `POST /api/admin/classroom/randomAssignSeats`
- **说明**: 为未分配座位的学生随机分配座位
- **需要登录**: 是
- **参数**:
  - `classroomId` (int, 必填): 教室ID

#### 4.10 获取未分配座位的学生列表
- **URL**: `GET /api/admin/classroom/getUnassignedStudents`
- **说明**: 获取未分配座位的学生列表
- **需要登录**: 是
- **参数**:
  - `classroomId` (int, 必填): 教室ID

#### 4.11 取消选座
- **URL**: `POST /api/admin/classroom/cancelBooking`
- **说明**: 取消选座
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 预订ID

#### 4.12 批量取消选座
- **URL**: `POST /api/admin/classroom/cancelBookingAuto`
- **说明**: 批量取消选座
- **需要登录**: 是
- **参数**:
  - `ids` (array, 必填): 预订ID数组

#### 4.13 获取分校列表
- **URL**: `GET /api/admin/classroom/getSchoolList`
- **说明**: 获取分校列表（根据权限过滤）
- **需要登录**: 是

#### 4.14 上传图片
- **URL**: `POST /api/admin/classroom/upload`
- **说明**: 上传教室相关图片
- **需要登录**: 是
- **参数**:
  - `file` (file, 必填): 图片文件

#### 4.15 获取教室选座列表
- **URL**: `GET /api/admin/classroom/getSeatList`
- **说明**: 获取教室的选座列表，以座位号排序
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教室ID
- **返回数据**:
  ```json
  {
    "code": 200,
    "message": "获取成功",
    "data": [
      {
        "seat_number": "1",
        "is_selected": 1,
        "student_name": "张三",
        "student_mobile": "13800138000",
        "select_time": "2024-03-20 10:00:00"
      },
      {
        "seat_number": "2",
        "is_selected": 0,
        "student_name": "",
        "student_mobile": "",
        "select_time": ""
      }
    ]
  }
  ```
- **字段说明**:
  - `seat_number` (string): 座位号
  - `is_selected` (int): 是否选座（1已选，0未选）
  - `student_name` (string): 学员姓名（未选座时为空）
  - `student_mobile` (string): 学员手机号（未选座时为空）
  - `select_time` (string): 选座时间（未选座时为空）

### 5. 预订管理

#### 5.1 获取预订列表
- **URL**: `GET /api/admin/booking/list`
- **说明**: 获取预订记录列表
- **需要登录**: 是
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `classroom_id` (int): 教室ID
  - `booking_date` (string): 预订日期
  - `type` (string): 类型

#### 5.2 同意座位变更申请
- **URL**: `POST /api/admin/booking/approve`
- **说明**: 同意座位变更申请
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 申请ID

#### 5.3 拒绝座位变更申请
- **URL**: `POST /api/admin/booking/reject`
- **说明**: 拒绝座位变更申请
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 申请ID
  - `reason` (string, 必填): 拒绝原因

### 6. 系统设置

#### 6.1 获取系统设置
- **URL**: `GET /api/admin/setting/get`
- **说明**: 获取系统设置
- **需要登录**: 是（仅超级管理员）

#### 6.2 保存系统设置
- **URL**: `POST /api/admin/setting/save`
- **说明**: 保存系统设置
- **需要登录**: 是（仅超级管理员）
- **参数**: 设置项键值对

#### 6.3 上传图片
- **URL**: `POST /api/admin/setting/upload`
- **说明**: 上传系统设置相关图片（如轮播图）
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `file` (file, 必填): 图片文件

### 7. 班级管理

#### 7.1 获取班级列表
- **URL**: `GET /api/admin/classmanager/list`
- **说明**: 获取班级列表
- **需要登录**: 是
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `name` (string): 班级名称
  - `teacher_name` (string): 班主任姓名
  - `school_id` (int): 分校ID

#### 7.2 获取班级详情
- **URL**: `GET /api/admin/classmanager/detail`
- **说明**: 获取班级详细信息
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 班级ID

#### 7.3 获取班主任列表
- **URL**: `GET /api/admin/classmanager/getTeachers`
- **说明**: 获取班主任列表
- **需要登录**: 是

#### 7.4 获取教室列表
- **URL**: `GET /api/admin/classmanager/getClassrooms`
- **说明**: 获取可用教室列表
- **需要登录**: 是

#### 7.5 保存班级（新增/编辑）
- **URL**: `POST /api/admin/classmanager/save`
- **说明**: 新增或编辑班级
- **需要登录**: 是
- **参数**: 班级信息

#### 7.6 删除班级
- **URL**: `POST /api/admin/classmanager/deleteClass`
- **说明**: 删除班级
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 班级ID

### 8. 学生管理

#### 8.1 获取学生列表
- **URL**: `GET /api/admin/student/list`
- **说明**: 获取学生列表
- **需要登录**: 是
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `student_id` (string): 学号
  - `name` (string): 姓名
  - `class_id` (int): 班级ID
  - `school_id` (int): 分校ID

#### 8.2 获取学生详情
- **URL**: `GET /api/admin/student/detail`
- **说明**: 获取学生详细信息
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 学生ID

#### 8.3 保存学生（新增/编辑）
- **URL**: `POST /api/admin/student/save`
- **说明**: 新增或编辑学生
- **需要登录**: 是
- **参数**: 学生信息

#### 8.4 删除学生
- **URL**: `POST /api/admin/student/delete`
- **说明**: 删除学生
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 学生ID

#### 8.5 更新学生状态
- **URL**: `POST /api/admin/student/status`
- **说明**: 更新学生状态
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 学生ID
  - `status` (int, 必填): 状态（0/1）

#### 8.6 解绑学生
- **URL**: `POST /api/admin/student/unbind`
- **说明**: 解绑学生与用户的关联
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 学生ID

#### 8.7 上传学生导入文件
- **URL**: `POST /api/admin/student/upload`
- **说明**: 上传学生导入Excel文件
- **需要登录**: 是
- **参数**:
  - `file` (file, 必填): Excel文件

#### 8.8 导入学生数据
- **URL**: `POST /api/admin/student/import`
- **说明**: 导入学生数据
- **需要登录**: 是
- **参数**:
  - `class_id` (int, 必填): 班级ID
  - `file` (string, 必填): 文件路径（通过upload接口获取）

### 9. 用户管理（仅超级管理员）

#### 9.1 获取用户列表
- **URL**: `GET /api/admin/user/list`
- **说明**: 获取用户列表
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `keyword` (string): 关键词（昵称/手机/邮箱）
  - `status` (int): 状态

#### 9.2 获取用户详情
- **URL**: `GET /api/admin/user/detail`
- **说明**: 获取用户详细信息
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `id` (int, 必填): 用户ID

#### 9.3 保存用户（新增/编辑）
- **URL**: `POST /api/admin/user/save`
- **说明**: 新增或编辑用户
- **需要登录**: 是（仅超级管理员）
- **参数**: 用户信息

#### 9.4 删除用户
- **URL**: `POST /api/admin/user/delete`
- **说明**: 删除用户
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `ids` (array, 必填): 用户ID数组

#### 9.5 修改用户状态
- **URL**: `POST /api/admin/user/status`
- **说明**: 修改用户状态
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `id` (int, 必填): 用户ID
  - `status` (int, 必填): 状态（0/1）

### 10. 学校管理（仅超级管理员）

#### 10.1 获取学校列表
- **URL**: `GET /api/admin/school/list`
- **说明**: 获取学校列表
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `name` (string): 学校名称

#### 10.2 获取学校详情
- **URL**: `GET /api/admin/school/detail`
- **说明**: 获取学校详细信息
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `id` (int, 必填): 学校ID

#### 10.3 保存学校（新增/编辑）
- **URL**: `POST /api/admin/school/save`
- **说明**: 新增或编辑学校
- **需要登录**: 是（仅超级管理员）
- **参数**: 学校信息

#### 10.4 删除学校
- **URL**: `POST /api/admin/school/delete`
- **说明**: 删除学校
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `id` (int, 必填): 学校ID

#### 10.5 获取分校账号列表
- **URL**: `GET /api/admin/school/accountList`
- **说明**: 获取分校账号列表
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `school_id` (int, 必填): 学校ID

#### 10.6 保存分校账号
- **URL**: `POST /api/admin/school/saveAccount`
- **说明**: 新增或编辑分校账号
- **需要登录**: 是（仅超级管理员）
- **参数**: 账号信息

#### 10.7 删除分校账号
- **URL**: `POST /api/admin/school/deleteAccount`
- **说明**: 删除分校账号
- **需要登录**: 是（仅超级管理员）
- **参数**:
  - `id` (int, 必填): 账号ID

### 11. 教师管理

#### 11.1 获取教师列表
- **URL**: `GET /api/admin/teacher/list`
- **说明**: 获取教师列表
- **需要登录**: 是
- **参数**:
  - `page` (int): 页码
  - `limit` (int): 每页数量
  - `teacher_id` (string): 工号
  - `name` (string): 姓名
  - `department_id` (int): 部门ID
  - `nickname` (string): 昵称

#### 11.2 获取教师详情
- **URL**: `GET /api/admin/teacher/detail`
- **说明**: 获取教师详细信息
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教师ID

#### 11.3 保存教师（新增/编辑）
- **URL**: `POST /api/admin/teacher/save`
- **说明**: 新增或编辑教师
- **需要登录**: 是
- **参数**: 教师信息

#### 11.4 删除教师
- **URL**: `POST /api/admin/teacher/delete`
- **说明**: 删除教师
- **需要登录**: 是
- **参数**:
  - `id` (int, 必填): 教师ID

### 12. 通用功能

#### 12.1 获取必应每日壁纸
- **URL**: `GET /api/admin/common/getBingWallpaper`
- **说明**: 获取必应每日桌面壁纸
- **需要登录**: 是

## 权限说明

- **超级管理员**: 可以访问所有接口，可以管理所有分校的数据
- **分校管理员**: 只能访问和操作本分校的数据，无法访问系统设置、用户管理、学校管理等接口

## 注意事项

1. 所有需要登录的接口都需要在请求时携带有效的Session
2. 分校管理员在操作数据时，系统会自动限制只能操作本分校的数据
3. 文件上传接口支持的文件类型和大小限制请参考具体接口说明
4. 分页接口默认返回格式为layui table格式（code, msg, count, data）

