from apps.am.models import Area from apps.third.clients import xxClient from apps.third.tapis import xxapis class EcmService: """事件处理服务 """ @classmethod def dispatch_dahua_event(cls, data: dict): """分发大华事件进行处理 """ pass @classmethod def dispatch_xunxi_event(cls, data: dict): """分发寻息事件进行处理 """ if data.type == 'rail': if data.data.type == 1: # 围栏进入 cls.rail_in(data=data.data) elif data.data.type == 2: # 围栏离开 pass elif data.type == 'onKeyAlarm': # 一键呼救 pass elif data.type == 'onOffLine': if data.data.online: # 标签定位在线 pass else: # 标签定位离线 pass elif data.type == 'lowpower': # 低电量 pass elif data.type == 'bltOnOffLineV2': if data.data.online: # 标签通信在线 pass else: # 标签通信离线 pass @classmethod def rail_in(cls, data): """围栏进入事件 """ # 判断区域是否超员 area = Area.objects.filter(third_info__xx_railId=data['railId']).first() if area: json = {"railId": data['railId'], "type": ""} _, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json) if res['totalCount'] >= area.count_people_max: # 触发超员事件 pass