智能安防集成应用系统是一个综合性的安防管理平台,集成了设备管理、事件监控、人员管理、电子地图、智能分析等功能模块。
Content-Type: application/json
Authorization: Bearer {token}
{
"status": "SUCCESS",
"code": 200,
"msg": "操作成功",
"data": {},
"exception": null
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态:一般为 SUCCESS/FAIL |
| code | int | 业务状态码,对应统一错误码说明 |
| msg | string | 本次调用的提示信息 |
| data | object | 具体业务数据载体,不同接口结构不同 |
| exception | string/null | 异常信息,正常情况下为 null |
| 状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权 |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
{
"current": 1,
"size": 10,
"sortField": "create_time",
"sortOrder": "desc"
}
{
"status": "SUCCESS",
"code": 200,
"data": {
"records": [],
"total": 100,
"current": 1,
"size": 10,
"totalPages": 10
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态:一般为 SUCCESS/FAIL |
| code | int | 业务状态码,对应统一错误码说明 |
| data | object | 分页数据对象 |
| data.records | array | 当前页数据列表 |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页记录数 |
| data.totalPages | int | 总页数 |
接口地址: POST /prod-api/service-sas/activate
功能描述: 系统激活
请求参数:
{
"licenseKey": "string"
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "激活成功",
"data": {
"isPerpetual": false,
"validityTime": "2026-12-31T23:59:59"
}
}
字段说明(结合表 sas_system_activation):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 激活结果提示信息 |
| data | object | 激活结果数据 |
| data.isPerpetual | boolean | 是否永久授权(对应 sas_system_activation.is_perpetual) |
| data.validityTime | string | 授权到期时间,ISO8601 格式(对应 sas_system_activation.validity_time) |
接口地址: GET /prod-api/service-sas/network/config
功能描述: 分页展示网络配置列表,支持按网络名称、IP 地址、启用状态筛选。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码,默认 1 |
| size | int | 否 | 每页数量,默认 10 |
| name | string | 否 | 网络名称(模糊查询) |
| ipAddr | string | 否 | IP 地址(模糊查询) |
| status | boolean | 否 | 状态:true 启用,false 未启用 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"records": [
{
"id": 1,
"name": "主网络",
"ipAddr": "192.168.10.151",
"gatewayAddr": "192.168.10.1",
"subnetMask": "255.255.255.0",
"dns": "8.8.8.8",
"status": true,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_system_wlan_config):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.records | array | 网络配置列表 |
| data.records[].id | int | 主键 id(sas_system_wlan_config.id) |
| data.records[].name | string | 网络名称(sas_system_wlan_config.name) |
| data.records[].ipAddr | string | IP 地址(sas_system_wlan_config.ip_addr) |
| data.records[].gatewayAddr | string | 网关地址(sas_system_wlan_config.gateway_addr) |
| data.records[].subnetMask | string | 子网掩码(sas_system_wlan_config.subnet_mask) |
| data.records[].dns | string | DNS 服务器地址(sas_system_wlan_config.dns) |
| data.records[].status | boolean | 是否启用:true 启用,false 未启用(sas_system_wlan_config.status) |
| data.records[].createTime | string | 创建时间,ISO8601 格式(sas_system_wlan_config.create_time) |
| data.records[].updateTime | string | 更新时间,ISO8601 格式(sas_system_wlan_config.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: PUT /prod-api/service-sas/network/config
功能描述: 编辑网络配置,点击"网络配置"切换到开启状态,在IP信息栏输入需要配置的信息
请求参数:
{
"id": 1,
"name": "主网络",
"ipAddr": "192.168.10.151",
"gatewayAddr": "192.168.10.1",
"subnetMask": "255.255.255.0",
"dns": "8.8.8.8",
"status": true
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: GET /prod-api/service-sas/system/config
功能描述: 展示系统配置信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"id": 1,
"owlAgentHost": "192.168.10.151",
"systemHost": "192.168.10.151",
"videoServerHost": "192.168.10.151",
"gatewayName": "网关1",
"daysToKeepHistory": 30,
"maskAvatar": true,
"maskIdCardNo": false,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
}
字段说明(结合表 sas_systesas_config 现表名 sas_system_config):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 系统配置数据对象 |
| data.id | int | 主键id(sas_system_config.id) |
| data.owlAgentHost | string | agent 服务器地址(sas_system_config.owl_agent_host) |
| data.systemHost | string | 系统服务器地址(sas_system_config.system_host) |
| data.videoServerHost | string | 视频服务器地址(sas_system_config.video_server_host) |
| data.gatewayName | string | 网关名称(sas_system_config.gateway_name) |
| data.daysToKeepHistory | int | 数据保留天数(sas_system_config.days_to_keep_history) |
| data.maskAvatar | boolean | 是否显示人员照片(sas_system_config.mask_avatar) |
| data.maskIdCardNo | boolean | 是否显示身份证号(sas_system_config.mask_id_card_no) |
| data.createTime | string | 创建时间,ISO8601 格式(sas_system_config.create_time) |
| data.updateTime | string | 更新时间,ISO8601 格式(sas_system_config.update_time) |
接口地址: PUT /prod-api/service-sas/system/config
功能描述: 编辑系统配置,点击"人员照片、身份证信息"切换到开启状态,设置数据保留天数等
请求参数:
{
"id": 1,
"owlAgentHost": "192.168.10.151",
"systemHost": "192.168.10.151",
"videoServerHost": "192.168.10.151",
"gatewayName": "网关1",
"daysToKeepHistory": 30,
"maskAvatar": true,
"maskIdCardNo": false
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: GET /prod-api/service-sas/agbox/config
功能描述: 展示 Agbox/Metabus 配置信息,并返回当前 MQTT 连接状态、监听状态。
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"id": 1,
"keyds": "agbox_key_12345",
"host": "192.168.10.151",
"port": "1883",
"username": "mqtt_user",
"password": "mqtt_password",
"isTsl": false,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00",
"isConnected": true,
"isListening": true
}
}
字段说明(结合表 sas_config 及运行时 MQTT 状态):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | Agbox/Metabus 配置及状态对象 |
| data.id | int | 主键id(sas_config.id) |
| data.keyds | string | 秘钥 Key(sas_config.keyds) |
| data.host | string | MQTT 服务 IP 地址(sas_config.host) |
| data.port | string | MQTT 服务端口(sas_config.port) |
| data.username | string | MQTT 用户名(sas_config.username) |
| data.password | string | MQTT 密码(sas_config.password) |
| data.isTsl | boolean | 是否安全传输 TLS,对应 is_tsl:true 启用,false 不启用 |
| data.createTime | string | 创建时间,ISO8601 格式(sas_config.create_time) |
| data.updateTime | string | 更新时间,ISO8601 格式(sas_config.update_time) |
| data.isConnected | boolean | MQTT 是否已连接 Broker(运行时状态) |
| data.isListening | boolean | MQTT 是否正在监听、未暂停(运行时状态) |
接口地址: PUT /prod-api/service-sas/agbox/config
功能描述: 编辑Agbox/Metabus配置,输入Agbox的Key、IP地址、端口号、Agbox MQTT服务信息
请求参数:
{
"id": 1,
"keyds": "agbox_key_12345",
"host": "192.168.10.151",
"port": "1883",
"username": "mqtt_user",
"password": "mqtt_password",
"isTsl": false
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: POST /prod-api/service-sas/agbox/mqtt/pause
功能描述: 暂停 MQTT 事件订阅。调用后不再处理新到达的 MQTT 消息,与 Broker 的连接保持不断开;用于临时停止事件入库、减轻负载等场景。
请求参数: 无(Request Body 为空)
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "操作成功",
"data": null
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 操作结果提示信息 |
| data | null | 无业务数据 |
接口地址: POST /prod-api/service-sas/agbox/mqtt/resume
功能描述: 恢复 MQTT 事件订阅。调用后继续处理新到达的 MQTT 消息,与「暂停 MQTT 事件订阅」配对使用。
请求参数: 无(Request Body 为空)
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "操作成功",
"data": null
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 操作结果提示信息 |
| data | null | 无业务数据 |
接口地址: GET /prod-api/service-sas/event/codes
功能描述: 根据系统类型编码返回对应的事件编码(子类型)列表,用于配置事件组、筛选事件类型等。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | int | 是 | 系统类型编码,见 SystemTypeCodeEnum:1001 实时智能分析、1002 视频安防监控、1003 视频导出防护、1004 组合认证控制、1005 出入门禁控制、1006 车牌抓拍分析、1007 入侵紧急报警、1008 实时电子巡检、1009 状态感知探测、1010 数据采集探测、1011 状态采集探测、1012 阻车路障探测 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": [
{ "code": 1, "name": "人员识别" },
{ "code": 2, "name": "人脸识别" }
]
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | array | 事件编码列表;当请求的 code 未匹配任何系统类型时为 null |
| data[].code | int | 事件编码(gauth 时为 functions) |
| data[].name | string | 名称 |
接口地址: GET /prod-api/service-sas/device/heartbeat
功能描述: 查询设备心跳状态
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| deviceId | string | 否 | 设备编号 |
| deviceType | int | 否 | 设备类型 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"id": "device_001",
"deviceId": "DEV001",
"deviceType": 1,
"ipAddr": "192.168.10.100",
"triggerTime": "2026-01-30T10:00:00",
"status": "online",
"lastHeartbeat": "2026-01-30T10:00:00"
}
],
"total": 100,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_event_type_group):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 事件组配置列表 |
| data.list[].id | string | 主键id(sas_event_type_group.id) |
| data.list[].name | string | 事件分组名称(sas_event_type_group.name) |
| data.list[].deviceType | int | 设备事件类型(sas_event_type_group.device_type) |
| data.list[].eventCodes | string | 事件类型编码集合,逗号分隔(sas_event_type_group.event_codes) |
| data.list[].eventLevel | int | 事件等级(sas_event_type_group.event_level,对应事件优先级编码) |
| data.list[].canDel | boolean | 是否可删除:true 可删,false 不可删(sas_event_type_group.can_del) |
| data.list[].createTime | string | 创建时间(sas_event_type_group.create_time) |
| data.list[].updateTime | string | 更新时间(sas_event_type_group.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
字段说明(结合表 sas_device 与心跳时间字段):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 设备心跳列表 |
| data.list[].id | string | 设备主键id(可对应 sas_device.id) |
| data.list[].deviceId | string | 设备编码(sas_device.device_id) |
| data.list[].deviceType | int | 设备类型编码(sas_device.device_type) |
| data.list[].ipAddr | string | 设备 IP 地址(sas_device.ip_addr) |
| data.list[].triggerTime | string | 最近心跳时间(对应 sas_device.trigger_time) |
| data.list[].status | string | 设备在线状态,如 online/offline |
| data.list[].lastHeartbeat | string | 最近一次心跳时间(与 triggerTime 一致或更精确) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/event/group
功能描述: 展示已配置事件组信息,返回事件组名称、设备事件类型名称、事件等级名称以及按系统类型解析后的事件编码列表。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| deviceType | int | 否 | 设备事件类型 |
| name | string | 否 | 事件组名称(模糊查询) |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"id": "group_001",
"name": "报警事件组",
"deviceType": 1007,
"deviceTypeName": "入侵紧急报警",
"eventCodes": [
{ "code": 2001, "name": "入侵报警" },
{ "code": 2002, "name": "紧急报警" }
],
"eventLevel": 1,
"eventLevelName": "紧急",
"canDel": true,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_event_type_group 及各事件编码表,如 sas_alarsas_event_code、sas_snap_type_code 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 事件组配置列表 |
| data.list[].id | string | 主键id(sas_event_type_group.id) |
| data.list[].name | string | 事件分组名称(sas_event_type_group.name) |
| data.list[].deviceType | int | 设备事件类型编码(sas_event_type_group.device_type,对应 SystemTypeCodeEnum.code) |
| data.list[].deviceTypeName | string | 设备事件类型名称(SystemTypeCodeEnum.message,如:入侵紧急报警、实时智能分析等) |
| data.list[].eventCodes | array | 事件编码列表,已按系统类型解析为对象数组 |
| data.list[].eventCodes[].code | int | 事件编码(各事件编码表 code;组合认证 gauth 时为 functions) |
| data.list[].eventCodes[].name | string | 事件名称(各事件编码表 name,gauth 时为 name/actionName) |
| data.list[].eventLevel | int | 事件等级编码(sas_event_type_group.event_level,对应事件优先级编码) |
| data.list[].eventLevelName | string | 事件等级名称,如:紧急/高/普通/无 |
| data.list[].canDel | boolean | 是否可删除:true 可删,false 不可删(sas_event_type_group.can_del) |
| data.list[].createTime | string | 创建时间(sas_event_type_group.create_time) |
| data.list[].updateTime | string | 更新时间(sas_event_type_group.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/event/group
功能描述: 新增事件组,选择设备事件类型并输入事件组名称、选择报警事件
请求参数:
{
"name": "报警事件组",
"deviceType": 1,
"eventCodes": [1001, 1002, 1003],
"eventLevel": 1
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "创建成功",
"data": {
"id": "group_001"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 创建结果提示信息 |
| data | object | 新建结果对象 |
| data.id | string | 新建事件组主键id(对应 sas_event_type_group.id) |
接口地址: PUT /prod-api/service-sas/event/group/{id}
功能描述: 编辑事件组配置
请求参数:
{
"name": "报警事件组",
"deviceType": 1,
"eventCodes": [1001, 1002, 1003],
"eventLevel": 1
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: DELETE /prod-api/service-sas/event/group/{id}
功能描述: 删除事件组配置
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "删除成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 删除结果提示信息 |
接口地址: GET /prod-api/service-sas/event/priority
功能描述: 展示已配置事件优先级信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"urgent": ["group_001", "group_002"],
"high": ["group_003"],
"normal": ["group_004"],
"none": ["group_005"]
}
}
接口地址: PUT /prod-api/service-sas/event/priority
功能描述: 将事件组按照紧急、高、普通、无四个等级进行分类,将事件拖拉至对应等级
请求参数:
{
"urgent": ["group_001", "group_002"],
"high": ["group_003"],
"normal": ["group_004"],
"none": ["group_005"]
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
接口地址: GET /prod-api/service-sas/device/config
功能描述: 可根据报警联动组、视频监控组、设备类型、设备编码、设备ip查询
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| alarmGroupType | string | 否 | 报警联动组 |
| videoGroupType | string | 否 | 视频监控组 |
| deviceType | int | 否 | 设备类型 |
| deviceId | string | 否 | 设备编码 |
| ipAddr | string | 否 | 设备IP |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"id": "device_001",
"deviceId": "DEV001",
"channel": 0,
"deviceType": 1,
"ipAddr": "192.168.10.100",
"port": 8000,
"username": "admin",
"shield": false,
"villageCode": "village_001",
"houseCode": "house_001",
"address": "一楼大厅",
"videoGroupType": "video_group_001",
"alarmGroupType": "alarm_group_001",
"note": "摄像头设备",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 100,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_device):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 设备配置列表 |
| data.list[].id | string | 主键id(sas_device.id) |
| data.list[].deviceId | string | 设备编码(sas_device.device_id) |
| data.list[].channel | int | 通道号(sas_device.channel) |
| data.list[].deviceType | int | 设备类型编码(sas_device.device_type) |
| data.list[].ipAddr | string | 设备 IP 地址(sas_device.ip_addr) |
| data.list[].port | int | 设备端口号(sas_device.port) |
| data.list[].username | string | 登录用户名(sas_device.username) |
| data.list[].shield | boolean | 是否屏蔽设备(sas_device.shield) |
| data.list[].villageCode | string | 地块编码(sas_device.village_code) |
| data.list[].houseCode | string | 部位编码(sas_device.house_code) |
| data.list[].address | string | 设备安装位置(sas_device.address) |
| data.list[].videoGroupType | string | 视频监控组类型(sas_device.video_group_type) |
| data.list[].alarmGroupType | string | 报警联动组类型(sas_device.alarsas_group_type) |
| data.list[].note | string | 备注描述(sas_device.note) |
| data.list[].createTime | string | 创建时间(sas_device.create_time) |
| data.list[].updateTime | string | 更新时间(sas_device.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/device/config
功能描述: 新增设备配置
请求参数:
{
"deviceId": "DEV001",
"channel": 0,
"deviceType": 1,
"ipAddr": "192.168.10.100",
"port": 8000,
"username": "admin",
"password": "password",
"shield": false,
"villageCode": "village_001",
"houseCode": "house_001",
"address": "一楼大厅",
"videoGroupType": "video_group_001",
"alarmGroupType": "alarm_group_001",
"note": "摄像头设备"
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "创建成功",
"data": {
"id": "device_001"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 创建结果提示信息 |
| data | object | 新增结果对象 |
| data.id | string | 新建设备主键id(对应 sas_device.id) |
接口地址: POST /prod-api/service-sas/device/config/batch-add
功能描述: 批量新增同一设备编号下的多条设备记录,常用于一次性为 NVR 设备按通道生成多个设备。后端会根据 channels 字段,从 0 开始依次生成通道号为 0 ~ channels-1 的设备记录;若某个通道已存在相同 deviceId + deviceType + channel 的记录,则该通道会自动跳过,不重复插入。
请求参数:
{
"deviceId": "DEV001",
"deviceType": 1,
"ipAddr": "192.168.10.100",
"port": 8000,
"channels": 4,
"username": "admin",
"password": "password",
"address": "一楼机房",
"houseCode": "house_001",
"videoDeviceType": 2,
"videoProtocol": 2,
"note": "NVR 批量通道设备"
}
字段说明:
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | string | 是 | 设备编号(所有通道共用) |
| deviceType | int | 是 | 设备类型编码(对应 SystemTypeCodeEnum.code) |
| ipAddr | string | 是 | 设备 IP 地址 |
| port | int | 是 | 设备端口 |
| channels | int | 是 | 通道数量,>=1;将生成通道号为 0~channels-1 的多条记录 |
| username | string | 否 | 登录用户名 |
| password | string | 否 | 登录密码 |
| address | string | 否 | 安装位置描述 |
| houseCode | string | 否 | 部位编码(sas_device.house_code) |
| videoDeviceType | int | 否 | 视频设备类型,如 1-IPC、2-NVR 等(对应 sas_device.video_type) |
| videoProtocol | int | 否 | 视频协议,如 1-ONVIF、2-海康、3-大华 等(对应 sas_device.video_protocol) |
| note | string | 否 | 备注说明 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "操作成功",
"data": null
}
补充说明:
deviceId + deviceType + channel 作为唯一键;已存在的通道记录会被跳过,不抛错。gis_id 为空,如需带坐标请使用“设备导入模板 + 批量导入”方式。接口地址: PUT /prod-api/service-sas/device/config/{id}
功能描述: 编辑设备配置
请求参数: 同新增接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: DELETE /prod-api/service-sas/device/config/{id}
功能描述: 删除设备配置
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "删除成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 删除结果提示信息 |
接口地址: POST /prod-api/service-sas/device/syncAgboxDevice
功能描述: 从 AG(Agbox)同步设备到 sas_device。按系统类型(实时智能分析、视频安防监控、出入门禁控制等)依次调用 AG 的 getDeviceList,对每个设备可选调用 getDeviceChannelList;若有通道则按通道落库多条设备,否则按设备落库一条(通道号为 0)。已存在的设备(按 deviceId + deviceType + channel 判定)不会重复插入。若 AG 返回设备经纬度信息则自动写入 sas_gis 并关联设备的 gis_id。依赖 Agbox 配置(sas_config 的 host、port、keyds)。
请求参数: 无(POST 无请求体)
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": null,
"msg": "操作成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 操作结果提示信息 |
接口地址: GET /prod-api/service-sas/device/import/template
功能描述: 获取设备批量导入的 Excel 模板文件。前端调用后浏览器会直接下载一个名为「设备导入模板」的 .xlsx 文件,示例中会包含一行演示数据,方便用户参考填写格式。后续可配合“批量设备导入”接口使用(本次仅实现模板导出)。
请求参数: 无
响应说明:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheetApiResult。模板示例字段(列头与内容示例):
| 列名 | 示例值 | 说明 |
|---|---|---|
| 设备类型(必填) | 1001 | 对应 SystemTypeCodeEnum.code,如 1001-实时智能分析 |
| 设备编号(必填) | test-01 | 设备唯一编号 |
| 设备IP(必填) | 192.168.3.141 | 设备 IP 地址 |
| 端口(必填) | 8000 | 设备端口 |
| 通道号 | 1 | NVR 通道号,普通 IPC 可填 1 或留空 |
| 视频设备类型 | 1 | 预留字段,例如 1-IPC、2-NVR 等 |
| 视频协议 | 2 | 预留字段,例如 1-ONVIF、2-海康、3-大华 等 |
| 用户名 | admin | 登录用户名 |
| 密码 | admin | 登录密码 |
| 备注 | 备注 | 说明文字 |
| 安装位置 | 位置示例 | 安装地点描述 |
| 部位编码(houseCode) | 示例-houseCode | 关联 sas_device.house_code |
| 经度 | 可选,经度 | |
| 纬度 | 可选,纬度 | |
| 高度 | 可选,高度 | |
| 楼层 | 11 | 可选,楼层号 |
接口地址: POST /prod-api/service-sas/device/importBatchDeviceByExcel
功能描述: 通过上传设备导入模板 Excel 文件,批量新增设备到 sas_device 表。系统会按行解析 Excel 内容,对每一行生成一条设备记录;若已存在相同的设备(按 deviceId + deviceType + channel 判重)则跳过,不会重复插入。
请求参数(multipart/form-data):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | file | 是 | 设备导入 Excel 文件(可使用 7.6 接口下载的模板) |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": "设备批量导入成功",
"msg": "操作成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | string | 导入结果提示信息,如“设备批量导入成功” |
| msg | string | 通用提示信息 |
导入规则说明:
deviceId + deviceType + channel 作为唯一键;若数据库中已存在相同组合,则该行数据会被自动跳过,不报错。sas_gis 中生成一条坐标记录,并把 gis_id 关联到设备。sas_device 对应列;is_binding 默认 false,shield 默认 false。接口地址: GET /prod-api/service-sas/alarm/group
功能描述: 展示已添加联动报警组
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"id": "alarm_group_001",
"name": "报警联动组1",
"note": "描述信息",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_alarsas_group_type):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 报警联动组列表 |
| data.list[].id | string | 主键id(sas_alarsas_group_type.id) |
| data.list[].name | string | 报警联动组名称(sas_alarsas_group_type.name) |
| data.list[].note | string | 描述信息(sas_alarsas_group_type.note) |
| data.list[].createTime | string | 创建时间 |
| data.list[].updateTime | string | 更新时间 |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/alarm/group
功能描述: 新增填写名称及描述并将需要联动设备绑定到同一个报警组
请求参数:
{
"name": "报警联动组1",
"note": "描述信息",
"deviceIds": ["device_001", "device_002"]
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "创建成功",
"data": {
"id": "alarm_group_001"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 创建结果提示信息 |
| data | object | 新建结果对象 |
| data.id | string | 新建报警联动组主键id(对应 sas_alarsas_group_type.id) |
接口地址: PUT /prod-api/service-sas/alarm/group/{id}
功能描述: 编辑联动报警组
请求参数: 同新增接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: DELETE /prod-api/service-sas/alarm/group/{id}
功能描述: 删除联动报警组
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "删除成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 删除结果提示信息 |
接口地址: GET /prod-api/service-sas/map
功能描述: 展示已添加地图及绑定设备信息,如摄像头可点击绑定的摄像头图标查看直播与回放
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| parentId | string | 否 | 父地图ID |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"id": "map_001",
"name": "一楼平面图",
"type": 1,
"remark": "描述",
"parentId": null,
"width": 1920,
"height": 1080,
"isMask": false,
"backImgId": "img_001",
"devices": [
{
"id": "map_device_001",
"deviceId": "device_001",
"deviceName": "摄像头1",
"x": 100.5,
"y": 200.3,
"type": "camera"
}
],
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_maps、sas_map_device):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 地图列表 |
| data.list[].id | string | 地图主键id(sas_maps.id) |
| data.list[].name | string | 地图名称(sas_maps.name) |
| data.list[].type | int | 地图类型(sas_maps.type) |
| data.list[].remark | string | 地图描述(sas_maps.remark) |
| data.list[].parentId | string/null | 父地图id(sas_maps.parent_id) |
| data.list[].width | number | 画布宽度(sas_maps.width) |
| data.list[].height | number | 画布高度(sas_maps.height) |
| data.list[].isMask | boolean | 超出画布是否隐藏(sas_maps.is_mask) |
| data.list[].backImgId | string | 背景图片id(sas_maps.back_img_id) |
| data.list[].devices | array | 绑定在该地图上的设备列表(关联 sas_map_device) |
| data.list[].devices[].id | string | 地图设备主键id(sas_map_device.id) |
| data.list[].devices[].deviceId | string | 绑定设备id(sas_map_device.device_id) |
| data.list[].devices[].deviceName | string | 设备名称(业务字段,便于展示) |
| data.list[].devices[].x | number | 设备在地图上的 X 坐标(sas_map_device.x) |
| data.list[].devices[].y | number | 设备在地图上的 Y 坐标(sas_map_device.y) |
| data.list[].devices[].type | string | 地图设备类型,如 camera 等(sas_map_device.type) |
| data.list[].createTime | string | 地图创建时间(sas_maps.create_time) |
| data.list[].updateTime | string | 地图更新时间(sas_maps.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/map
功能描述: 在地图导航添加地图名称及地图描述;再点击上传图片将项目平面图上传并开启父地图
请求参数:
{
"name": "一楼平面图",
"type": 1,
"remark": "描述",
"parentId": null,
"width": 1920,
"height": 1080,
"isMask": false,
"backImgId": "img_001"
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "创建成功",
"data": {
"id": "map_001"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 创建结果提示信息 |
| data | object | 新建结果对象 |
| data.id | string | 新建地图主键id(对应 sas_maps.id) |
接口地址: PUT /prod-api/service-sas/map/{id}
功能描述: 编辑电子地图
请求参数: 同新增接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "更新成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 更新结果提示信息 |
接口地址: DELETE /prod-api/service-sas/map/{id}
功能描述: 删除电子地图。会递归删除当前地图及其所有子地图,并同时删除这些地图下绑定的所有设备点位(sas_map_device 记录)。
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "删除成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 删除结果提示信息 |
接口地址: POST /prod-api/service-sas/map/{mapId}/device
功能描述: 在地图上绑定设备
请求参数:
{
"deviceId": "device_001",
"imgId": "img_002",
"type": "camera",
"x": 100.5,
"y": 200.3,
"width": 50,
"height": 50,
"angle": 0,
"text": "摄像头1"
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "绑定成功",
"data": {
"id": "map_device_001"
}
}
字段说明(结合表 sas_map_device):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 绑定结果提示信息 |
| data | object | 新建地图设备对象 |
| data.id | string | 地图设备主键id(sas_map_device.id) |
接口地址: DELETE /prod-api/service-sas/map/{mapId}/device/{deviceId}
功能描述: 解绑地图设备
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "解绑成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 解绑结果提示信息 |
接口地址: GET /prod-api/service-sas/video/protection
功能描述: 显示与电子地图一致,右下角会有视频导出防护事件
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"enabled": true,
"events": [
{
"eventId": "event_001",
"deviceId": "device_001",
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 2001
}
]
}
}
字段说明(结合表 sas_video_event 或相关事件表):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 视频导出防护配置对象 |
| data.enabled | boolean | 是否启用视频导出防护 |
| data.events | array | 告警事件列表 |
| data.events[].eventId | string | 事件编码(对应各事件表 event_id) |
| data.events[].deviceId | string | 设备编号(各事件表 device_id) |
| data.events[].triggerTime | string | 触发时间(各事件表 trigger_time) |
| data.events[].eventCode | int | 事件编码(各事件编码表 code) |
接口地址: GET /prod-api/service-sas/patrol/config
功能描述: 显示与电子地图一致,右下角会有实时电子巡检事件
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"enabled": true,
"events": [
{
"eventId": "event_001",
"deviceId": "device_001",
"name": "巡检员1",
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 3001
}
]
}
}
字段说明(结合表 sas_patrol_event、sas_patrol_event_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 实时电子巡检配置对象 |
| data.enabled | boolean | 是否启用实时电子巡检事件展示 |
| data.events | array | 巡检事件列表 |
| data.events[].eventId | string | 事件编码(sas_patrol_event.event_id) |
| data.events[].deviceId | string | 设备编号(sas_patrol_event.device_id) |
| data.events[].name | string | 巡检人姓名(sas_patrol_event.name) |
| data.events[].triggerTime | string | 触发时间(sas_patrol_event.trigger_time) |
| data.events[].eventCode | int | 事件编码(sas_patrol_event.event_code / sas_patrol_event_code.code) |
首页包含以下功能区域:
接口地址: GET /prod-api/service-sas/homepage/info
功能描述: 首页综合信息查询。包含:左上角已添加摄像头列表(可点击直播或回放);设备与事件统计;左下角服务器信息与资源使用情况(JVM 内存、处理器数等)。
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"cameras": [
{
"id": "device_001",
"name": "摄像头1",
"ipAddr": "192.168.10.100",
"status": "online",
"liveUrl": "rtsp://192.168.10.100:554/stream",
"playbackUrl": "http://192.168.10.151/playback"
}
],
"statistics": {
"totalDevices": 100,
"onlineDevices": 95,
"todayEvents": 50,
"alarmEvents": 5
},
"serverInfo": {
"memoryMaxMb": 1024,
"memoryUsedMb": 256,
"memoryFreeMb": 768,
"availableProcessors": 8,
"serverTime": "2026-02-27T10:00:00"
}
}
}
字段说明(部分字段结合表 sas_device、事件表等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 首页综合信息对象 |
| data.cameras | array | 首页左上角摄像头列表,来源于设备表 sas_device |
| data.cameras[].id | string | 设备主键id(sas_device.id) |
| data.cameras[].name | string | 摄像头名称 |
| data.cameras[].ipAddr | string | 摄像头 IP 地址(sas_device.ip_addr) |
| data.cameras[].status | string | 在线状态 |
| data.cameras[].liveUrl | string | 实时直播地址 |
| data.cameras[].playbackUrl | string | 回放地址 |
| data.statistics | object | 设备与事件统计信息 |
| data.statistics.totalDevices | int | 设备总数 |
| data.statistics.onlineDevices | int | 在线设备数量 |
| data.statistics.todayEvents | int | 今日事件总数 |
| data.statistics.alarmEvents | int | 今日报警事件数量 |
| data.serverInfo | object | 服务器资源使用情况 |
| data.serverInfo.memoryMaxMb | int | JVM 最大内存(MB) |
| data.serverInfo.memoryUsedMb | int | JVM 已用内存(MB) |
| data.serverInfo.memoryFreeMb | int | JVM 空闲内存(MB) |
| data.serverInfo.availableProcessors | int | 可用处理器核心数 |
| data.serverInfo.serverTime | string | 服务器当前时间 |
接口地址: GET /prod-api/service-sas/homepage/events
功能描述: 中上部分「事件列表」模块使用。查看各模块(智能分析抓拍、报警、出入口、停车、巡更等)所有事件信息,支持分页与按事件类型、设备、时间筛选。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| eventType | string | 否 | 事件类型:snap / alarm / entrance / parking / patrol,不传则默认 snap |
| current | int | 否 | 页码,默认 1 |
| size | int | 否 | 每页数量,默认 10 |
| deviceId | string | 否 | 设备编号 |
| startTime | string | 否 | 开始时间(ISO 格式) |
| endTime | string | 否 | 结束时间(ISO 格式) |
响应示例: 与智能分析事件分页一致,返回 data.list、data.total、data.current、data.size,列表中每项为事件对象(含 eventId、deviceId、triggerTime、eventCode 等)。
接口地址: GET /prod-api/service-sas/homepage/realtimeNotificationEvents
功能描述: 中上部分「实时事件」弹窗使用。返回最近一批开启通知的事件,用于弹窗左侧播放关联摄像头、右侧展示事件信息,支持提前关闭。最多返回 20 条,按触发时间倒序。
请求参数: 无
响应示例: 返回数组,每项为事件对象(结构同事件列表单项)。
接口地址: GET /prod-api/service-sas/homepage/alertHistory
功能描述: 中下部分使用。按分类显示各类型开启通知的事件预警历史,支持分页;前端可点击详情重新查看。当前支持事件类型为智能分析抓拍(snap)。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码,默认 1 |
| size | int | 否 | 每页数量,默认 10 |
| eventType | string | 否 | 事件类型,默认 snap |
响应示例: 分页结构同事件列表,data.list 为开启通知的预警事件列表。
接口地址: GET /prod-api/service-sas/map/navigate
功能描述: 在电子地图中,将鼠标放置在点位图标上,此时会将绑定的设备信息展示出来
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mapId | string | 是 | 地图ID |
| x | decimal | 否 | X坐标 |
| y | decimal | 否 | Y坐标 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"map": {
"id": "map_001",
"name": "一楼平面图",
"backImgUrl": "http://192.168.10.151/images/map_001.jpg"
},
"devices": [
{
"id": "map_device_001",
"deviceId": "device_001",
"deviceName": "摄像头1",
"deviceType": "camera",
"x": 100.5,
"y": 200.3,
"status": "online"
}
]
}
}
接口地址: GET /prod-api/service-sas/map/device/{deviceId}/detail
功能描述: 获取地图上设备的详细信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"id": "device_001",
"deviceId": "DEV001",
"name": "摄像头1",
"type": "camera",
"ipAddr": "192.168.10.100",
"status": "online",
"liveUrl": "rtsp://192.168.10.100:554/stream",
"playbackUrl": "http://192.168.10.151/playback",
"address": "一楼大厅"
}
}
接口地址: GET /prod-api/service-sas/intelligent/events
功能描述: 点击头部不同事件类型显示所有相关事件的记录
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| eventType | string | 是 | 事件类型(snap/alarm/entrance/parking/patrol等) |
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| startTime | datetime | 否 | 开始时间 |
| endTime | datetime | 否 | 结束时间 |
| deviceId | string | 否 | 设备编号 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "event_001",
"deviceId": "device_001",
"deviceName": "摄像头1",
"channel": 0,
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 1001,
"eventName": "人员识别",
"picId": "pic_001",
"picUrl": "http://192.168.10.151/images/pic_001.jpg",
"similarity": 95,
"personCode": "person_001",
"personName": "张三"
}
],
"total": 100,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_snap_event、sas_snap_type_code 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 智能分析事件列表 |
| data.list[].eventId | string | 事件编码(sas_snap_event.event_id 等) |
| data.list[].deviceId | string | 设备编号(sas_snap_event.device_id) |
| data.list[].deviceName | string | 设备名称(业务字段) |
| data.list[].channel | int | 通道号(sas_snap_event.channel) |
| data.list[].triggerTime | string | 触发时间(sas_snap_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_snap_event.event_code / sas_snap_type_code.code) |
| data.list[].eventName | string | 事件名称 |
| data.list[].picId | string | 图片id(sas_snap_event.event_pic_id 或 scene_pic_id) |
| data.list[].picUrl | string | 图片访问地址(关联 sas_pic.url/path) |
| data.list[].similarity | int | 比对相似度(sas_snap_event.similarity) |
| data.list[].personCode | string | 人员编码(sas_snap_event.person_code) |
| data.list[].personName | string | 人员姓名(关联 sas_person.name) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/intelligent/snap
功能描述: 查询实时智能分析事件(人脸识别等)
请求参数: 同查询事件信息接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "snap_001",
"deviceId": "device_001",
"channel": 0,
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 1001,
"eventName": "人员识别",
"scenePicId": "pic_001",
"eventPicId": "pic_002",
"similarity": 95,
"personCode": "person_001",
"personName": "张三",
"notify": true,
"scene": true
}
],
"total": 100,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_snap_event):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 实时智能分析事件列表 |
| data.list[].eventId | string | 事件编码(sas_snap_event.event_id) |
| data.list[].deviceId | string | 设备编号(sas_snap_event.device_id) |
| data.list[].channel | int | 通道号(sas_snap_event.channel) |
| data.list[].triggerTime | string | 触发时间(sas_snap_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_snap_event.event_code) |
| data.list[].eventName | string | 事件名称 |
| data.list[].scenePicId | string | 场景图片id(sas_snap_event.scene_pic_id) |
| data.list[].eventPicId | string | 事件图片id(sas_snap_event.event_pic_id) |
| data.list[].similarity | int | 比对相似度(sas_snap_event.similarity) |
| data.list[].personCode | string | 人员编码(sas_snap_event.person_code) |
| data.list[].personName | string | 人员姓名(关联 sas_person.name) |
| data.list[].notify | boolean | 是否本地 MQTT 通知(sas_snap_event.notify) |
| data.list[].scene | boolean | 是否包含场景图片(sas_snap_event.scene) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/intelligent/alarm
功能描述: 查询入侵紧急报警事件
请求参数: 同查询事件信息接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "alarm_001",
"deviceId": "device_001",
"channel": 0,
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 2001,
"eventName": "入侵报警",
"picId": "pic_001",
"relPerson": "person_001",
"dealPerson": "user_001",
"eventSystem": 1
}
],
"total": 50,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_alarsas_event、sas_alarsas_event_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 报警事件列表 |
| data.list[].eventId | string | 事件编码(sas_alarsas_event.event_id) |
| data.list[].deviceId | string | 设备编号(sas_alarsas_event.device_id) |
| data.list[].channel | int | 通道号(sas_alarsas_event.channel) |
| data.list[].triggerTime | string | 触发时间(sas_alarsas_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_alarsas_event.event_code / sas_alarsas_event_code.code) |
| data.list[].eventName | string | 事件名称 |
| data.list[].picId | string | 事件图片id(sas_alarsas_event.pic_id) |
| data.list[].relPerson | string | 关联对象(sas_alarsas_event.rel_person) |
| data.list[].dealPerson | string | 发现/处置人员(sas_alarsas_event.deal_person) |
| data.list[].eventSystem | int | 系统编码(sas_alarsas_event.event_system) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/intelligent/entrance
功能描述: 查询出入门禁控制事件
请求参数: 同查询事件信息接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "entrance_001",
"deviceId": "device_001",
"channel": 0,
"certifiedType": 1,
"certifiedNo": "110101199001011234",
"name": "张三",
"phone": "13800138000",
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 3001,
"cardId": "card_001",
"similarity": 98,
"picId": "pic_001"
}
],
"total": 200,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_entrance_event、sas_entrance_event_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 门禁事件列表 |
| data.list[].eventId | string | 事件编码(sas_entrance_event.event_id) |
| data.list[].deviceId | string | 设备编号(sas_entrance_event.device_id) |
| data.list[].channel | int | 通道号(sas_entrance_event.channel) |
| data.list[].certifiedType | int | 证件类型(sas_entrance_event.certified_type) |
| data.list[].certifiedNo | string | 证件号码(sas_entrance_event.certified_no) |
| data.list[].name | string | 姓名(sas_entrance_event.name) |
| data.list[].phone | string | 电话(sas_entrance_event.phone) |
| data.list[].triggerTime | string | 触发时间(sas_entrance_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_entrance_event.event_code / sas_entrance_event_code.code) |
| data.list[].cardId | string | 卡号(sas_entrance_event.card_id) |
| data.list[].similarity | int | 比对相似度(sas_entrance_event.similarity) |
| data.list[].picId | string | 图片id(sas_entrance_event.pic_id) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/intelligent/parking
功能描述: 查询停车场车牌抓拍事件
请求参数: 同查询事件信息接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "parking_001",
"deviceId": "device_001",
"channel": 0,
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 4001,
"entranceCode": "entrance_001",
"plateNo": "京A12345",
"plateType": 1,
"plateColor": "blue",
"carType": 1,
"accessType": 1,
"similarity": 95,
"platePicId": "pic_001",
"eventPicId": "pic_002"
}
],
"total": 150,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_parking_event、sas_parking_event_code、sas_car_type_code 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 停车场车牌抓拍事件列表 |
| data.list[].eventId | string | 事件编码(sas_parking_event.event_id) |
| data.list[].deviceId | string | 设备编号(sas_parking_event.device_id) |
| data.list[].channel | int | 通道号(sas_parking_event.channel) |
| data.list[].triggerTime | string | 触发时间(sas_parking_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_parking_event.event_code / sas_parking_event_code.code) |
| data.list[].entranceCode | string | 出入口编号(sas_parking_event.entrance_code) |
| data.list[].plateNo | string | 车牌号码(sas_parking_event.plate_no) |
| data.list[].plateType | int | 车牌类型(sas_parking_event.plate_type / sas_plate_type_code.code) |
| data.list[].plateColor | string | 车牌颜色(sas_parking_event.plate_color / sas_plate_color.code) |
| data.list[].carType | int | 车辆类型(sas_parking_event.car_type / sas_car_type_code.code) |
| data.list[].accessType | int | 出入类型:1 进、2 出、9 抓拍(sas_parking_event.access_type) |
| data.list[].similarity | int | 识别可信度(sas_parking_event.similarity) |
| data.list[].platePicId | string | 车牌照片id(sas_parking_event.plate_pic_id) |
| data.list[].eventPicId | string | 事件图片id(sas_parking_event.event_pic_id) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/intelligent/patrol
功能描述: 查询实时电子巡检事件
请求参数: 同查询事件信息接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"eventId": "patrol_001",
"deviceId": "device_001",
"channel": 0,
"triggerTime": "2026-01-30T10:00:00",
"eventCode": 5001,
"name": "巡检员1",
"credentialType": 1,
"credentialNo": "110101199001011234",
"typeName": "正常巡检",
"picId": "pic_001"
}
],
"total": 80,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_patrol_event、sas_patrol_event_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 巡检事件列表 |
| data.list[].eventId | string | 事件编码(sas_patrol_event.event_id) |
| data.list[].deviceId | string | 设备编号(sas_patrol_event.device_id) |
| data.list[].channel | int | 通道号(sas_patrol_event.channel) |
| data.list[].triggerTime | string | 触发时间(sas_patrol_event.trigger_time) |
| data.list[].eventCode | int | 事件编码(sas_patrol_event.event_code / sas_patrol_event_code.code) |
| data.list[].name | string | 巡检人姓名(sas_patrol_event.name) |
| data.list[].credentialType | int | 证件类型编码(sas_patrol_event.credential_type) |
| data.list[].credentialNo | string | 证件号(sas_patrol_event.credential_no) |
| data.list[].typeName | string | 巡检类型名称(sas_patrol_event.type_name) |
| data.list[].picId | string | 照片id(sas_patrol_event.pic_id) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: GET /prod-api/service-sas/personnel/whitelist
功能描述: 同步agbox白名单,正常展示:姓名、人脸照片、备注、更新时间、详情
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| name | string | 否 | 姓名(模糊查询) |
| personCode | string | 否 | 人员编码 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"personCode": "person_001",
"name": "张三",
"picId": "pic_001",
"picUrl": "http://192.168.10.151/images/pic_001.jpg",
"remark": "备注信息",
"updateTime": "2026-01-30T10:00:00",
"credentialType": 1,
"credentialNo": "110101199001011234"
}
],
"total": 100,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_person、sas_credential_type_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 白名单人员列表 |
| data.list[].personCode | string | 人员唯一编码(sas_person.person_code) |
| data.list[].name | string | 姓名(sas_person.name) |
| data.list[].picId | string | 人脸图片id(sas_person.pic_id) |
| data.list[].picUrl | string | 人脸图片访问地址(关联 sas_pic.url) |
| data.list[].remark | string | 备注信息 |
| data.list[].updateTime | string | 人员更新时间(sas_person.update_time) |
| data.list[].credentialType | int | 证件类型编码(sas_person.credential_type / sas_credential_type_code.code) |
| data.list[].credentialNo | string | 证件号码(sas_person.credential_no) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/personnel/whitelistSync
功能描述: 从agbox同步白名单数据
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "同步成功",
"data": {
"syncCount": 50
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 同步结果提示信息 |
| data | object | 同步结果对象 |
| data.syncCount | int | 本次同步的记录数量 |
接口地址: GET /prod-api/service-sas/personnel/whitelist/{personCode}
功能描述: 查询白名单人员详细信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"personCode": "person_001",
"name": "张三",
"credentialType": 1,
"credentialNo": "110101199001011234",
"picId": "pic_001",
"picUrl": "http://192.168.10.151/images/pic_001.jpg",
"phone1": "13800138000",
"phone2": "010-12345678",
"remark": "备注信息",
"updateTime": "2026-01-30T10:00:00"
}
}
字段说明(结合表 sas_person、sas_credential_type_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 白名单人员详情对象 |
| data.personCode | string | 人员唯一编码(sas_person.person_code) |
| data.name | string | 姓名(sas_person.name) |
| data.credentialType | int | 证件类型编码(sas_person.credential_type / sas_credential_type_code.code) |
| data.credentialNo | string | 证件号码(sas_person.credential_no) |
| data.picId | string | 人脸图片id(sas_person.pic_id) |
| data.picUrl | string | 人脸图片访问地址(关联 sas_pic.url) |
| data.phone1 | string | 电话1(sas_person.phone1) |
| data.phone2 | string | 电话2(sas_person.phone2) |
| data.remark | string | 备注信息 |
| data.updateTime | string | 更新时间(sas_person.update_time) |
接口地址: GET /prod-api/service-sas/personnel/blacklist
功能描述: 同步agbox黑名单展示字段与白名单相同
请求参数: 同白名单查询接口
响应示例: 同白名单查询接口
接口地址: POST /prod-api/service-sas/personnel/blacklistSync
功能描述: 从agbox同步黑名单数据
请求参数: 无
响应示例: 同白名单同步接口
接口地址: GET /prod-api/service-sas/personnel/blacklist/{personCode}
功能描述: 查询黑名单人员详细信息
请求参数: 无
响应示例: 同白名单详情接口
接口地址: GET /prod-api/service-sas/personnel/registered
功能描述: 同步agbox白名单,默认展示:姓名、证件类型、证件号码、人员类型、更新日期、详情
请求参数: 同白名单查询接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"personCode": "person_001",
"name": "张三",
"credentialType": 1,
"credentialNo": "110101199001011234",
"credentialTypeName": "身份证",
"peopleTypeCode": 1,
"peopleTypeName": "常住人口",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 200,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_person、sas_credential_type_code、sas_people_type_code/sas_person_type_code):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 在册人员列表 |
| data.list[].personCode | string | 人员唯一编码(sas_person.person_code) |
| data.list[].name | string | 姓名(sas_person.name) |
| data.list[].credentialType | int | 证件类型编码(sas_person.credential_type) |
| data.list[].credentialNo | string | 证件号码(sas_person.credential_no) |
| data.list[].credentialTypeName | string | 证件类型名称(sas_credential_type_code.name) |
| data.list[].peopleTypeCode | int | 人员类型编码(sas_person.person_type_code / sas_people_type_code.code) |
| data.list[].peopleTypeName | string | 人员类型名称 |
| data.list[].updateTime | string | 更新时间(sas_person.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/personnel/registeredSync
功能描述: 从agbox同步在册人员数据
请求参数: 无
响应示例: 同白名单同步接口
接口地址: GET /prod-api/service-sas/personnel/registered/{personCode}
功能描述: 查询在册人员详细信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"personCode": "person_001",
"name": "张三",
"credentialType": 1,
"credentialNo": "110101199001011234",
"credentialTypeName": "身份证",
"peopleTypeCode": 1,
"peopleTypeName": "常住人口",
"picId": "pic_001",
"phone1": "13800138000",
"phone2": "010-12345678",
"phone3": null,
"entranceTypeCode": null,
"entranceTypeName": null,
"remark": null,
"educationCode": 1,
"maritalStatusCode": 1,
"nationalityCode": "CHN",
"origin": "北京市",
"placeOfBirth": "北京市",
"updateTime": "2026-01-30T10:00:00"
}
}
字段说明(结合表 sas_person、sas_education_code、sas_marital_status_code、sas_nationality_code 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 在册人员详情对象 |
| data.personCode | string | 人员唯一编码(sas_person.person_code) |
| data.name | string | 姓名(sas_person.name) |
| data.credentialType | int | 证件类型编码(sas_person.credential_type) |
| data.credentialNo | string | 证件号码(sas_person.credential_no) |
| data.credentialTypeName | string | 证件类型名称(sas_credential_type_code.name,如:身份证) |
| data.peopleTypeCode | int | 人员类型编码(sas_person.people_type_code) |
| data.peopleTypeName | string | 人员类型名称(sas_people_type_code.name,如:常住人口) |
| data.picId | string | 人脸图片id(sas_person.pic_id) |
| data.phone1 | string | 电话1(sas_person.phone1) |
| data.phone2 | string | 电话2(sas_person.phone2) |
| data.phone3 | string | 电话3(sas_person.phone3) |
| data.entranceTypeCode | int | 出入类型编码(sas_person.entrance_type_code) |
| data.entranceTypeName | string | 出入类型名称(暂无编码表时可为空) |
| data.remark | string | 备注(sas_person 表暂无该字段时可为空) |
| data.educationCode | int | 学历编码(sas_person.education_code / sas_education_code.code) |
| data.maritalStatusCode | int | 婚姻状况编码(sas_person.marital_status_code / sas_marital_status_code.code) |
| data.nationalityCode | string | 国家编码(sas_person.nationality_code / sas_nationality_code.code) |
| data.origin | string | 籍贯(sas_person.origin) |
| data.placeOfBirth | string | 出生地(sas_person.place_of_birth) |
| data.updateTime | string | 更新时间(sas_person.update_time) |
接口地址: GET /prod-api/service-sas/personnel/follow
功能描述: 同步agbox黑名单展示字段与关注人员相同
请求参数: 同白名单查询接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"personCode": "person_001",
"name": "张三",
"followPeopleType": 1,
"followPeopleTypeName": "重点关注",
"picId": "pic_001",
"picUrl": "http://192.168.10.151/images/pic_001.jpg",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 50,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_follow_person、sas_follow_people_type、sas_pic):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 关注人员列表 |
| data.list[].personCode | string | 人员编码(sas_follow_person.person_code) |
| data.list[].name | string | 姓名(sas_follow_person.name) |
| data.list[].followPeopleType | int | 关注人员类型编码(sas_follow_person.follow_people_type / sas_follow_people_type.code) |
| data.list[].followPeopleTypeName | string | 关注人员类型名称(sas_follow_people_type.name) |
| data.list[].picId | string | 图片地址id(sas_follow_person.pic_id) |
| data.list[].picUrl | string | 图片访问地址(关联 sas_pic.url) |
| data.list[].updateTime | string | 更新时间(sas_follow_person.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/personnel/followSync
功能描述: 从agbox同步关注人员数据
请求参数: 无
响应示例: 同白名单同步接口
接口地址: GET /prod-api/service-sas/personnel/follow/{personCode}
功能描述: 查询关注人员详细信息
请求参数: 无
响应示例: 同关注人员查询接口,包含更多详细信息
接口地址: GET /prod-api/service-sas/one-standard-six-realities/power
功能描述: 与关注人员相同
请求参数: 同人员查询接口
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"personCode": "person_001",
"name": "张三",
"powerCode": "power_001",
"powerName": "保安",
"securityCardNo": "SEC001",
"securityDutiesCode": "duty_001",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 30,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_person、sas_power_code、sas_security_duties_code 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 实有力量人员列表 |
| data.list[].personCode | string | 人员编码(sas_person.person_code) |
| data.list[].name | string | 姓名(sas_person.name) |
| data.list[].powerCode | string | 实有力量分类编码(sas_person.power_code / sas_power_code.code) |
| data.list[].powerName | string | 实有力量分类名称(sas_power_code.name) |
| data.list[].securityCardNo | string | 保安人员卡号(sas_person.security_card_no) |
| data.list[].securityDutiesCode | string | 安全职责编码(sas_person.security_duties_code / sas_security_duties_code.code) |
| data.list[].updateTime | string | 更新时间(sas_person.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/powerSync
功能描述: 从agbox同步实有力量数据
请求参数: 无
响应示例: 同人员同步接口
接口地址: GET /prod-api/service-sas/one-standard-six-realities/facility
功能描述: 同步agbox
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| equipType | int | 否 | 装备类型 |
| villageCode | string | 否 | 地块编码 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"code": "equip_001",
"equipName": "消防栓",
"equipType": 1,
"equipTypeName": "消防设施",
"villageCode": "village_001",
"floor": 1,
"urlId": "img_001",
"picUrl": "http://192.168.10.151/images/img_001.jpg",
"gisId": "gis_001",
"remark": "备注",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 50,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_equip、sas_equip_code、sas_village、sas_pic、sas_gis):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 实有设施(装备)列表 |
| data.list[].code | string | 装备编码(sas_equip.code) |
| data.list[].equipName | string | 装备昵称(sas_equip.equip_name) |
| data.list[].equipType | int | 装备类型编码(sas_equip.equip_type / sas_equip_code.code) |
| data.list[].equipTypeName | string | 装备类型名称(sas_equip_code.name) |
| data.list[].villageCode | string | 地块编码(sas_equip.village_code / sas_village.village_code) |
| data.list[].floor | int | 楼层(sas_equip.floor) |
| data.list[].urlId | string | 装备图片地址id(sas_equip.url_id / sas_pic.id) |
| data.list[].picUrl | string | 装备图片访问地址(关联 sas_pic.url) |
| data.list[].gisId | string | 定位地址id(sas_equip.gis_id / sas_gis.id) |
| data.list[].remark | string | 备注(sas_equip.remark) |
| data.list[].createTime | string | 创建时间(sas_equip.create_time) |
| data.list[].updateTime | string | 更新时间(sas_equip.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/facilitySync
功能描述: 从agbox同步实有设施数据
请求参数: 无
响应示例: 同人员同步接口
接口地址: GET /prod-api/service-sas/one-standard-six-realities/entrance
功能描述: 同步agbox
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| villageCode | string | 否 | 地块编码 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"entranceCode": "entrance_001",
"name": "主入口",
"villageCode": "village_001",
"address": "一楼大厅",
"deviceIds": ["device_001", "device_002"],
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_entrance_event、sas_village、sas_device 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 出入口信息列表 |
| data.list[].entranceCode | string | 出入口编号(来自停车/门禁事件 entrance_code 或独立配置) |
| data.list[].name | string | 出入口名称 |
| data.list[].villageCode | string | 地块编码(sas_village.village_code) |
| data.list[].address | string | 地址 |
| data.list[].deviceIds | array | 关联设备id 列表(关联 sas_device.id) |
| data.list[].createTime | string | 创建时间 |
| data.list[].updateTime | string | 更新时间 |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/entranceSync
功能描述: 从agbox同步出入口数据
请求参数: 无
响应示例: 同人员同步接口
接口地址: GET /prod-api/service-sas/one-standard-six-realities/area
功能描述: 同步agbox
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| villageCode | string | 否 | 地块编码 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"buildingCode": "building_001",
"buildingNo": "B001",
"floorTotal": 10,
"houseTotal": 100,
"note": "区域描述",
"gisId": "gis_001",
"villageCode": "village_001",
"placeType": 1,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 20,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_building、sas_village、sas_gis、sas_place_type 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 区域信息列表 |
| data.list[].buildingCode | string | 区域编码(sas_building.building_code) |
| data.list[].buildingNo | string | 区域编号(sas_building.building_no) |
| data.list[].floorTotal | int | 楼层数(sas_building.floor_total) |
| data.list[].houseTotal | int | 户数(sas_building.house_total) |
| data.list[].note | string | 区域描述(sas_building.note) |
| data.list[].gisId | string | gis 定位id(sas_building.gis_id / sas_gis.id) |
| data.list[].villageCode | string | 地块编码(sas_building.village_code / sas_village.village_code) |
| data.list[].placeType | int | 用途类型编码(sas_building.place_type / sas_place_type.id) |
| data.list[].createTime | string | 创建时间(sas_building.create_time) |
| data.list[].updateTime | string | 更新时间(sas_building.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/areaSync
功能描述: 从agbox同步区域信息数据
请求参数: 无
响应示例: 同人员同步接口
接口地址: GET /prod-api/service-sas/one-standard-six-realities/house
功能描述: 同步agbox
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| buildingCode | string | 否 | 区域编码 |
| villageCode | string | 否 | 地块编码 |
| houseNo | string | 否 | 部位编号 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"houseCode": "house_001",
"houseNo": "101",
"houseName": "101室",
"floor": 1,
"houseLabelCode": 1,
"houseLabel": "住宅",
"housePurposeCode": 1,
"housePurpose": "居住",
"note": "部位描述",
"isPublic": false,
"isAction": true,
"systemTypeCode": 1,
"buildingCode": "building_001",
"gisId": "gis_001",
"personNumber": 3,
"houseArea": 100,
"villageCode": "village_001",
"tags": "tag1,tag2",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 500,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_house、sas_house_type_code、sas_house_purpose_code、sas_village、sas_building 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 房屋(部位)信息列表 |
| data.list[].houseCode | string | 部位编码(sas_house.house_code) |
| data.list[].houseNo | string | 部位编号(sas_house.house_no) |
| data.list[].houseName | string | 部位名称(sas_house.house_name) |
| data.list[].floor | int | 楼层(sas_house.floor) |
| data.list[].houseLabelCode | int | 部位类别编码(sas_house.house_label_code / sas_house_type_code.id) |
| data.list[].houseLabel | string | 部位类别名称(sas_house.house_label) |
| data.list[].housePurposeCode | int | 部位用途编码(sas_house.house_purpose_code / sas_house_purpose_code.id) |
| data.list[].housePurpose | string | 部位用途名称(sas_house.house_purpose) |
| data.list[].note | string | 部位描述(sas_house.note) |
| data.list[].isPublic | boolean | 是否公共部位(sas_house.is_public) |
| data.list[].isAction | boolean | 是否受控区域(sas_house.is_action) |
| data.list[].systemTypeCode | int | 系统类型编码(sas_house.systesas_type_code / sas_systesas_type_code.code) |
| data.list[].buildingCode | string | 区域编码(sas_house.building_code / sas_building.building_code) |
| data.list[].gisId | string | 经纬度id(sas_house.gis_id / sas_gis.id) |
| data.list[].personNumber | int | 最大居住/办公人数(sas_house.person_number) |
| data.list[].houseArea | int | 部位面积(sas_house.house_area) |
| data.list[].villageCode | string | 地块编码(sas_house.village_code / sas_village.village_code) |
| data.list[].tags | string | 系统标签(sas_house.tags) |
| data.list[].createTime | string | 创建时间(sas_house.create_time) |
| data.list[].updateTime | string | 更新时间(sas_house.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/houseSync
功能描述: 从 agbox 同步房屋信息数据。可选传入 buildingCode 仅同步指定区域下的房屋。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| buildingCode | string | 否 | 区域编码,不传则同步全部房屋 |
响应示例: 同人员同步接口
接口地址: GET /prod-api/service-sas/one-standard-six-realities/village
功能描述: 同步agbox
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
| villageName | string | 否 | 地块名称(模糊查询) |
| isDefault | boolean | 否 | 是否默认 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"villageCode": "village_001",
"villageName": "XX小区",
"address": "XX路XX号",
"provinceCode": 110000,
"provinceName": "上海市",
"cityCode": 110100,
"cityName": "市辖区",
"districtCode": 110101,
"districtName": "青浦区",
"streetCode": 110101001,
"streetName": "徐泾镇",
"roadCode": "road_001",
"roadName": "华徐公路",
"policeStationCode": "station_001",
"policeStationName": "青浦分局徐乐路派出所",
"latitude": 31.123456,
"longitude": 121.123456,
"altitude": 0,
"companyCode": "company_001",
"companyName": "XX物业公司",
"picUrlId": "img_001",
"gisId": "gis_001",
"gisAreaId": "area_001",
"isDefault": true,
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
],
"total": 5,
"current": 1,
"size": 10
}
}
字段说明(结合表 sas_village、sas_police_station、sas_sys_area 等):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 地块信息列表 |
| data.list[].villageCode | string | 地块编码(sas_village.village_code) |
| data.list[].villageName | string | 地块名称(sas_village.village_name) |
| data.list[].address | string | 地块地址(sas_village.address) |
| data.list[].provinceCode | int | 省编码(sas_village.province_code / sas_sys_area.code) |
| data.list[].provinceName | string | 省份名称(sas_sys_area.name) |
| data.list[].cityCode | int | 市编码(sas_village.city_code / sas_sys_area.code) |
| data.list[].cityName | string | 城市名称(sas_sys_area.name) |
| data.list[].districtCode | int | 区县编码(sas_village.district_code / sas_sys_area.code) |
| data.list[].districtName | string | 区县名称(sas_sys_area.name) |
| data.list[].streetCode | int | 街道编码(sas_village.street_code / sas_sys_area.code) |
| data.list[].streetName | string | 街道名称(sas_sys_area.name) |
| data.list[].roadCode | string | 道路编码(sas_village.road_code) |
| data.list[].roadName | string | 道路名称(sas_sys_area.name) |
| data.list[].policeStationCode | string | 派出所编码(sas_village.police_station_code / sas_police_station.code) |
| data.list[].policeStationName | string | 派出所名称(sas_police_station.name) |
| data.list[].latitude | number | 纬度(sas_gis.lat,无数据时默认 0) |
| data.list[].longitude | number | 经度(sas_gis.lon,无数据时默认 0) |
| data.list[].altitude | number | 高度(sas_gis.alt,无数据时默认 0) |
| data.list[].companyCode | string | 单位编码(sas_village.company_code / sas_company_type_code.code) |
| data.list[].companyName | string | 单位名称(sas_village.company_name) |
| data.list[].picUrlId | string | 图片地址路径id(sas_village.pic_url_id / sas_pic.id) |
| data.list[].gisId | string | gis 定位id(sas_village.gis_id / sas_gis.id) |
| data.list[].gisAreaId | string | 区域坐标id(sas_village.gis_area_id / sas_gis_area.id) |
| data.list[].isDefault | boolean | 是否默认地块(sas_village.is_default) |
| data.list[].createTime | string | 创建时间(sas_village.create_time) |
| data.list[].updateTime | string | 更新时间(sas_village.update_time) |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/one-standard-six-realities/villageSync
功能描述: 从agbox同步地块信息数据
请求参数: 无
响应示例: 同人员同步接口
接口地址: PUT /prod-api/service-sas/one-standard-six-realities/villageDefault/{villageCode}
功能描述: 设置默认地块
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "设置成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 设置默认地块结果提示信息 |
接口地址: GET /prod-api/service-sas/system/info
功能描述: 共分三个模块:系统信息、系统版本、系统备份
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"systemInfo": {
"id": "client_001",
"name": "XX厂商",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
},
"versionInfo": {
"id": 1,
"jarVersion": "1.0.0",
"vueVersion": "1.0.0",
"durationOfUpdate": "5分钟",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
},
"backupInfo": {
"lastBackupTime": "2026-01-30T10:00:00",
"backupFiles": [
{
"fileName": "backup_20260130.sql",
"fileSize": "1024MB",
"createTime": "2026-01-30T10:00:00"
}
]
}
}
}
字段说明(结合表 sas_systesas_info、sas_version_admin 以及备份记录):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 系统信息综合对象 |
| data.systemInfo | object | 系统信息(对应 sas_systesas_info) |
| data.systemInfo.id | string | 客户端id(sas_systesas_info.id) |
| data.systemInfo.name | string | 厂商名称(sas_systesas_info.name) |
| data.systemInfo.createTime | string | 创建时间(sas_systesas_info.create_time) |
| data.systemInfo.updateTime | string | 更新时间(sas_systesas_info.update_time) |
| data.versionInfo | object | 系统版本信息(sas_version_admin) |
| data.versionInfo.id | int | 主键id(sas_version_admin.id) |
| data.versionInfo.jarVersion | string | 后端 jar 版本号(sas_version_admin.jar_version) |
| data.versionInfo.vueVersion | string | 前端 vue 版本号(sas_version_admin.vue_version) |
| data.versionInfo.durationOfUpdate | string | 更新时长描述(sas_version_admin.duration_of_update) |
| data.versionInfo.createTime | string | 创建时间(sas_version_admin.create_time) |
| data.versionInfo.updateTime | string | 更新时间(sas_version_admin.update_time) |
| data.backupInfo | object | 备份信息 |
| data.backupInfo.lastBackupTime | string | 最近一次备份时间 |
| data.backupInfo.backupFiles | array | 备份文件列表 |
| data.backupInfo.backupFiles[].fileName | string | 备份文件名 |
| data.backupInfo.backupFiles[].fileSize | string | 备份文件大小 |
| data.backupInfo.backupFiles[].createTime | string | 备份文件创建时间 |
接口地址: GET /prod-api/service-sas/system/version
功能描述: 查询系统版本信息
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"id": 1,
"jarVersion": "1.0.0",
"vueVersion": "1.0.0",
"durationOfUpdate": "5分钟",
"createTime": "2026-01-30T10:00:00",
"updateTime": "2026-01-30T10:00:00"
}
}
字段说明(结合表 sas_version_admin):
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 系统版本信息对象 |
| data.id | int | 主键id(sas_version_admin.id) |
| data.jarVersion | string | 后端 jar 版本号(sas_version_admin.jar_version) |
| data.vueVersion | string | 前端 vue 版本号(sas_version_admin.vue_version) |
| data.durationOfUpdate | string | 更新时长描述(sas_version_admin.duration_of_update) |
| data.createTime | string | 创建时间(sas_version_admin.create_time) |
| data.updateTime | string | 更新时间(sas_version_admin.update_time) |
接口地址: POST /prod-api/service-sas/system/versionUpgrade
功能描述: 点击升级至最新版本会进行版本号检查并升级
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "升级成功",
"data": {
"jarVersion": "1.0.1",
"vueVersion": "1.0.1"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 升级结果提示信息 |
| data | object | 升级后版本信息 |
| data.jarVersion | string | 新的后端 jar 版本号 |
| data.vueVersion | string | 新的前端 vue 版本号 |
接口地址: POST /prod-api/service-sas/system/backupBd
功能描述: 将当前系统数据库文件进行备份
请求参数: 无
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "备份成功",
"data": {
"fileName": "backup_20260130_100000.sql",
"filePath": "/backup/backup_20260130_100000.sql",
"fileSize": "1024MB"
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 备份结果提示信息 |
| data | object | 备份结果对象 |
| data.fileName | string | 备份文件名 |
| data.filePath | string | 备份文件存储路径 |
| data.fileSize | string | 备份文件大小 |
接口地址: GET /prod-api/service-sas/system/backupList
功能描述: 查询所有备份文件
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 页码 |
| size | int | 否 | 每页数量 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"list": [
{
"fileName": "backup_20260130_100000.sql",
"filePath": "/backup/backup_20260130_100000.sql",
"fileSize": "1024MB",
"createTime": "2026-01-30T10:00:00"
}
],
"total": 10,
"current": 1,
"size": 10
}
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| data | object | 分页数据对象 |
| data.list | array | 备份文件列表 |
| data.list[].fileName | string | 备份文件名 |
| data.list[].filePath | string | 备份文件存储路径 |
| data.list[].fileSize | string | 备份文件大小 |
| data.list[].createTime | string | 备份文件创建时间 |
| data.total | int | 总记录数 |
| data.current | int | 当前页码 |
| data.size | int | 每页数量 |
接口地址: POST /prod-api/service-sas/system/backupRestore
功能描述: 将生成的备份文件上传点击恢复进行数据还原
请求参数:
{
"fileName": "backup_20260130_100000.sql",
"filePath": "/backup/backup_20260130_100000.sql"
}
响应示例:
{
"status": "SUCCESS",
"code": 200,
"msg": "恢复成功"
}
字段说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| status | string | 接口调用状态 |
| code | int | 业务状态码 |
| msg | string | 数据库恢复结果提示信息 |
接口地址: GET /prod-api/service-sas/system/backupDownload/{fileName}
功能描述: 下载备份文件
请求参数: 无
响应: 文件流
| 编码 | 名称 |
|---|---|
| 1 | 摄像头 |
| 2 | 门禁设备 |
| 3 | 报警设备 |
| 4 | 停车设备 |
| 5 | 巡检设备 |
| 编码 | 名称 |
|---|---|
| 1001 | 人员识别 |
| 1002 | 人脸识别 |
| 2001 | 入侵报警 |
| 2002 | 紧急报警 |
| 3001 | 门禁开门 |
| 3002 | 门禁关门 |
| 4001 | 车辆进入 |
| 4002 | 车辆离开 |
| 5001 | 正常巡检 |
| 5002 | 异常巡检 |
| 编码 | 名称 |
|---|---|
| 1 | 身份证 |
| 2 | 护照 |
| 3 | 军官证 |
| 4 | 其他 |
| 编码 | 名称 |
|---|---|
| 1 | 紧急 |
| 2 | 高 |
| 3 | 普通 |
| 4 | 无 |
| 错误码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权,请先登录 |
| 403 | 无权限访问 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
| 1001 | 用户名或密码错误 |
| 1002 | 账号已被禁用 |
| 1003 | 账号不存在 |
| 2001 | 设备不存在 |
| 2002 | 设备已离线 |
| 3001 | 人员不存在 |
| 3002 | 人员已在白名单中 |
| 4001 | 地图不存在 |
| 4002 | 设备已绑定到其他地图 |
| 5001 | 系统配置错误 |
| 5002 | 数据库连接失败 |
所有时间字段统一使用 ISO 8601 格式:YYYY-MM-DDTHH:mm:ss
示例:2026-01-30T10:00:00
接口地址: GET /prod-api/service-sas/video/liveStream
功能描述: 获取设备直播流地址
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | string | 是 | 设备ID |
| channel | int | 否 | 通道号,默认0 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"rtspUrl": "rtsp://192.168.10.100:554/stream",
"hlsUrl": "http://192.168.10.151/hls/stream_001.m3u8",
"flvUrl": "http://192.168.10.151/flv/stream_001.flv"
}
}
接口地址: GET /prod-api/service-sas/video/playbackStream
功能描述: 获取设备回放流地址
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | string | 是 | 设备ID |
| channel | int | 否 | 通道号,默认0 |
| startTime | datetime | 是 | 开始时间 |
| endTime | datetime | 是 | 结束时间 |
响应示例:
{
"status": "SUCCESS",
"code": 200,
"data": {
"rtspUrl": "rtsp://192.168.10.100:554/playback?start=20260130100000&end=20260130110000",
"hlsUrl": "http://192.168.10.151/hls/playback_001.m3u8",
"flvUrl": "http://192.168.10.151/flv/playback_001.flv"
}
}
| 版本 | 日期 | 说明 | 作者 |
|---|---|---|---|
| v1.0 | 2026-01-30 | 初始版本,完成所有模块 API 设计 | - |
| v1.1 | 2026-02-28 | 网络配置改为分页接口;修正黑名单/实有设施接口路径;系统配置与激活表名更正为 sassystem*;同步房屋支持可选 buildingCode;实有设施响应示例修正 | - |
如有问题或建议,请联系开发团队。