|
@@ -23,10 +23,11 @@ from AnsjerPush.config import XMPUSH_CONFIG, OPPOPUSH_CONFIG
|
|
|
from Model.models import UidPushModel, SysMsgModel, DeviceSharePermission, DeviceChannelUserSet, \
|
|
|
DeviceChannelUserPermission, UidSetModel, Device_Info
|
|
|
from Object.ETkObject import ETkObject
|
|
|
+from Object.RedisObject import RedisObject
|
|
|
from Object.UidTokenObject import UidTokenObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
|
from Service.CommonService import CommonService
|
|
|
-from Service.EquipmentInfoService import EquipmentInfoService
|
|
|
+from Service.EquipmentInfoService import EquipmentInfoService, EQUIPMENT_INFO_DICT
|
|
|
from Service.HuaweiPushService.HuaweiPushService import HuaweiPushObject
|
|
|
from Service.PushService import PushObject
|
|
|
|
|
@@ -149,14 +150,15 @@ class DevicePushService:
|
|
|
uid = params['uid']
|
|
|
push_kwargs = params['push_kwargs']
|
|
|
now_time = int(time.time())
|
|
|
+ redis_obj = RedisObject()
|
|
|
try:
|
|
|
params['event_tag'] = cls.get_event_tag(params['ai_type'], params['event_type'], params['detection'])
|
|
|
is_app_push = True if params['event_type'] in [606, 607] else \
|
|
|
cls.is_send_app_push(
|
|
|
params['event_type'], params['event_tag'], params['app_push_config'], params['app_push'], uid)
|
|
|
|
|
|
- equipment_info_list = []
|
|
|
- equipment_info_model = EquipmentInfoService.randoms_choice_equipment_info()
|
|
|
+ save_equipment_info = False
|
|
|
+ equipment_info_key = EquipmentInfoService.randoms_choice_equipment_info_key()
|
|
|
for up in params['uid_set_push_list']:
|
|
|
lang = up['lang']
|
|
|
tz = up['tz']
|
|
@@ -176,23 +178,27 @@ class DevicePushService:
|
|
|
updTime=now_time, uid=uid, eventType=params['event_type']))
|
|
|
# 保存推送消息
|
|
|
else:
|
|
|
+ if not save_equipment_info:
|
|
|
+ save_equipment_info = True
|
|
|
params['userID_id'] = user_id
|
|
|
- equipment_info_list.append(
|
|
|
- equipment_info_model(
|
|
|
- device_user_id=params['userID_id'],
|
|
|
- event_time=params['n_time'],
|
|
|
- event_type=params['event_type'],
|
|
|
- device_uid=params['uid'],
|
|
|
- device_nick_name=params['nickname'],
|
|
|
- channel=params['channel'],
|
|
|
- alarm='Motion \tChannel:{}'.format(params['channel']),
|
|
|
- is_st=params['is_st'],
|
|
|
- add_time=int(time.time()),
|
|
|
- storage_location=params['storage_location'],
|
|
|
- event_tag=params['event_tag'],
|
|
|
- answer_status=True if params['dealings_type'] == 1 else False
|
|
|
- )
|
|
|
- )
|
|
|
+ answer_status = 1 if params['dealings_type'] == 1 else 0
|
|
|
+ equipment_info_kwargs = {
|
|
|
+ 'device_user_id': params['userID_id'],
|
|
|
+ 'event_time': params['n_time'],
|
|
|
+ 'event_type': params['event_type'],
|
|
|
+ 'device_uid': params['uid'],
|
|
|
+ 'device_nick_name': params['nickname'],
|
|
|
+ 'channel': params['channel'],
|
|
|
+ 'alarm': 'Motion \tChannel:{}'.format(params['channel']),
|
|
|
+ 'is_st': params['is_st'],
|
|
|
+ 'add_time': int(time.time()),
|
|
|
+ 'storage_location': params['storage_location'],
|
|
|
+ 'event_tag': params['event_tag'],
|
|
|
+ 'answer_status': answer_status
|
|
|
+ }
|
|
|
+ # 保存到redis列表
|
|
|
+ equipment_info_value = json.dumps(equipment_info_kwargs)
|
|
|
+ redis_obj.rpush(equipment_info_key, equipment_info_value)
|
|
|
saved_user_id_list.append(user_id)
|
|
|
|
|
|
# 推送
|
|
@@ -232,7 +238,18 @@ class DevicePushService:
|
|
|
# 写入系统消息
|
|
|
if sys_msg_list:
|
|
|
SysMsgModel.objects.bulk_create(sys_msg_list)
|
|
|
- if equipment_info_list:
|
|
|
+ if save_equipment_info:
|
|
|
+ equipment_info_list = []
|
|
|
+ equipment_info_model = EQUIPMENT_INFO_DICT[equipment_info_key]
|
|
|
+ # 缓存数据多于100条,批量保存前100条,否则保存全部
|
|
|
+ equipment_info_len = redis_obj.llen(equipment_info_key)
|
|
|
+ end = 99 if equipment_info_len > 100 else equipment_info_len - 1
|
|
|
+ equipment_info_redis_list = redis_obj.lrange(equipment_info_key, 0, end)
|
|
|
+ redis_obj.ltrim(equipment_info_key, end+1, -1)
|
|
|
+
|
|
|
+ for equipment_info in equipment_info_redis_list:
|
|
|
+ equipment_info_data = eval(equipment_info)
|
|
|
+ equipment_info_list.append(equipment_info_model(**equipment_info_data))
|
|
|
equipment_info_model.objects.bulk_create(equipment_info_list)
|
|
|
|
|
|
return True
|