From c78c934a280dabbd8ba607e3ef6d257de91ae01d Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Wed, 10 Sep 2025 17:01:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=B5=B7=E5=BA=B7=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=97=A8=E7=A6=81=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/.env.dev | 5 +++- ruoyi-fastapi-backend/001测试海康api.py | 9 ++++++- ruoyi-fastapi-backend/002简单http服务.py | 30 +++++++++++++++++++++ ruoyi-fastapi-backend/config/env.py | 2 ++ ruoyi-fastapi-backend/utils/haikang_util.py | 24 +++++++++++++++++ 5 files changed, 68 insertions(+), 2 deletions(-) diff --git a/ruoyi-fastapi-backend/.env.dev b/ruoyi-fastapi-backend/.env.dev index 7594e18..a90df81 100644 --- a/ruoyi-fastapi-backend/.env.dev +++ b/ruoyi-fastapi-backend/.env.dev @@ -78,7 +78,7 @@ HAIKANG_AK = '' HAIKANG_SK = '' # 获取access_token HAIKANG_ACCESS_TOKEN_URL = '/api/v1/oauth/token' -# 查看门禁状态 +# 查看门禁状态(门的状态) HAIKANG_DOOR_STATES_URL = '/api/v1/door/states' # 门禁点反控 HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl' @@ -86,6 +86,8 @@ HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl' HAIKANG_DOOR_ENVENTS_URL = '/api/acs/v2/door/events' # 门禁点列表v2 HAIKANG_DOOR_SEARCH = '/api/resource/v2/door/search' +# 查看门禁点在线状态 +HAIKANG_DOOR_ONLINE_STATUS = '/api/nms/v1/online/acs_device/get' # 人脸分组1vN检索 @@ -104,6 +106,7 @@ HAIKANG_FACECAPATURE_SEARCH = '/api/frs/v1/event/face_capture/search' HAIKANG_VISITOR_RECORD_SEARCH = '/api/visitor/v2/appointment/records' + #-------------------RAGFlow配置--------------------- RAGFLOW_BASE_URL = "http://10.0.0.202:82" diff --git a/ruoyi-fastapi-backend/001测试海康api.py b/ruoyi-fastapi-backend/001测试海康api.py index 44a1d18..9840850 100644 --- a/ruoyi-fastapi-backend/001测试海康api.py +++ b/ruoyi-fastapi-backend/001测试海康api.py @@ -27,6 +27,11 @@ async def query_door_events_service(door_index_code,pageNo, pageSize, startTime, result = await HaikangUtil.query_door_events_v2(door_index_code, pageNo=pageNo, pageSize=pageSize ,startTime=startTime, endTime=endTime) print(result) +# 查看门禁点在线状态 +async def door_online_status_service(door_index_codes): + result = await HaikangUtil.door_online_status(door_index_codes) + print(result) + # 按条件查询人脸分组, 很重要 async def get_face_group_service(): result = await HaikangUtil.get_face_group() @@ -85,5 +90,7 @@ if __name__ == '__main__': # asyncio.run(face_group_1vN_search_service(image_path)) # asyncio.run(face_picture_check(image_path)) - asyncio.run(query_visitor_record()) + # asyncio.run(query_visitor_record()) + + asyncio.run(door_online_status_service(["xxxxxxxx"])) diff --git a/ruoyi-fastapi-backend/002简单http服务.py b/ruoyi-fastapi-backend/002简单http服务.py index a842620..a429e5d 100644 --- a/ruoyi-fastapi-backend/002简单http服务.py +++ b/ruoyi-fastapi-backend/002简单http服务.py @@ -324,6 +324,36 @@ class CustomHTTPRequestHandler(BaseHTTPRequestHandler): }, }, ) + elif self.path == "/api/nms/v1/online/acs_device/get": + self._send_json_response( + 200, + { + "code": "0", + "msg": "success", + "data": { + "pageNo": 1, + "pageSize": 10, + "totalPage": 0, + "total": 1, + "list": [ + { + "deviceType": "HIK%2FDS-9116HW-ST%2F-AF-DVR", + "deviceIndexCode": "null", + "regionIndexCode": "ce91c758-5af4-4539-845a", + "collectTime": "2018-12-28T10:21:40.000+08:00", + "regionName": "NMS 自动化", + "indexCode": "82896441ced946d5a51c6d6ca8e65851", + "cn": "Onvif-IPC(10.67.172.13 )", + "treatyType": "onvif_net", + "manufacturer": "hikvision", + "ip": "10.67.172.13", + "port": 80, + "online": 1, + } + ], + }, + }, + ) except json.JSONDecodeError: self._send_json_response(400, {"error": "无效的JSON数据"}) except Exception as e: diff --git a/ruoyi-fastapi-backend/config/env.py b/ruoyi-fastapi-backend/config/env.py index 13df5e2..b0a00c6 100644 --- a/ruoyi-fastapi-backend/config/env.py +++ b/ruoyi-fastapi-backend/config/env.py @@ -164,6 +164,7 @@ class HaiKangSettings: HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl' HAIKANG_DOOR_ENVENTS_URL = '/api/acs/v2/door/events' HAIKANG_DOOR_SEARCH = '/api/resource/v2/door/search' + HAIKANG_DOOR_ONLINE_STATUS = '/api/nms/v1/online/acs_device/get' HAIKANG_APPLICATION_ONETOMANY_URL = '/api/frs/v1/application/oneToMany' HAIKANG_PICTURE_CHECK_URL = '/api/frs/v1/face/picture/check' HAIKANG_FACECAPATURE_SEARCH = '/api/frs/v1/event/face_capture/search' @@ -171,6 +172,7 @@ class HaiKangSettings: HAIKANG_VISITOR_RECORD_SEARCH = '/api/visitor/v2/appointment/records' + class RAGFlowSettings: """ RAGFlowSettings diff --git a/ruoyi-fastapi-backend/utils/haikang_util.py b/ruoyi-fastapi-backend/utils/haikang_util.py index 599ad55..257673d 100644 --- a/ruoyi-fastapi-backend/utils/haikang_util.py +++ b/ruoyi-fastapi-backend/utils/haikang_util.py @@ -284,6 +284,30 @@ class HaikangUtil: logger.error(f"获取门禁事件失败 ", back["code"], back["msg"]) return [False, back["code"], back["msg"]] + # 查看门禁在线状态 + @classmethod + async def door_online_status(cls, indexCodes: list): + url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}{HaiKangConfig.HAIKANG_DOOR_ONLINE_STATUS}" + + body_dict = { + "indexCodes": indexCodes + } + + body_json = json.dumps(body_dict, separators=(",", ":")) + + headers = cls.build_signed_headers( + "POST", url, body_json, HaiKangConfig.HAIKANG_AK, HaiKangConfig.HAIKANG_SK + ) + + back = await cls.send_request("POST", url, headers, body_json) + + if back["code"] == "0": + logger.info(f"获取门禁在线状态成功") + return [True, back["data"]] + else: + logger.error(f"获取门禁在线状态失败 ", back["code"], back["msg"]) + return [False, back["code"], back["msg"]] + # 人脸分组1vN检索 @classmethod async def face_group_1vN_search(