# 智能安防集成应用系统 API 设计文档 ## 文档信息 - **系统名称**: 智能安防集成应用系统 - **数据库**: agapp (MySQL 8.0.35) - **文档版本**: v1.1 - **创建日期**: 2026-01-30 - **更新日期**: 2026-02-28 --- ## 目录 1. [概述](#概述) 2. [通用规范](#通用规范) 3. [认证授权](#认证授权) 4. [安防集成管理](#安防集成管理) 5. [首页](#首页) 6. [电子地图](#电子地图) 7. [智能分析](#智能分析) 8. [人员管理](#人员管理) 9. [一标六实](#一标六实) 10. [用户管理](#用户管理) 11. [系统管理](#系统管理) --- ## 概述 ### 系统简介 智能安防集成应用系统是一个综合性的安防管理平台,集成了设备管理、事件监控、人员管理、电子地图、智能分析等功能模块。 ### 技术栈 - **后端**: Java (Spring Boot) - **数据库**: MySQL 8.0.35 - **协议**: RESTful API - **数据格式**: JSON ### 基础信息 - **数据库地址**: 192.168.10.151:3306 - **数据库名**: agapp - **参考平台地址**: http://192.168.10.151 --- ## 通用规范 ### 请求规范 #### 请求头 ``` Content-Type: application/json Authorization: Bearer {token} ``` #### 统一响应格式 ```json { "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 | 服务器内部错误 | ### 分页规范 #### 请求参数 ```json { "current": 1, "size": 10, "sortField": "create_time", "sortOrder": "desc" } ``` #### 响应格式 ```json { "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 | 总页数 | --- ## 认证授权 ### 1. 系统激活 **接口地址**: `POST /prod-api/service-sas/activate` **功能描述**: 系统激活 **请求参数**: ```json { "licenseKey": "string" } ``` **响应示例**: ```json { "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) | --- ## 安防集成管理 ### 网络配置 #### 1.1 分页查询网络配置 **接口地址**: `GET /prod-api/service-sas/network/config` **功能描述**: 分页展示网络配置列表,支持按网络名称、IP 地址、启用状态筛选。 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码,默认 1 | | size | int | 否 | 每页数量,默认 10 | | name | string | 否 | 网络名称(模糊查询) | | ipAddr | string | 否 | IP 地址(模糊查询) | | status | boolean | 否 | 状态:true 启用,false 未启用 | **响应示例**: ```json { "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 | 每页数量 | #### 1.2 编辑网络配置 **接口地址**: `PUT /prod-api/service-sas/network/config` **功能描述**: 编辑网络配置,点击"网络配置"切换到开启状态,在IP信息栏输入需要配置的信息 **请求参数**: ```json { "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 } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | ### 系统配置 #### 2.1 查询系统配置 **接口地址**: `GET /prod-api/service-sas/system/config` **功能描述**: 展示系统配置信息 **请求参数**: 无 **响应示例**: ```json { "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) | #### 2.2 编辑系统配置 **接口地址**: `PUT /prod-api/service-sas/system/config` **功能描述**: 编辑系统配置,点击"人员照片、身份证信息"切换到开启状态,设置数据保留天数等 **请求参数**: ```json { "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 } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | ### Agbox/Metabus配置 #### 3.1 查询Agbox/Metabus配置 **接口地址**: `GET /prod-api/service-sas/agbox/config` **功能描述**: 展示 Agbox/Metabus 配置信息,并返回当前 MQTT 连接状态、监听状态。 **请求参数**: 无 **响应示例**: ```json { "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 是否正在监听、未暂停(运行时状态) | #### 3.2 编辑Agbox/Metabus配置 **接口地址**: `PUT /prod-api/service-sas/agbox/config` **功能描述**: 编辑Agbox/Metabus配置,输入Agbox的Key、IP地址、端口号、Agbox MQTT服务信息 **请求参数**: ```json { "id": 1, "keyds": "agbox_key_12345", "host": "192.168.10.151", "port": "1883", "username": "mqtt_user", "password": "mqtt_password", "isTsl": false } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | #### 3.3 暂停 MQTT 事件订阅 **接口地址**: `POST /prod-api/service-sas/agbox/mqtt/pause` **功能描述**: 暂停 MQTT 事件订阅。调用后不再处理新到达的 MQTT 消息,与 Broker 的连接保持不断开;用于临时停止事件入库、减轻负载等场景。 **请求参数**: 无(Request Body 为空) **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "操作成功", "data": null } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 操作结果提示信息 | | data | null | 无业务数据 | #### 3.4 恢复 MQTT 事件订阅 **接口地址**: `POST /prod-api/service-sas/agbox/mqtt/resume` **功能描述**: 恢复 MQTT 事件订阅。调用后继续处理新到达的 MQTT 消息,与「暂停 MQTT 事件订阅」配对使用。 **请求参数**: 无(Request Body 为空) **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "操作成功", "data": null } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 操作结果提示信息 | | data | null | 无业务数据 | ### 设备心跳 #### 4.1 查询设备状态 **接口地址**: `GET /prod-api/service-sas/device/heartbeat` **功能描述**: 查询设备心跳状态 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | deviceId | string | 否 | 设备编号 | | deviceType | int | 否 | 设备类型 | **响应示例**: ```json { "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 | 每页数量 | ### 事件组配置 #### 5.1 查询事件组配置 **接口地址**: `GET /prod-api/service-sas/event/group` **功能描述**: 展示已配置事件组信息 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | deviceType | int | 否 | 设备事件类型 | | name | string | 否 | 事件组名称(模糊查询) | **响应示例**: ```json { "status": "SUCCESS", "code": 200, "data": { "list": [ { "id": "group_001", "name": "报警事件组", "deviceType": 1, "eventCodes": "1001,1002,1003", "eventLevel": 1, "canDel": true, "createTime": "2026-01-30T10:00:00", "updateTime": "2026-01-30T10:00:00" } ], "total": 10, "current": 1, "size": 10 } } ``` #### 5.2 新增事件组配置 **接口地址**: `POST /prod-api/service-sas/event/group` **功能描述**: 新增事件组,选择设备事件类型并输入事件组名称、选择报警事件 **请求参数**: ```json { "name": "报警事件组", "deviceType": 1, "eventCodes": [1001, 1002, 1003], "eventLevel": 1 } ``` **响应示例**: ```json { "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) | #### 5.3 编辑事件组配置 **接口地址**: `PUT /prod-api/service-sas/event/group/{id}` **功能描述**: 编辑事件组配置 **请求参数**: ```json { "name": "报警事件组", "deviceType": 1, "eventCodes": [1001, 1002, 1003], "eventLevel": 1 } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | #### 5.4 删除事件组配置 **接口地址**: `DELETE /prod-api/service-sas/event/group/{id}` **功能描述**: 删除事件组配置 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "删除成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 删除结果提示信息 | ### 事件优先级配置 #### 6.1 查询事件优先级配置 **接口地址**: `GET /prod-api/service-sas/event/priority` **功能描述**: 展示已配置事件优先级信息 **请求参数**: 无 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "data": { "urgent": ["group_001", "group_002"], "high": ["group_003"], "normal": ["group_004"], "none": ["group_005"] } } ``` #### 6.2 编辑事件优先级配置 **接口地址**: `PUT /prod-api/service-sas/event/priority` **功能描述**: 将事件组按照紧急、高、普通、无四个等级进行分类,将事件拖拉至对应等级 **请求参数**: ```json { "urgent": ["group_001", "group_002"], "high": ["group_003"], "normal": ["group_004"], "none": ["group_005"] } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` ### 设备配置 #### 7.1 查询设备配置 **接口地址**: `GET /prod-api/service-sas/device/config` **功能描述**: 可根据报警联动组、视频监控组、设备类型、设备编码、设备ip查询 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | alarmGroupType | string | 否 | 报警联动组 | | videoGroupType | string | 否 | 视频监控组 | | deviceType | int | 否 | 设备类型 | | deviceId | string | 否 | 设备编码 | | ipAddr | string | 否 | 设备IP | **响应示例**: ```json { "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 | 每页数量 | #### 7.2 新增设备配置 **接口地址**: `POST /prod-api/service-sas/device/config` **功能描述**: 新增设备配置 **请求参数**: ```json { "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": "摄像头设备" } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "创建成功", "data": { "id": "device_001" } } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 创建结果提示信息 | | data | object | 新增结果对象 | | data.id | string | 新建设备主键id(对应 sas_device.id) | #### 7.3 编辑设备配置 **接口地址**: `PUT /prod-api/service-sas/device/config/{id}` **功能描述**: 编辑设备配置 **请求参数**: 同新增接口 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | #### 7.4 删除设备配置 **接口地址**: `DELETE /prod-api/service-sas/device/config/{id}` **功能描述**: 删除设备配置 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "删除成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 删除结果提示信息 | ### 报警联动配置 #### 8.1 查询联动报警组 **接口地址**: `GET /prod-api/service-sas/alarm/group` **功能描述**: 展示已添加联动报警组 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | **响应示例**: ```json { "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 | 每页数量 | #### 8.2 新增联动报警组 **接口地址**: `POST /prod-api/service-sas/alarm/group` **功能描述**: 新增填写名称及描述并将需要联动设备绑定到同一个报警组 **请求参数**: ```json { "name": "报警联动组1", "note": "描述信息", "deviceIds": ["device_001", "device_002"] } ``` **响应示例**: ```json { "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) | #### 8.3 编辑联动报警组 **接口地址**: `PUT /prod-api/service-sas/alarm/group/{id}` **功能描述**: 编辑联动报警组 **请求参数**: 同新增接口 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | #### 8.4 删除联动报警组 **接口地址**: `DELETE /prod-api/service-sas/alarm/group/{id}` **功能描述**: 删除联动报警组 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "删除成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 删除结果提示信息 | ### 电子地图配置 #### 9.1 查询电子地图 **接口地址**: `GET /prod-api/service-sas/map` **功能描述**: 展示已添加地图及绑定设备信息,如摄像头可点击绑定的摄像头图标查看直播与回放 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | parentId | string | 否 | 父地图ID | **响应示例**: ```json { "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 | 每页数量 | #### 9.2 新增电子地图 **接口地址**: `POST /prod-api/service-sas/map` **功能描述**: 在地图导航添加地图名称及地图描述;再点击上传图片将项目平面图上传并开启父地图 **请求参数**: ```json { "name": "一楼平面图", "type": 1, "remark": "描述", "parentId": null, "width": 1920, "height": 1080, "isMask": false, "backImgId": "img_001" } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "创建成功", "data": { "id": "map_001" } } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 创建结果提示信息 | | data | object | 新建结果对象 | | data.id | string | 新建地图主键id(对应 sas_maps.id) | #### 9.3 编辑电子地图 **接口地址**: `PUT /prod-api/service-sas/map/{id}` **功能描述**: 编辑电子地图 **请求参数**: 同新增接口 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "更新成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 更新结果提示信息 | #### 9.4 删除电子地图 **接口地址**: `DELETE /prod-api/service-sas/map/{id}` **功能描述**: 删除电子地图 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "删除成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 删除结果提示信息 | #### 9.5 绑定地图设备 **接口地址**: `POST /prod-api/service-sas/map/{mapId}/device` **功能描述**: 在地图上绑定设备 **请求参数**: ```json { "deviceId": "device_001", "imgId": "img_002", "type": "camera", "x": 100.5, "y": 200.3, "width": 50, "height": 50, "angle": 0, "text": "摄像头1" } ``` **响应示例**: ```json { "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) | #### 9.6 解绑地图设备 **接口地址**: `DELETE /prod-api/service-sas/map/{mapId}/device/{deviceId}` **功能描述**: 解绑地图设备 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "解绑成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 解绑结果提示信息 | ### 视频导出防护配置 #### 10.1 查询视频导出防护配置 **接口地址**: `GET /prod-api/service-sas/video/protection` **功能描述**: 显示与电子地图一致,右下角会有视频导出防护事件 **请求参数**: 无 **响应示例**: ```json { "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) | ### 实时电子巡检配置 #### 11.1 查询实时电子巡检配置 **接口地址**: `GET /prod-api/service-sas/patrol/config` **功能描述**: 显示与电子地图一致,右下角会有实时电子巡检事件 **请求参数**: 无 **响应示例**: ```json { "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) | --- ## 首页 首页包含以下功能区域: - **左上角**:已添加摄像头信息,可点击进行直播或回放 - **左下角**:服务器信息与资源使用情况 - **中上部分**:三个模块——实时监控(默认空,点击摄像头进行直播或播放)、事件列表(各模块所有事件)、实时事件(开启通知时弹窗:左侧关联摄像头、右侧事件信息,可提前关闭) - **中下部分**:按分类显示各类型开启通知的事件预警历史,可点击详情重新查看 ### 1. 查询首页综合信息 **接口地址**: `GET /prod-api/service-sas/homepage/info` **功能描述**: 首页综合信息查询。包含:左上角已添加摄像头列表(可点击直播或回放);设备与事件统计;左下角服务器信息与资源使用情况(JVM 内存、处理器数等)。 **请求参数**: 无 **响应示例**: ```json { "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 | 服务器当前时间 | ### 2. 事件列表 **接口地址**: `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 等)。 ### 3. 实时事件(开启通知) **接口地址**: `GET /prod-api/service-sas/homepage/realtimeNotificationEvents` **功能描述**: 中上部分「实时事件」弹窗使用。返回最近一批开启通知的事件,用于弹窗左侧播放关联摄像头、右侧展示事件信息,支持提前关闭。最多返回 20 条,按触发时间倒序。 **请求参数**: 无 **响应示例**: 返回数组,每项为事件对象(结构同事件列表单项)。 ### 4. 预警历史 **接口地址**: `GET /prod-api/service-sas/homepage/alertHistory` **功能描述**: 中下部分使用。按分类显示各类型开启通知的事件预警历史,支持分页;前端可点击详情重新查看。当前支持事件类型为智能分析抓拍(snap)。 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码,默认 1 | | size | int | 否 | 每页数量,默认 10 | | eventType | string | 否 | 事件类型,默认 snap | **响应示例**: 分页结构同事件列表,`data.list` 为开启通知的预警事件列表。 --- ## 电子地图 ### 1. 电子地图导航 **接口地址**: `GET /prod-api/service-sas/map/navigate` **功能描述**: 在电子地图中,将鼠标放置在点位图标上,此时会将绑定的设备信息展示出来 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | mapId | string | 是 | 地图ID | | x | decimal | 否 | X坐标 | | y | decimal | 否 | Y坐标 | **响应示例**: ```json { "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" } ] } } ``` ### 2. 获取设备详情 **接口地址**: `GET /prod-api/service-sas/map/device/{deviceId}/detail` **功能描述**: 获取地图上设备的详细信息 **请求参数**: 无 **响应示例**: ```json { "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": "一楼大厅" } } ``` --- ## 智能分析 ### 1. 查询事件信息 **接口地址**: `GET /prod-api/service-sas/intelligent/events` **功能描述**: 点击头部不同事件类型显示所有相关事件的记录 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | eventType | string | 是 | 事件类型(snap/alarm/entrance/parking/patrol等) | | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | startTime | datetime | 否 | 开始时间 | | endTime | datetime | 否 | 结束时间 | | deviceId | string | 否 | 设备编号 | **响应示例**: ```json { "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 | 每页数量 | ### 2. 查询实时智能分析事件 **接口地址**: `GET /prod-api/service-sas/intelligent/snap` **功能描述**: 查询实时智能分析事件(人脸识别等) **请求参数**: 同查询事件信息接口 **响应示例**: ```json { "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 | 每页数量 | ### 3. 查询报警事件 **接口地址**: `GET /prod-api/service-sas/intelligent/alarm` **功能描述**: 查询入侵紧急报警事件 **请求参数**: 同查询事件信息接口 **响应示例**: ```json { "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 | 每页数量 | ### 4. 查询门禁事件 **接口地址**: `GET /prod-api/service-sas/intelligent/entrance` **功能描述**: 查询出入门禁控制事件 **请求参数**: 同查询事件信息接口 **响应示例**: ```json { "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 | 每页数量 | ### 5. 查询停车事件 **接口地址**: `GET /prod-api/service-sas/intelligent/parking` **功能描述**: 查询停车场车牌抓拍事件 **请求参数**: 同查询事件信息接口 **响应示例**: ```json { "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 | 每页数量 | ### 6. 查询巡检事件 **接口地址**: `GET /prod-api/service-sas/intelligent/patrol` **功能描述**: 查询实时电子巡检事件 **请求参数**: 同查询事件信息接口 **响应示例**: ```json { "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 | 每页数量 | --- ## 人员管理 ### 白名单 #### 1.1 查询白名单人员信息 **接口地址**: `GET /prod-api/service-sas/personnel/whitelist` **功能描述**: 同步agbox白名单,正常展示:姓名、人脸照片、备注、更新时间、详情 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | name | string | 否 | 姓名(模糊查询) | | personCode | string | 否 | 人员编码 | **响应示例**: ```json { "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 | 每页数量 | #### 1.2 同步白名单 **接口地址**: `POST /prod-api/service-sas/personnel/whitelistSync` **功能描述**: 从agbox同步白名单数据 **请求参数**: 无 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "同步成功", "data": { "syncCount": 50 } } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 同步结果提示信息 | | data | object | 同步结果对象 | | data.syncCount | int | 本次同步的记录数量 | #### 1.3 查询白名单人员详情 **接口地址**: `GET /prod-api/service-sas/personnel/whitelist/{personCode}` **功能描述**: 查询白名单人员详细信息 **请求参数**: 无 **响应示例**: ```json { "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) | ### 黑名单 #### 2.1 查询黑名单人员信息 **接口地址**: `GET /prod-api/service-sas/personnel/blacklist` **功能描述**: 同步agbox黑名单展示字段与白名单相同 **请求参数**: 同白名单查询接口 **响应示例**: 同白名单查询接口 #### 2.2 同步黑名单 **接口地址**: `POST /prod-api/service-sas/personnel/blacklistSync` **功能描述**: 从agbox同步黑名单数据 **请求参数**: 无 **响应示例**: 同白名单同步接口 #### 2.3 查询黑名单人员详情 **接口地址**: `GET /prod-api/service-sas/personnel/blacklist/{personCode}` **功能描述**: 查询黑名单人员详细信息 **请求参数**: 无 **响应示例**: 同白名单详情接口 ### 在册人员 #### 3.1 查询在册人员信息 **接口地址**: `GET /prod-api/service-sas/personnel/registered` **功能描述**: 同步agbox白名单,默认展示:姓名、证件类型、证件号码、人员类型、更新日期、详情 **请求参数**: 同白名单查询接口 **响应示例**: ```json { "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 | 每页数量 | #### 3.2 同步在册人员 **接口地址**: `POST /prod-api/service-sas/personnel/registeredSync` **功能描述**: 从agbox同步在册人员数据 **请求参数**: 无 **响应示例**: 同白名单同步接口 #### 3.3 查询在册人员详情 **接口地址**: `GET /prod-api/service-sas/personnel/registered/{personCode}` **功能描述**: 查询在册人员详细信息 **请求参数**: 无 **响应示例**: ```json { "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) | ### 关注人员 #### 4.1 查询关注人员信息 **接口地址**: `GET /prod-api/service-sas/personnel/follow` **功能描述**: 同步agbox黑名单展示字段与关注人员相同 **请求参数**: 同白名单查询接口 **响应示例**: ```json { "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 | 每页数量 | #### 4.2 同步关注人员 **接口地址**: `POST /prod-api/service-sas/personnel/followSync` **功能描述**: 从agbox同步关注人员数据 **请求参数**: 无 **响应示例**: 同白名单同步接口 #### 4.3 查询关注人员详情 **接口地址**: `GET /prod-api/service-sas/personnel/follow/{personCode}` **功能描述**: 查询关注人员详细信息 **请求参数**: 无 **响应示例**: 同关注人员查询接口,包含更多详细信息 --- ## 一标六实 ### 实有力量 #### 1.1 查询实有力量信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/power` **功能描述**: 与关注人员相同 **请求参数**: 同人员查询接口 **响应示例**: ```json { "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 | 每页数量 | #### 1.2 同步实有力量 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/powerSync` **功能描述**: 从agbox同步实有力量数据 **请求参数**: 无 **响应示例**: 同人员同步接口 ### 实有设施 #### 2.1 查询实有设施信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/facility` **功能描述**: 同步agbox **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | equipType | int | 否 | 装备类型 | | villageCode | string | 否 | 地块编码 | **响应示例**: ```json { "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 | 每页数量 | #### 2.2 同步实有设施 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/facilitySync` **功能描述**: 从agbox同步实有设施数据 **请求参数**: 无 **响应示例**: 同人员同步接口 ### 出入口 #### 3.1 查询出入口信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/entrance` **功能描述**: 同步agbox **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | villageCode | string | 否 | 地块编码 | **响应示例**: ```json { "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 | 每页数量 | #### 3.2 同步出入口 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/entranceSync` **功能描述**: 从agbox同步出入口数据 **请求参数**: 无 **响应示例**: 同人员同步接口 ### 区域信息 #### 4.1 查询区域信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/area` **功能描述**: 同步agbox **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | villageCode | string | 否 | 地块编码 | **响应示例**: ```json { "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 | 每页数量 | #### 4.2 同步区域信息 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/areaSync` **功能描述**: 从agbox同步区域信息数据 **请求参数**: 无 **响应示例**: 同人员同步接口 ### 房屋信息 #### 5.1 查询房屋信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/house` **功能描述**: 同步agbox **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | buildingCode | string | 否 | 区域编码 | | villageCode | string | 否 | 地块编码 | | houseNo | string | 否 | 部位编号 | **响应示例**: ```json { "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 | 每页数量 | #### 5.2 同步房屋信息 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/houseSync` **功能描述**: 从 agbox 同步房屋信息数据。可选传入 `buildingCode` 仅同步指定区域下的房屋。 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | buildingCode | string | 否 | 区域编码,不传则同步全部房屋 | **响应示例**: 同人员同步接口 ### 地块信息 #### 6.1 查询地块信息 **接口地址**: `GET /prod-api/service-sas/one-standard-six-realities/village` **功能描述**: 同步agbox **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | | villageName | string | 否 | 地块名称(模糊查询) | | isDefault | boolean | 否 | 是否默认 | **响应示例**: ```json { "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 | 每页数量 | #### 6.2 同步地块信息 **接口地址**: `POST /prod-api/service-sas/one-standard-six-realities/villageSync` **功能描述**: 从agbox同步地块信息数据 **请求参数**: 无 **响应示例**: 同人员同步接口 #### 6.3 设置默认地块 **接口地址**: `PUT /prod-api/service-sas/one-standard-six-realities/villageDefault/{villageCode}` **功能描述**: 设置默认地块 **请求参数**: 无 **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "设置成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 设置默认地块结果提示信息 | --- ## 系统管理 ### 系统信息 #### 1.1 查询系统信息 **接口地址**: `GET /prod-api/service-sas/system/info` **功能描述**: 共分三个模块:系统信息、系统版本、系统备份 **请求参数**: 无 **响应示例**: ```json { "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 | 备份文件创建时间 | ### 系统版本 #### 2.1 查询系统版本 **接口地址**: `GET /prod-api/service-sas/system/version` **功能描述**: 查询系统版本信息 **请求参数**: 无 **响应示例**: ```json { "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) | #### 2.2 升级系统版本 **接口地址**: `POST /prod-api/service-sas/system/versionUpgrade` **功能描述**: 点击升级至最新版本会进行版本号检查并升级 **请求参数**: 无 **响应示例**: ```json { "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 版本号 | ### 系统备份 #### 3.1 备份数据库 **接口地址**: `POST /prod-api/service-sas/system/backupBd` **功能描述**: 将当前系统数据库文件进行备份 **请求参数**: 无 **响应示例**: ```json { "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 | 备份文件大小 | #### 3.2 查询备份文件列表 **接口地址**: `GET /prod-api/service-sas/system/backupList` **功能描述**: 查询所有备份文件 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | current | int | 否 | 页码 | | size | int | 否 | 每页数量 | **响应示例**: ```json { "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 | 每页数量 | #### 3.3 恢复数据库 **接口地址**: `POST /prod-api/service-sas/system/backupRestore` **功能描述**: 将生成的备份文件上传点击恢复进行数据还原 **请求参数**: ```json { "fileName": "backup_20260130_100000.sql", "filePath": "/backup/backup_20260130_100000.sql" } ``` **响应示例**: ```json { "status": "SUCCESS", "code": 200, "msg": "恢复成功" } ``` **字段说明**: | 字段名 | 类型 | 说明 | |--------|------|------| | status | string | 接口调用状态 | | code | int | 业务状态码 | | msg | string | 数据库恢复结果提示信息 | #### 3.4 下载备份文件 **接口地址**: `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 | **响应示例**: ```json { "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 | 是 | 结束时间 | **响应示例**: ```json { "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 | 网络配置改为分页接口;修正黑名单/实有设施接口路径;系统配置与激活表名更正为 sas_system_*;同步房屋支持可选 buildingCode;实有设施响应示例修正 | - | --- ## 联系方式 如有问题或建议,请联系开发团队。