实现获取访客列表接口

This commit is contained in:
haotian 2025-09-11 16:35:27 +08:00
parent 64f476acdf
commit 88228ce2b4
5 changed files with 97 additions and 42 deletions

View File

@ -11,6 +11,7 @@ from module_admin.service.haikang_service import HaiKangService
from utils.log_util import logger
from utils.page_util import PageResponseModel
from utils.response_util import ResponseUtil
from module_admin.entity.vo.haikang_vo import VisitorReservationQueryModel
from typing import List
@ -18,48 +19,60 @@ from typing import List
haikang_controller = APIRouter(prefix="/system/haikang", dependencies=[Depends(LoginService.get_current_user)])
# 查询门禁点列表
@haikang_controller.get("/door_list"
# , response_model=PageResponseModel
# , dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
)
async def get_system_haikang_list(
request: Request,
pageNo:int,
pageSize:int,
):
"""
查询门禁点列表
"""
result = await HaiKangService.get_door_list_service(pageNo, pageSize)
return parse_result(result)
# # 查询门禁点列表
# @haikang_controller.get("/door_list"
# # , response_model=PageResponseModel
# # , dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
# )
# async def get_system_haikang_list(
# request: Request,
# pageNo:int,
# pageSize:int,
# ):
# """
# 查询门禁点列表
# """
# result = await HaiKangService.get_door_list_service(pageNo, pageSize)
# return parse_result(result)
# 查询门禁点状态
@haikang_controller.post(
"/door_status",
# dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
)
async def get_door_status(
request: Request,
door_index_codes: List[str],
):
"""
查询门禁点列表
"""
result = await HaiKangService.get_door_status_service(door_index_codes)
return parse_result(result)
# # 查询门禁点状态
# @haikang_controller.post(
# "/door_status",
# # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
# )
# async def get_door_status(
# request: Request,
# door_index_codes: List[str],
# ):
# """
# 查询门禁点列表
# """
# result = await HaiKangService.get_door_status_service(door_index_codes)
# return parse_result(result)
# 门禁点反控
# # 门禁点反控
# @haikang_controller.post(
# "/door_do_control",
# # dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
# )
# async def door_do_control(
# request: Request,
# door_index_codes: List[str],
# control_type: int,
# ):
# pass
# 查询访客预约记录
@haikang_controller.post(
"/door_do_control",
"/get_visitor_list",
# dependencies=[Depends(CheckUserInterfaceAuth("system:haikang:list"))]
)
async def door_do_control(
async def get_visitor(
request: Request,
door_index_codes: List[str],
control_type: int,
visitor_query: VisitorReservationQueryModel
):
pass
result = await HaiKangService.get_visitor_list_service(visitor_query)
return parse_result(result)
def parse_result(result):

View File

@ -0,0 +1,24 @@
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from typing import Optional
from module_admin.annotation.pydantic_annotation import as_query
class VisitorReservationQueryModel(BaseModel):
receptionistId: Optional[str] = Field(default=None, description='接待ID')
visitorName: Optional[str] = Field(default=None, description='访客姓名,支持模糊搜索')
phoneNo: Optional[str] = Field(default=None, description='访客手机号')
visitStartTimeBegin: Optional[str] = Field(default=None, description='开始时间, 满足ISO8601格式')
visitStartTimeEnd: Optional[str] = Field(default=None, description='结束时间, 满足ISO8601格式')
visitEndTimeBegin: Optional[str] = Field(default=None, description='开始时间, 满足ISO8601格式')
visitEndTimeEnd: Optional[str] = Field(default=None, description='结束时间, 满足ISO8601格式')
pageNo: int = Field(default=1, description='页码')
pageSize: int = Field(default=20, description='每页数量')
visitorStatus: Optional[int] = Field(default=None, description='访客状态')
orderId: Optional[str] = Field(default=None, description='订单ID')

View File

@ -1,10 +1,22 @@
from utils.haikang_util import HaikangUtil
from module_admin.entity.vo.haikang_vo import VisitorReservationQueryModel
class HaiKangService:
"""
康达服务
"""
# 查询访客列表
@classmethod
async def get_visitor_list_service(cls, visitor_query: VisitorReservationQueryModel):
"""查询访客列表
"""
result = await HaikangUtil.query_visitor_record(**cls.parse_dict(visitor_query.model_dump()))
return result
# 查询门禁点列表v2
@classmethod
async def get_door_list_service(cls, pageNo: int = 1, pageSize: int = 10):
@ -35,6 +47,14 @@ class HaiKangService:
else:
return result
@classmethod
def parse_dict(cls, d):
t_d = dict()
for k, v in d.items():
if v:
t_d[k] = v
return t_d
# 门禁点反控
# @classmethod
# async def door_do_control_service(cls, door_index_code: list, control_type: int):

View File

@ -37,6 +37,7 @@ from module_admin.controller.ragflow_controller import ragflowController
from module_admin.controller.robot_action_controller import robot_actionController
from module_admin.controller.identification_record_controller import identification_recordController
from module_admin.controller.door_controller import doorController
from module_admin.controller.haikang_controller import haikang_controller
from sub_applications.handle import handle_sub_applications
from utils.common_util import worship
@ -111,7 +112,8 @@ controller_list = [
{'router': robot_actionController, 'tags': ['机器人动作管理']},
{'router': identification_recordController, 'tags': ['识别记录管理']},
{'router': doorController, 'tags': ['门禁设备管理']},
{'router': identification_statisticsController, 'tags': ['识别统计管理']}
{'router': identification_statisticsController, 'tags': ['识别统计管理']},
{'router': haikang_controller, 'tags': ['海康']}
]

View File

@ -422,7 +422,7 @@ class HaikangUtil:
# 查询访客预约记录, visitorStatus: 0 待审核, 1 正常, 2 迟到, 3 失效, 4 审核退回, 9 审核失效, 10 邀约中, 11 邀约失效
@classmethod
async def query_visitor_record(
cls, pageNo: int = 1, pageSize: int = 10, visitorStatus: int = 1
cls, **args
):
"""查询访客预约记录
@ -435,11 +435,7 @@ class HaikangUtil:
_type_: _description_
"""
url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}{HaiKangConfig.HAIKANG_VISITOR_RECORD_SEARCH}"
body_dict = {
"pageNo": pageNo,
"pageSize": pageSize,
"visitorStatus": visitorStatus,
}
body_dict = args
body_json = json.dumps(body_dict, separators=(",", ":"))