|
@@ -143,6 +143,66 @@ class DevicePushService:
|
|
|
detect_interval = new_detect_interval if new_detect_interval > detect_interval else detect_interval
|
|
|
redis_obj.set_data(key=name, val=1, expire=detect_interval - 5)
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def push_msg(cls, **params):
|
|
|
+ """
|
|
|
+ 推送消息
|
|
|
+ @param params: 推送参数
|
|
|
+ @return: bool
|
|
|
+ """
|
|
|
+ uid = params['uid']
|
|
|
+ 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)
|
|
|
+
|
|
|
+ # 低功耗产品推送,休眠702、低电量704提醒,并且detection=0,0标识单事件类型,1标识多事件类型
|
|
|
+ is_app_push = True if params['event_type'] in [702, 704] and params['detection'] == 0 else is_app_push
|
|
|
+
|
|
|
+ # 推送
|
|
|
+ if is_app_push:
|
|
|
+ push_kwargs = params['push_kwargs']
|
|
|
+ for up in params['uid_set_push_list']:
|
|
|
+ push_type = up['push_type']
|
|
|
+ lang = up['lang']
|
|
|
+ tz = up['tz']
|
|
|
+ if tz is None or tz == '':
|
|
|
+ tz = 0
|
|
|
+ if params['event_type'] in [606, 607] and push_type in [5, 6]:
|
|
|
+ push_kwargs['jg_token_val'] = up['jg_token_val']
|
|
|
+ else:
|
|
|
+ if 'jg_token_val' in push_kwargs:
|
|
|
+ push_kwargs.pop('jg_token_val')
|
|
|
+
|
|
|
+ appBundleId = up['appBundleId']
|
|
|
+ token_val = up['token_val']
|
|
|
+ # 发送标题
|
|
|
+ msg_title = cls.get_msg_title(nickname=params['nickname'])
|
|
|
+ # 发送内容
|
|
|
+ msg_text = cls.get_msg_text(channel=params['channel'], n_time=params['n_time'], lang=lang, tz=tz,
|
|
|
+ event_type=params['event_type'], ai_type=params['ai_type'],
|
|
|
+ device_type=params['device_type'], electricity=params['electricity'],
|
|
|
+ dealings_type=params['dealings_type'], event_tag=params['event_tag']
|
|
|
+ )
|
|
|
+
|
|
|
+ # 补齐推送参数
|
|
|
+ push_kwargs['appBundleId'] = appBundleId
|
|
|
+ push_kwargs['token_val'] = token_val
|
|
|
+ push_kwargs['msg_title'] = msg_title
|
|
|
+ push_kwargs['msg_text'] = msg_text
|
|
|
+ params['push_kwargs'] = push_kwargs
|
|
|
+ params['appBundleId'] = appBundleId
|
|
|
+ params['token_val'] = token_val
|
|
|
+ params['lang'] = lang
|
|
|
+ params['tz'] = tz
|
|
|
+ params['push_type'] = push_type
|
|
|
+
|
|
|
+ push_thread = threading.Thread(
|
|
|
+ target=cls.send_app_msg_push,
|
|
|
+ kwargs=params
|
|
|
+ )
|
|
|
+ push_thread.start()
|
|
|
+
|
|
|
@classmethod
|
|
|
def save_msg_push(cls, **params):
|
|
|
"""
|
|
@@ -153,17 +213,10 @@ class DevicePushService:
|
|
|
sys_msg_list = []
|
|
|
saved_user_id_list = []
|
|
|
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)
|
|
|
-
|
|
|
- # 低功耗产品推送,休眠702、低电量704提醒,并且detection=0,0标识单事件类型,1标识多事件类型
|
|
|
- is_app_push = True if params['event_type'] in [702, 704] and params['detection'] == 0 else is_app_push
|
|
|
|
|
|
save_equipment_info = False
|
|
|
equipment_info_key = EquipmentInfoService.randoms_choice_equipment_info_key()
|
|
@@ -211,40 +264,6 @@ class DevicePushService:
|
|
|
LOGGING.info('***保存推送消息uid:{},time:{},user_id:{}'.format(uid, params['n_time'], user_id))
|
|
|
saved_user_id_list.append(user_id)
|
|
|
|
|
|
- # 推送
|
|
|
- if is_app_push:
|
|
|
- push_type = up['push_type']
|
|
|
- if params['event_type'] in [606, 607] and push_type in [5, 6]:
|
|
|
- push_kwargs['jg_token_val'] = up['jg_token_val']
|
|
|
- else:
|
|
|
- if 'jg_token_val' in push_kwargs:
|
|
|
- push_kwargs.pop('jg_token_val')
|
|
|
-
|
|
|
- appBundleId = up['appBundleId']
|
|
|
- token_val = up['token_val']
|
|
|
- # 发送标题
|
|
|
- msg_title = cls.get_msg_title(nickname=params['nickname'])
|
|
|
- # 发送内容
|
|
|
- msg_text = cls.get_msg_text(channel=params['channel'], n_time=params['n_time'], lang=lang, tz=tz,
|
|
|
- event_type=params['event_type'], ai_type=params['ai_type'],
|
|
|
- device_type=params['device_type'], electricity=params['electricity'],
|
|
|
- dealings_type=params['dealings_type'], event_tag=params['event_tag']
|
|
|
- )
|
|
|
-
|
|
|
- # 补齐推送参数
|
|
|
- push_kwargs['appBundleId'] = appBundleId
|
|
|
- push_kwargs['token_val'] = token_val
|
|
|
- push_kwargs['msg_title'] = msg_title
|
|
|
- push_kwargs['msg_text'] = msg_text
|
|
|
- params['push_kwargs'] = push_kwargs
|
|
|
- params['appBundleId'] = appBundleId
|
|
|
- params['token_val'] = token_val
|
|
|
- params['lang'] = lang
|
|
|
- params['tz'] = tz
|
|
|
-
|
|
|
- push_result = cls.send_app_msg_push(push_type, **params)
|
|
|
- LOGGING.info('{}推送类型:{},推送结果:{}'.format(uid, push_type, push_result))
|
|
|
-
|
|
|
# 写入系统消息
|
|
|
if sys_msg_list:
|
|
|
SysMsgModel.objects.bulk_create(sys_msg_list)
|
|
@@ -334,28 +353,29 @@ class DevicePushService:
|
|
|
return result
|
|
|
|
|
|
@classmethod
|
|
|
- def send_app_msg_push(cls, push_type, **param):
|
|
|
+ def send_app_msg_push(cls, **kwargs):
|
|
|
"""
|
|
|
发送推送
|
|
|
- @param push_type: 推送类型
|
|
|
+ @kwargs :
|
|
|
@return push_result: bool
|
|
|
"""
|
|
|
try:
|
|
|
- push_kwargs = param['push_kwargs']
|
|
|
+ push_type = kwargs['push_type']
|
|
|
+ push_kwargs = kwargs['push_kwargs']
|
|
|
push_result = False
|
|
|
|
|
|
# is_st为1或3,且推送类型为apns,gcm,华为,异步推送图片
|
|
|
- if (param['is_st'] == 1 or param['is_st'] == 3) and \
|
|
|
+ if (kwargs['is_st'] == 1 or kwargs['is_st'] == 3) and \
|
|
|
(push_type == 0 or push_type == 1 or push_type == 3):
|
|
|
- if param['is_st'] == 1:
|
|
|
- key = '{}/{}/{}.jpeg'.format(param['uid'], param['channel'], param['n_time'])
|
|
|
+ if kwargs['is_st'] == 1:
|
|
|
+ key = '{}/{}/{}.jpeg'.format(kwargs['uid'], kwargs['channel'], kwargs['n_time'])
|
|
|
else:
|
|
|
- key = '{}/{}/{}_0.jpeg'.format(param['uid'], param['channel'], param['n_time'])
|
|
|
+ key = '{}/{}/{}_0.jpeg'.format(kwargs['uid'], kwargs['channel'], kwargs['n_time'])
|
|
|
# 开始异步推送图片
|
|
|
push_thread = threading.Thread(target=cls.async_send_picture_push, args=(
|
|
|
- push_type, param['aws_s3_client'], param['bucket'], key,
|
|
|
- param['uid'], param['appBundleId'], param['token_val'], param['event_type'], param['n_time'],
|
|
|
- push_kwargs['msg_title'], push_kwargs['msg_text'], param['channel']))
|
|
|
+ push_type, kwargs['aws_s3_client'], kwargs['bucket'], key,
|
|
|
+ kwargs['uid'], kwargs['appBundleId'], kwargs['token_val'], kwargs['event_type'], kwargs['n_time'],
|
|
|
+ push_kwargs['msg_title'], push_kwargs['msg_text'], kwargs['channel']))
|
|
|
push_thread.start()
|
|
|
push_result = True
|
|
|
|
|
@@ -363,15 +383,15 @@ class DevicePushService:
|
|
|
else:
|
|
|
if push_type in [0, 1, 2]:
|
|
|
kwargs = {
|
|
|
- 'nickname': param['uid'],
|
|
|
- 'app_bundle_id': param['appBundleId'],
|
|
|
- 'token_val': param['token_val'],
|
|
|
- 'n_time': param['n_time'],
|
|
|
- 'event_type': param['event_type'],
|
|
|
+ 'nickname': kwargs['uid'],
|
|
|
+ 'app_bundle_id': kwargs['appBundleId'],
|
|
|
+ 'token_val': kwargs['token_val'],
|
|
|
+ 'n_time': kwargs['n_time'],
|
|
|
+ 'event_type': kwargs['event_type'],
|
|
|
'msg_title': push_kwargs['msg_title'],
|
|
|
'msg_text': push_kwargs['msg_text'],
|
|
|
- 'uid': param['uid'],
|
|
|
- 'channel': param['channel']
|
|
|
+ 'uid': kwargs['uid'],
|
|
|
+ 'channel': kwargs['channel']
|
|
|
}
|
|
|
|
|
|
if push_type == 0: # ios apns
|
|
@@ -386,7 +406,7 @@ class DevicePushService:
|
|
|
huawei_push_object = HuaweiPushObject()
|
|
|
huawei_push_object.send_push_notify_message(**push_kwargs)
|
|
|
elif push_type == 4: # android xmpush
|
|
|
- if param['event_type'] in [606, 607]:
|
|
|
+ if kwargs['event_type'] in [606, 607]:
|
|
|
channel_id = 111934
|
|
|
else:
|
|
|
channel_id = 104551
|