Skip to content

如何通过 SUST API 写入数据

本系统采用非对称加密方式进行数据对接。使用 OpenSSL 生成 RSA 公钥和私钥,用于数据加密和解密。对接流程如下。

1. 获取写入 API 的公钥

在学工系统中进行注册。公钥由学工部信息科提供。注册时需要提供应用名称、应用 URL 以及所需的 API 名称。测试阶段不需要提供应用 URL,但正式上线时必须提供。

2. 获取写入 API 的应用 ID

应用注册完成后,会同时生成一个应用编号。该值用作 ClientId

3. 写入 API 对接端点

统一的写入 API 端点为:

  • 公网:domain/openapi/apiput/index
  • 内网:http://ip/xgb/index.php/openapi/apiinput/index

请求方式:POST。

4. 写入 API 对接方式

请求参数:

参数是否必填说明
ClientId应用 ID
AuthStr权限和时间戳验证码,详见下文

AuthStr 是全局认证变量,包含 API 名称和时间戳验证等信息。生成方式如下:

  • 将字符串构造为 ApiName&timestamp
  • 使用公钥对字符串进行加密。
  • 对加密后的值执行 base64_encode 后再传输。

示例:要访问学生列表,API 名称为 StudentList,假设当前时间戳为 1730189433

  1. 构造字符串:StudentList&1730189433
  2. 使用公钥加密:sadsadjsldjljflcvjlcvjlxcvjlxcvjlxcvj
  3. 使用 base64_encode 编码:fgldjflgjfdlgjdljasdhkjasdhas
  4. 访问:
text
openapi/api/index?ClientId=xxxx&AuthStr=fgldjflgjfdlgjdljasdhkjasdhas&other_parameters

服务端会验证权限以及时间戳是否过期。如果发生错误,将显示对应的错误信息。

5. 数据插入 API

5.1 插入学生请假数据

TIP

请使用写入 API 端点执行此操作。

API 名称:addLeave

数据格式:

json
{
  "UUID": "550e8400e29b41d4a716446655440000",
  "student_id": "202310001",
  "student_name": "Alex Lee",
  "leave_type": 2,
  "begin_time": "2023-10-15 08:00:00",
  "end_time": "2023-10-17 18:00:00",
  "leave_reason": "Family matter requiring a three-day leave.",
  "apply_time": "2023-10-14 14:30:00",
  "back_time": null,
  "leave_status": 1,
  "back_status": 0,
  "is_deleted": 0
}

UUID 是系统唯一标识码,用于更新操作。要删除请假数据,需更新删除标志。

默认请假类型:1 表示事假,2 表示病假。

leave_status 默认为 1back_status 表示销假状态(01)。当 back_time 为空时,传 null 而非空字符串。

响应:

json
{
  "code": 200,
  "msg": "Record added successfully",
  "data": {
    "UUID": "550e8400e29b41d4a716446655440003",
    "student_id": "202310001",
    "student_name": "Alex Lee",
    "leave_type": 2,
    "begin_time": "2023-10-15 08:00:00",
    "end_time": "2023-10-17 18:00:00",
    "leave_reason": "Family matter requiring a three-day leave.",
    "apply_time": "2023-10-14 14:30:00",
    "back_time": null,
    "leave_status": 1,
    "back_status": 0,
    "is_deleted": 0,
    "update_time": "2025-10-14 11:12:53"
  }
}

新增和更新操作使用相同的 API 和 API 名称。系统通过唯一的 UUID 值来判断是创建还是更新。

is_deleted1 时,操作为删除。

数据更新示例:

json
{
  "UUID": "550e8400e29b41d4a716446655440001",
  "student_id": "202310001",
  "student_name": "Alex Lee",
  "leave_type": 2,
  "begin_time": "2023-10-15 08:00:00",
  "end_time": "2023-10-17 18:00:00",
  "leave_reason": "Family matter requiring a three-day leave.",
  "apply_time": "2023-10-14 14:30:00",
  "back_time": null,
  "leave_status": 1,
  "back_status": 0,
  "is_deleted": 0
}

数据更新响应:

json
{
  "code": 200,
  "msg": "Record added successfully",
  "data": {
    "UUID": "550e8400e29b41d4a716446655440001",
    "student_id": "202310001",
    "student_name": "Alex Lee",
    "leave_type": 2,
    "begin_time": "2023-10-15 08:00:00",
    "end_time": "2023-10-17 18:00:00",
    "leave_reason": "Family matter requiring a three-day leave.",
    "apply_time": "2023-10-14 14:30:00",
    "back_time": null,
    "leave_status": 1,
    "back_status": 0,
    "is_deleted": 0,
    "update_time": "2025-10-14 11:12:42"
  }
}