notify setting 查询条件

This commit is contained in:
曹前明 2022-07-02 14:32:53 +08:00
parent 5ad160a3ae
commit e7721fdf89
5 changed files with 44 additions and 15 deletions

View File

@ -70,4 +70,22 @@ print(json.dumps(xx))
'nodeCode': '1000038$1$0$0', 'nodeCode': '1000038$1$0$0',
'deviceCode': '1000038', 'deviceCode': '1000038',
'alarmCode': '37f2b363-71aa-49c4-b352-711f4e098f46', 'alarmCode': '37f2b363-71aa-49c4-b352-711f4e098f46',
'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60524172_60587111.jpg', 'nodeType': 2, 'alarmDate': '1656727743', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60524172_60587111.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60425203_60524172.jpg', 'eye': 0, 'alarmType': 1001000, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 0, 'szSerialUUID': '', 'channelName': '测试摄像头1', 'beginTime': 1656727739, 'endTime': 1656727739, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001000, 'channelSeq': 0, 'orgCode': '001', 'channelName': '测试摄像头1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None} 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60524172_60587111.jpg', 'nodeType': 2, 'alarmDate': '1656727743', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60524172_60587111.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_60425203_60524172.jpg', 'eye': 0, 'alarmType': 1001000, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 0, 'szSerialUUID': '', 'channelName': '测试摄像头1', 'beginTime': 1656727739, 'endTime': 1656727739, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001000, 'channelSeq': 0, 'orgCode': '001', 'channelName': '测试摄像头1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
{'id': 1656731738555,
'category': 'alarm',
'method': 'alarm.msg',
'info': {'orgName': '根节点',
'nodeCode': '1000038$1$0$0',
'deviceCode': '1000038',
'alarmCode': 'a66160f7-9ceb-4540-a6be-9cb6ec311b5f',
'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_61221133_61249479.jpg',
'nodeType': 2, 'alarmDate': '1656731735',
'alarmGrade': 2, 'isSave': True,
'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_61221133_61249479.jpg'],
'glass': 0, 'beard': 0,
'candidateInfo':
[{'birthday': '2022-7-2',
'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_61249479_61322881.jpg'], 'groupName': '内部库1', 'similarity': 99, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '15', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220622/1/dsf_453810dc-f202-11ec-bd2d-e4246c7d1635_61130541_61221133.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 0, 'szSerialUUID': '', 'channelName': '测试摄像头1', 'beginTime': 1656731735, 'endTime': 1656731735, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 0, 'orgCode': '001', 'channelName': '测试摄像头1', 'alarmStat': 1, 'isEvent': True},
'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}

View File

@ -1,5 +1,6 @@
from apps.utils.sms import send_sms
import requests import requests
from apps.am.models import Access, Area from apps.am.models import Access, Area
from apps.am.tasks import cache_areas_info from apps.am.tasks import cache_areas_info
@ -18,6 +19,7 @@ from django.utils import timezone
from django.conf import settings from django.conf import settings
import os import os
from apps.utils.speech import generate_voice from apps.utils.speech import generate_voice
from threading import Thread
requests.packages.urllib3.disable_warnings() requests.packages.urllib3.disable_warnings()
@ -57,11 +59,23 @@ class EcmService:
"time2": int(time.time()), # 当前时间戳 "time2": int(time.time()), # 当前时间戳
} }
def create_remind_and_speak(cls): @classmethod
def create_remind_and_speak(cls, event: Event):
""" """
创建事件提醒并发送短信/微信/音响 创建事件提醒并发送短信/微信/喇叭
""" """
pass # 喇叭提醒
if event.voice:
sps = list(TDevice.objects.filter(area=event.area, type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True))
if len(sps) == 0: # 找覆盖区的音响
sps = list(TDevice.objects.filter(areas=event.area,
type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True))
if sps:
t = Thread(target=spClient.speak, args=(event.voice, sps), daemon=True)
t.start()
if event.employee and event.employee.phone:
t = Thread(target=send_sms, args=(event.employee.phone, '1001', {'code': '5678'}), daemon=True)
t.start()
@classmethod @classmethod
def dispatch_dahua_event(cls, data: dict): def dispatch_dahua_event(cls, data: dict):
@ -107,14 +121,7 @@ class EcmService:
'cate': ec, 'cate': ec,
'event': event 'event': event
}) })
# 喇叭提醒 cls.create_remind_and_speak(event=event)
if event.voice:
sps = list(TDevice.objects.filter(area=area, type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True))
if len(sps) == 0: # 找覆盖区的音响
sps = list(TDevice.objects.filter(areas=area, type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True))
if sps:
spClient.speak(event.voice, sps)
return
@classmethod @classmethod
def dispatch_xunxi_event(cls, data: dict): def dispatch_xunxi_event(cls, data: dict):

View File

@ -51,6 +51,7 @@ class AlgoChannelViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Cu
class NotifySettingViewSet(CustomModelViewSet): class NotifySettingViewSet(CustomModelViewSet):
queryset = NotifySetting.objects.all() queryset = NotifySetting.objects.all()
serializer_class = NotifySettingsSerializer serializer_class = NotifySettingsSerializer
filterset_fields = ['event_cate', 'obj_cate', 'post', 'user']
class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet): class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):

View File

@ -33,7 +33,7 @@ def phone_check(phone):
class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer): class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
phone = serializers.CharField(label="手机号", validators=[phone_check]) phone = serializers.CharField(label="手机号")
class Meta: class Meta:
model = Employee model = Employee

View File

@ -29,7 +29,10 @@ def send_sms(phone: str, template_code: str, template_param: dict):
request.add_query_param('TemplateParam', json.dumps(template_param)) request.add_query_param('TemplateParam', json.dumps(template_param))
res = client.do_action(request) res = client.do_action(request)
res_dict = json.loads(str(res, encoding='utf-8')) res_dict = json.loads(str(res, encoding='utf-8'))
print(phone, template_code, template_param, res_dict)
if res_dict['result'] == 0: if res_dict['result'] == 0:
return True, 'OK', res_dict['BizId']
return True, res_dict
else: else:
return False, res_dict['Message'], res_dict['BizId'] settings.myLogger.error("短信发送失败:{}-{}".format(phone, str(res_dict)))
return False, res_dict