Files
LoveACE-EndF/docs/ISIM_API.md
2025-09-03 13:00:40 +08:00

327 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ISIM 电费查询系统 API 文档
## 概述
ISIMIntegrated Student Information Management电费查询系统是为安徽财经大学学生提供的后勤电费查询服务。通过该系统学生可以
- 选择和绑定宿舍房间
- 查询电费余额和用电记录
- 查看充值记录
## API 端点
### 认证
所有API都需要通过认证令牌authme_token进行身份验证。认证信息通过依赖注入自动处理。
### 房间选择器 API
#### 1. 获取楼栋列表
**POST** `/api/v1/isim/picker/building/get`
获取所有可选择的楼栋信息。
**响应示例:**
```json
{
"code": 0,
"message": "楼栋列表获取成功",
"data": [
{
"code": "11",
"name": "北苑11号学生公寓"
},
{
"code": "12",
"name": "北苑12号学生公寓"
}
]
}
```
#### 2. 设置楼栋并获取楼层列表
**POST** `/api/v1/isim/picker/building/set`
设置楼栋并获取对应的楼层列表。
**请求参数:**
```json
{
"building_code": "11"
}
```
**响应示例:**
```json
{
"code": 0,
"message": "楼层列表获取成功",
"data": [
{
"code": "010101",
"name": "1-1层"
},
{
"code": "010102",
"name": "1-2层"
}
]
}
```
#### 3. 设置楼层并获取房间列表
**POST** `/api/v1/isim/picker/floor/set`
设置楼层并获取对应的房间列表。
**请求参数:**
```json
{
"floor_code": "010101"
}
```
**响应示例:**
```json
{
"code": 0,
"message": "房间列表获取成功",
"data": [
{
"code": "01",
"name": "1-101"
},
{
"code": "02",
"name": "1-102"
}
]
}
```
#### 4. 绑定房间
**POST** `/api/v1/isim/picker/room/set`
绑定房间到用户账户。
**请求参数:**
```json
{
"building_code": "11",
"floor_code": "010101",
"room_code": "01"
}
```
**响应示例:**
```json
{
"code": 0,
"message": "房间绑定成功",
"data": {
"building": {
"code": "11",
"name": "北苑11号学生公寓"
},
"floor": {
"code": "010101",
"name": "1-1层"
},
"room": {
"code": "01",
"name": "1-101"
},
"room_id": "01",
"display_text": "北苑11号学生公寓/1-1层/1-101"
}
}
```
### 电费查询 API
#### 5. 获取电费信息
**POST** `/api/v1/isim/electricity/info`
获取电费余额和用电记录信息。
**响应示例:**
```json
{
"code": 0,
"message": "电费信息获取成功",
"data": {
"balance": {
"remaining_purchased": 815.30,
"remaining_subsidy": 2198.01
},
"usage_records": [
{
"record_time": "2025-08-29 00:04:58",
"usage_amount": 0.00,
"meter_name": "1-101"
},
{
"record_time": "2025-08-29 00:04:58",
"usage_amount": 0.00,
"meter_name": "1-101空调"
}
]
}
}
```
#### 6. 获取充值信息
**POST** `/api/v1/isim/payment/info`
获取电费余额和充值记录信息。
**响应示例:**
```json
{
"code": 0,
"message": "充值信息获取成功",
"data": {
"balance": {
"remaining_purchased": 815.30,
"remaining_subsidy": 2198.01
},
"payment_records": [
{
"payment_time": "2025-02-21 11:30:08",
"amount": 71.29,
"payment_type": "下发补助"
},
{
"payment_time": "2024-09-01 15:52:40",
"amount": 71.29,
"payment_type": "下发补助"
}
]
}
}
```
#### 7. 检查房间绑定状态
**POST** `/api/v1/isim/room/binding/status`
检查用户是否已绑定宿舍房间。
**已绑定响应示例:**
```json
{
"code": 0,
"message": "用户已绑定宿舍房间",
"data": {
"is_bound": true,
"binding_info": {
"building": {
"code": "35",
"name": "西校荆苑5号学生公寓"
},
"floor": {
"code": "3501",
"name": "荆5-1层"
},
"room": {
"code": "350116",
"name": "J5-116"
},
"room_id": "350116",
"display_text": "西校荆苑5号学生公寓/荆5-1层/J5-116"
}
}
}
```
**未绑定响应示例:**
```json
{
"code": 0,
"message": "用户未绑定宿舍房间",
"data": {
"is_bound": false,
"binding_info": null
}
}
```
## 错误处理
### 标准错误响应
```json
{
"code": 1,
"message": "错误描述信息"
}
```
### 认证错误响应
```json
{
"code": 401,
"message": "Cookie已失效或不在VPN/校园网环境,请重新登录"
}
```
### 常见错误代码
- `0`: 成功
- `1`: 一般业务错误
- `400`: 请求参数错误或未绑定房间
- `401`: 认证失败
- `500`: 服务器内部错误
### 特殊错误情况
#### 未绑定房间错误
当用户尝试查询电费或充值信息但未绑定房间时,会返回特定错误:
```json
{
"code": 400,
"message": "请先绑定宿舍房间后再查询电费信息"
}
```
```json
{
"code": 400,
"message": "请先绑定宿舍房间后再查询充值信息"
}
```
## 使用流程
### 房间绑定流程
1. **检查绑定状态**调用房间绑定状态API检查是否已绑定
2. **首次绑定**(如果未绑定):
- 调用楼栋列表API获取所有楼栋
- 调用楼栋设置API获取楼层列表
- 调用楼层设置API获取房间列表
- 调用房间绑定API完成房间绑定
### 查询流程
1. **确认绑定**:确保用户已绑定房间(必需)
2. **查询信息**调用电费信息或充值信息API获取数据
## 注意事项
- 所有接口都需要有效的认证令牌
- 数据实时从后勤系统获取,不会在数据库中缓存
- 房间绑定信息会保存在数据库中以便下次使用
- 系统需要VPN或校园网环境才能正常访问
- **电费查询和充值查询需要先绑定房间**否则会返回400错误
- 访问`/go`端点会返回302重定向系统会自动处理并提取JSESSIONID