|
@@ -10,15 +10,14 @@ import time
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
from AnsjerPush.Config.gatewaySensorConfig import SENSOR_TYPE, EVENT_TYPE
|
|
|
-from Model.models import SensorRecord, GatewaySubDevice, GatewayPush, Device_Info, SceneLog, SmartScene
|
|
|
+from Model.models import SensorRecord, GatewaySubDevice, GatewayPush, Device_Info, SceneLog, SmartScene, CountryModel
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
|
from Service.CommonService import CommonService
|
|
|
from Service.EquipmentInfoService import EquipmentInfoService
|
|
|
from Service.HuaweiPushService.HuaweiPushService import HuaweiPushObject
|
|
|
from Service.PushService import PushObject
|
|
|
-
|
|
|
-LOGGER = logging.getLogger('info')
|
|
|
+from AnsjerPush.config import LOGGER
|
|
|
|
|
|
|
|
|
class GatewayView(View):
|
|
@@ -43,47 +42,54 @@ class GatewayView(View):
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
|
- @staticmethod
|
|
|
- def gateway_push(request_dict, response):
|
|
|
+ @classmethod
|
|
|
+ def gateway_push(cls, request_dict, response):
|
|
|
"""
|
|
|
网关推送
|
|
|
@param request_dict: 请求参数
|
|
|
@request_dict serial_number: 序列号
|
|
|
+ @request_dict dev_class: 设备大类
|
|
|
+ @request_dict dev_type: 设备小类
|
|
|
@request_dict ieee_addr: 长地址
|
|
|
- @request_dict src_addr: 短地址
|
|
|
- @request_dict sensor_type: 传感器类型
|
|
|
- @request_dict event_type: 事件类型
|
|
|
- @request_dict alarm: 消息内容
|
|
|
- @request_dict defense: 防御状态,0:撤防,1:防御
|
|
|
- @request_dict sensor_status: 拆动状态,拆动时传参
|
|
|
+ @request_dict param: 事件参数
|
|
|
+ @request_dict defense: 防御状态,0:撤防,1:布防
|
|
|
@param response: 响应对象
|
|
|
@return: response
|
|
|
"""
|
|
|
- logger = logging.getLogger('info')
|
|
|
+ LOGGER.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
|
|
|
serial_number = request_dict.get('serial_number', None)
|
|
|
+ dev_class = int(request_dict.get('dev_class', None))
|
|
|
+ dev_type = int(request_dict.get('dev_type', None))
|
|
|
ieee_addr = request_dict.get('ieee_addr', None)
|
|
|
- src_addr = request_dict.get('src_addr', None)
|
|
|
- sensor_type = int(request_dict.get('sensor_type', None))
|
|
|
- event_type = int(request_dict.get('event_type', None))
|
|
|
- alarm = request_dict.get('alarm', None)
|
|
|
+ param = eval(request_dict.get('param', None))
|
|
|
defense = int(request_dict.get('defense', None))
|
|
|
- sensor_status = request_dict.get('sensor_status', None)
|
|
|
- logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
|
|
|
- if not all([serial_number, ieee_addr, src_addr, sensor_type, event_type, alarm]):
|
|
|
+
|
|
|
+ if not all([serial_number, dev_class, dev_type, ieee_addr, param]):
|
|
|
return response.json(444)
|
|
|
|
|
|
n_time = int(time.time())
|
|
|
|
|
|
try:
|
|
|
+ # 根据dev_class和dev_type确定sensor_type,param确定event_type列表
|
|
|
+ sensor_type, event_type_list = cls.confirm_sensor_type_and_event_type(dev_class, dev_type, param)
|
|
|
+
|
|
|
# 查询子设备表id
|
|
|
gateway_sub_device_qs = GatewaySubDevice.objects.filter(device__serial_number=serial_number,
|
|
|
- device_type=sensor_type, ieee_addr=ieee_addr,
|
|
|
- src_addr=src_addr).values('id', 'nickname')
|
|
|
+ device_type=sensor_type, ieee_addr=ieee_addr).\
|
|
|
+ values('id', 'nickname', 'device__userID__region_country')
|
|
|
if not gateway_sub_device_qs.exists():
|
|
|
return response.json(173)
|
|
|
- else:
|
|
|
- gateway_sub_device_id = gateway_sub_device_qs[0]['id']
|
|
|
- nickname = gateway_sub_device_qs[0]['nickname']
|
|
|
+
|
|
|
+ country_id = gateway_sub_device_qs[0]['device__userID__region_country']
|
|
|
+ lang = cls.confirm_lang(country_id)
|
|
|
+ event_type_and_alarm_dict = cls.get_event_type_and_alarm_dict(lang, event_type_list)
|
|
|
+ gateway_sub_device_id = gateway_sub_device_qs[0]['id']
|
|
|
+ nickname = gateway_sub_device_qs[0]['nickname']
|
|
|
+
|
|
|
+ for_times = 0
|
|
|
+ dict_len = len(event_type_and_alarm_dict)
|
|
|
+ for event_type, alarm in event_type_and_alarm_dict.items():
|
|
|
+ for_times += 1
|
|
|
sensor_record_dict = {
|
|
|
'gateway_sub_device_id': gateway_sub_device_id,
|
|
|
'alarm': alarm,
|
|
@@ -101,107 +107,279 @@ class GatewayView(View):
|
|
|
|
|
|
SensorRecord.objects.create(**sensor_record_dict)
|
|
|
|
|
|
- # (门磁,烟雾,人体)传感器被拆动/拆动恢复,修改拆动状态
|
|
|
- if sensor_status:
|
|
|
- if sensor_type != SENSOR_TYPE['smart_button']: # 智能按钮不更新
|
|
|
- gateway_sub_device_qs.update(is_tampered=1)
|
|
|
- elif sensor_type == SENSOR_TYPE['door_magnet'] or sensor_type == SENSOR_TYPE['smoke_sensor'] or \
|
|
|
- sensor_type == SENSOR_TYPE['body_sensor']:
|
|
|
+ # 门磁传感器被拆动/拆动恢复,修改拆动状态
|
|
|
+ if event_type == 2152:
|
|
|
+ gateway_sub_device_qs.update(is_tampered=1)
|
|
|
+ elif event_type == 2156:
|
|
|
gateway_sub_device_qs.update(is_tampered=0)
|
|
|
|
|
|
- # 撤防状态不推送
|
|
|
- if defense == 0:
|
|
|
- return response.json(0)
|
|
|
+ # 撤防状态,且完成遍历,不推送
|
|
|
+ if defense == 0 and for_times == dict_len:
|
|
|
+ return response.json(0)
|
|
|
|
|
|
- device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID_id')
|
|
|
- if not device_info_qs.exists():
|
|
|
- return response.json(173)
|
|
|
+ device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID_id')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
|
|
|
- equipment_info_list = []
|
|
|
-
|
|
|
- for device_info in device_info_qs:
|
|
|
- user_id = device_info['userID_id']
|
|
|
-
|
|
|
- # 组织存储数据
|
|
|
- local_date_time = CommonService.get_now_time_str(n_time=n_time, tz=0, lang='cn')[:10]
|
|
|
- equipment_info_list.append(EquipmentInfoService.get_equipment_info_obj(
|
|
|
- local_date_time,
|
|
|
- add_time=n_time,
|
|
|
- event_time=n_time,
|
|
|
- receive_time=n_time,
|
|
|
- device_uid=serial_number,
|
|
|
- device_nick_name=nickname,
|
|
|
- alarm=alarm,
|
|
|
- event_type=event_type,
|
|
|
- device_user_id=user_id,
|
|
|
- ))
|
|
|
- if equipment_info_list:
|
|
|
- # 根据日期获得星期几
|
|
|
- week = LocalDateTimeUtil.date_to_week(local_date_time)
|
|
|
- EquipmentInfoService.equipment_info_bulk_create(week, equipment_info_list)
|
|
|
-
|
|
|
- # 查询推送配置数据
|
|
|
- gateway_push_qs = GatewayPush.objects.filter(user_id=user_id, logout=False). \
|
|
|
- values('user_id', 'app_bundle_id', 'app_type', 'push_type', 'token_val', 'm_code', 'lang', 'm_code',
|
|
|
- 'tz')
|
|
|
- if not gateway_push_qs.exists():
|
|
|
- continue
|
|
|
-
|
|
|
- kwargs = {
|
|
|
- 'n_time': n_time,
|
|
|
- 'event_type': event_type,
|
|
|
- 'nickname': nickname,
|
|
|
- }
|
|
|
+ equipment_info_list = []
|
|
|
+
|
|
|
+ # 推送到每个添加了网关的账号
|
|
|
+ for device_info in device_info_qs:
|
|
|
+ user_id = device_info['userID_id']
|
|
|
|
|
|
- # 推送到每台登录账号的手机
|
|
|
- for gateway_push in gateway_push_qs:
|
|
|
- app_bundle_id = gateway_push['app_bundle_id']
|
|
|
- push_type = gateway_push['push_type']
|
|
|
- token_val = gateway_push['token_val']
|
|
|
- lang = gateway_push['lang']
|
|
|
- tz = gateway_push['tz'] if gateway_push['tz'] else 0
|
|
|
-
|
|
|
- # 获取推送所需数据
|
|
|
- msg_title = PushObject.get_msg_title(nickname)
|
|
|
- msg_text = PushObject.get_gateway_msg_text(n_time, tz, lang, alarm)
|
|
|
-
|
|
|
- kwargs['msg_title'] = msg_title
|
|
|
- kwargs['msg_text'] = msg_text
|
|
|
- kwargs['app_bundle_id'] = app_bundle_id
|
|
|
- kwargs['token_val'] = token_val
|
|
|
-
|
|
|
- try:
|
|
|
- # 推送消息
|
|
|
- if push_type == 0: # ios apns
|
|
|
- PushObject.ios_apns_push(**kwargs)
|
|
|
- elif push_type == 1: # android gcm
|
|
|
- PushObject.android_fcm_push(**kwargs)
|
|
|
- elif push_type == 2: # android 极光推送
|
|
|
- PushObject.android_jpush(**kwargs)
|
|
|
- elif push_type == 3:
|
|
|
- huawei_push_object = HuaweiPushObject()
|
|
|
- huawei_push_object.send_push_notify_message(**kwargs)
|
|
|
- elif push_type == 4: # android 小米推送
|
|
|
- channel_id = 104551
|
|
|
- PushObject.android_xmpush(channel_id=channel_id, **kwargs)
|
|
|
- elif push_type == 5: # android vivo推送
|
|
|
- PushObject.android_vivopush(**kwargs)
|
|
|
- elif push_type == 6: # android oppo推送
|
|
|
- channel_id = 'DEVICE_REMINDER'
|
|
|
- PushObject.android_oppopush(channel_id=channel_id, **kwargs)
|
|
|
- elif push_type == 7: # android 魅族推送
|
|
|
- PushObject.android_meizupush(**kwargs)
|
|
|
- except Exception as e:
|
|
|
- logger.info('网关推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ # 组织存储数据
|
|
|
+ local_date_time = CommonService.get_now_time_str(n_time=n_time, tz=0, lang='cn')[:10]
|
|
|
+ equipment_info_list.append(EquipmentInfoService.get_equipment_info_obj(
|
|
|
+ local_date_time,
|
|
|
+ add_time=n_time,
|
|
|
+ event_time=n_time,
|
|
|
+ receive_time=n_time,
|
|
|
+ device_uid=serial_number,
|
|
|
+ device_nick_name=nickname,
|
|
|
+ alarm=alarm,
|
|
|
+ event_type=event_type,
|
|
|
+ device_user_id=user_id,
|
|
|
+ ))
|
|
|
+ if equipment_info_list:
|
|
|
+ # 根据日期获得星期几
|
|
|
+ week = LocalDateTimeUtil.date_to_week(local_date_time)
|
|
|
+ EquipmentInfoService.equipment_info_bulk_create(week, equipment_info_list)
|
|
|
+
|
|
|
+ # 查询推送配置数据
|
|
|
+ gateway_push_qs = GatewayPush.objects.filter(user_id=user_id, logout=False). \
|
|
|
+ values('user_id', 'app_bundle_id', 'app_type', 'push_type', 'token_val', 'm_code', 'lang',
|
|
|
+ 'm_code', 'tz')
|
|
|
+ if not gateway_push_qs.exists():
|
|
|
continue
|
|
|
|
|
|
+ kwargs = {
|
|
|
+ 'n_time': n_time,
|
|
|
+ 'event_type': event_type,
|
|
|
+ 'nickname': nickname,
|
|
|
+ }
|
|
|
+
|
|
|
+ # 推送到每台登录账号的手机
|
|
|
+ for gateway_push in gateway_push_qs:
|
|
|
+ app_bundle_id = gateway_push['app_bundle_id']
|
|
|
+ push_type = gateway_push['push_type']
|
|
|
+ token_val = gateway_push['token_val']
|
|
|
+ lang = gateway_push['lang']
|
|
|
+ tz = gateway_push['tz'] if gateway_push['tz'] else 0
|
|
|
+
|
|
|
+ # 获取推送所需数据
|
|
|
+ msg_title = PushObject.get_msg_title(nickname)
|
|
|
+ msg_text = PushObject.get_gateway_msg_text(n_time, tz, lang, alarm)
|
|
|
+
|
|
|
+ kwargs['msg_title'] = msg_title
|
|
|
+ kwargs['msg_text'] = msg_text
|
|
|
+ kwargs['app_bundle_id'] = app_bundle_id
|
|
|
+ kwargs['token_val'] = token_val
|
|
|
+
|
|
|
+ try:
|
|
|
+ # 推送消息
|
|
|
+ cls.push_msg(push_type, **kwargs)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('网关推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ continue
|
|
|
+
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
|
- logger.info('---网关推送接口异常--- {}'.format(repr(e)))
|
|
|
+ LOGGER.info('---网关推送接口异常--- {}'.format(repr(e)))
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
|
- def scene_log_push(request_dict, response):
|
|
|
+ def confirm_sensor_type_and_event_type(dev_class, dev_type, param):
|
|
|
+ """
|
|
|
+ 根据dev_class和dev_type确定sensor_type,param确定event_type
|
|
|
+ @param dev_class: 设备大类(开关量传感器、温湿度、灯)
|
|
|
+ @param dev_type: 设备小类(传感器类型、灯类型、温湿度类型)
|
|
|
+ @param param: 事件参数
|
|
|
+ @return: sensor_type, event_type_list
|
|
|
+ """
|
|
|
+ sensor_type, event_type_list = 0, []
|
|
|
+ if dev_class == 0: # 灯,待定
|
|
|
+ sensor_type = 0
|
|
|
+ elif dev_class == 1: # 网关
|
|
|
+ sensor_type = 200
|
|
|
+ elif dev_class == 2: # 开关类传感器
|
|
|
+ if dev_type == 13: # 人体红外
|
|
|
+ sensor_type = 219
|
|
|
+ elif dev_type == 22: # 门磁
|
|
|
+ sensor_type = 215
|
|
|
+ elif dev_type == 42: # 水浸
|
|
|
+ sensor_type = 217
|
|
|
+ elif dev_type == 44: # 智能按钮
|
|
|
+ sensor_type = 216
|
|
|
+ elif dev_class == 3: # 测量类传感器
|
|
|
+ if dev_type == 1: # 温湿度
|
|
|
+ sensor_type = 220
|
|
|
+ elif dev_type == 2: # 亮度,待定
|
|
|
+ sensor_type = 0
|
|
|
+ elif dev_class == 5: # 智能锁
|
|
|
+ if dev_type == 1: # 门锁,待定
|
|
|
+ sensor_type = 0
|
|
|
+ elif dev_class == 6: # 电机类设备
|
|
|
+ if dev_type == 1: # 窗帘,待定
|
|
|
+ sensor_type = 0
|
|
|
+
|
|
|
+ if sensor_type == 215: # 门磁
|
|
|
+ if param['alarm'] == 1: # 门磁开
|
|
|
+ event_type_list.append(2150)
|
|
|
+ elif param['alarm'] == 0: # 门磁关
|
|
|
+ event_type_list.append(2151)
|
|
|
+ if param['tamper'] == 1: # 拆动
|
|
|
+ event_type_list.append(2152)
|
|
|
+ if param['tamper'] == 0: # 拆动恢复
|
|
|
+ event_type_list.append(2156)
|
|
|
+ if param['battery'] == 1: # 低电量
|
|
|
+ event_type_list.append(2153)
|
|
|
+
|
|
|
+ elif sensor_type == 216: # 智能按钮
|
|
|
+ if param['alarm'] == 1: # 按下
|
|
|
+ event_type_list.append(2160)
|
|
|
+ if param['smrt_btn'] == 1: # 单击
|
|
|
+ event_type_list.append(2161)
|
|
|
+ elif param['smrt_btn'] == 2: # 双击
|
|
|
+ event_type_list.append(2162)
|
|
|
+ elif param['smrt_btn'] == 3: # 三击
|
|
|
+ event_type_list.append(2163)
|
|
|
+ if param['battery'] == 1: # 低电量
|
|
|
+ event_type_list.append(2164)
|
|
|
+
|
|
|
+ elif sensor_type == 217: # 水浸
|
|
|
+ if param['alarm'] == 1: # 水浸触发
|
|
|
+ event_type_list.append(2170)
|
|
|
+ elif param['alarm'] == 0: # 水浸恢复
|
|
|
+ event_type_list.append(2171)
|
|
|
+ if param['battery'] == 1: # 低电量
|
|
|
+ event_type_list.append(2172)
|
|
|
+
|
|
|
+ elif sensor_type == 219: # 人体红外
|
|
|
+ if param['alarm'] == 1: # 有人移动
|
|
|
+ event_type_list.append(2190)
|
|
|
+ elif param['alarm'] == 0: # 无人移动
|
|
|
+ event_type_list.append(2191)
|
|
|
+ if param['battery'] == 1: # 低电量
|
|
|
+ event_type_list.append(2193)
|
|
|
+
|
|
|
+ return sensor_type, event_type_list
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def confirm_lang(country_id):
|
|
|
+ """
|
|
|
+ 根据country_id确定语言
|
|
|
+ @param country_id: 国家id
|
|
|
+ @return lang: 语言
|
|
|
+ """
|
|
|
+ country_qs = CountryModel.objects.filter(id=country_id).values('country_code')
|
|
|
+ if not country_qs.exists():
|
|
|
+ lang = 'NA'
|
|
|
+ else:
|
|
|
+ lang = country_qs[0]['country_code']
|
|
|
+ return lang
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_event_type_and_alarm_dict(lang, event_type_list):
|
|
|
+ """
|
|
|
+ 获取事件类型和提示字典数据
|
|
|
+ @param lang: 语言
|
|
|
+ @param event_type_list: 事件类型列表
|
|
|
+ @return event_type_and_alarm_dict: 事件类型字典
|
|
|
+ """
|
|
|
+ alarm = ''
|
|
|
+ event_type_and_alarm_dict = {}
|
|
|
+ if lang == 'CN':
|
|
|
+ for event_type in event_type_list:
|
|
|
+ # 门磁
|
|
|
+ if event_type == 2150:
|
|
|
+ alarm = '门磁开'
|
|
|
+ elif event_type == 2151:
|
|
|
+ alarm = '门磁关'
|
|
|
+ elif event_type == 2152:
|
|
|
+ alarm = '被拆动'
|
|
|
+ elif event_type == 2156:
|
|
|
+ alarm = '拆动恢复'
|
|
|
+
|
|
|
+ # 智能按钮
|
|
|
+ elif event_type == 2160:
|
|
|
+ alarm = '紧急按钮按下'
|
|
|
+ elif event_type == 2161:
|
|
|
+ alarm = '按钮已按1下'
|
|
|
+ elif event_type == 2162:
|
|
|
+ alarm = '按钮已按2下'
|
|
|
+ elif event_type == 2163:
|
|
|
+ alarm = '按钮已按3下'
|
|
|
+
|
|
|
+ # 水浸
|
|
|
+ elif event_type == 2170:
|
|
|
+ alarm = '水浸触发'
|
|
|
+ elif event_type == 2171:
|
|
|
+ alarm = '水浸恢复'
|
|
|
+
|
|
|
+ # 烟雾
|
|
|
+ elif event_type == 2180:
|
|
|
+ alarm = '烟雾触发'
|
|
|
+ elif event_type == 2181:
|
|
|
+ alarm = '烟雾恢复'
|
|
|
+
|
|
|
+ # 人体红外
|
|
|
+ elif event_type == 2190:
|
|
|
+ alarm = '有人移动'
|
|
|
+ elif event_type == 2191:
|
|
|
+ alarm = '无人移动'
|
|
|
+
|
|
|
+ # 低电量
|
|
|
+ elif event_type in (2153, 2164, 2172, 2182, 2193):
|
|
|
+ alarm = '低电量'
|
|
|
+ event_type_and_alarm_dict[event_type] = alarm
|
|
|
+ else:
|
|
|
+ for event_type in event_type_list:
|
|
|
+ # 门磁
|
|
|
+ if event_type == 2150:
|
|
|
+ alarm = 'Door magnetic opening'
|
|
|
+ elif event_type == 2151:
|
|
|
+ alarm = 'Door magnetic closing'
|
|
|
+ elif event_type == 2152:
|
|
|
+ alarm = 'Be dismantled'
|
|
|
+ elif event_type == 2156:
|
|
|
+ alarm = 'Dismantling recovery'
|
|
|
+
|
|
|
+ # 智能按钮
|
|
|
+ elif event_type == 2160:
|
|
|
+ alarm = 'Emergency button pressed'
|
|
|
+ elif event_type == 2161:
|
|
|
+ alarm = 'Button pressed once'
|
|
|
+ elif event_type == 2162:
|
|
|
+ alarm = 'The button has been pressed twice'
|
|
|
+ elif event_type == 2163:
|
|
|
+ alarm = 'The button has been pressed 3 times'
|
|
|
+
|
|
|
+ # 水浸
|
|
|
+ elif event_type == 2170:
|
|
|
+ alarm = 'Water immersion trigger'
|
|
|
+ elif event_type == 2171:
|
|
|
+ alarm = 'Water immersion recovery'
|
|
|
+
|
|
|
+ # 烟雾
|
|
|
+ elif event_type == 2180:
|
|
|
+ alarm = 'Smoke triggering'
|
|
|
+ elif event_type == 2181:
|
|
|
+ alarm = 'Smoke recovery'
|
|
|
+
|
|
|
+ # 人体红外
|
|
|
+ elif event_type == 2190:
|
|
|
+ alarm = 'Someone moving'
|
|
|
+ elif event_type == 2191:
|
|
|
+ alarm = 'Unmanned movement'
|
|
|
+
|
|
|
+ # 低电量
|
|
|
+ elif event_type in (2153, 2164, 2172, 2182, 2193):
|
|
|
+ alarm = 'LOW BATTERY'
|
|
|
+ event_type_and_alarm_dict[event_type] = alarm
|
|
|
+ return event_type_and_alarm_dict
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def scene_log_push(cls, request_dict, response):
|
|
|
"""
|
|
|
网关智能场景日志推送
|
|
|
@param request_dict: 请求参数
|
|
@@ -275,25 +453,7 @@ class GatewayView(View):
|
|
|
|
|
|
try:
|
|
|
# 推送消息
|
|
|
- if push_type == 0: # ios apns
|
|
|
- PushObject.ios_apns_push(**kwargs)
|
|
|
- elif push_type == 1: # android gcm
|
|
|
- PushObject.android_fcm_push(**kwargs)
|
|
|
- elif push_type == 2: # android 极光推送
|
|
|
- PushObject.android_jpush(**kwargs)
|
|
|
- elif push_type == 3:
|
|
|
- huawei_push_object = HuaweiPushObject()
|
|
|
- huawei_push_object.send_push_notify_message(**kwargs)
|
|
|
- elif push_type == 4: # android 小米推送
|
|
|
- channel_id = 104551
|
|
|
- PushObject.android_xmpush(channel_id=channel_id, **kwargs)
|
|
|
- elif push_type == 5: # android vivo推送
|
|
|
- PushObject.android_vivopush(**kwargs)
|
|
|
- elif push_type == 6: # android oppo推送
|
|
|
- channel_id = 'DEVICE_REMINDER'
|
|
|
- PushObject.android_oppopush(channel_id=channel_id, **kwargs)
|
|
|
- elif push_type == 7: # android 魅族推送
|
|
|
- PushObject.android_meizupush(**kwargs)
|
|
|
+ cls.push_msg(push_type, **kwargs)
|
|
|
except Exception as e:
|
|
|
logger.info('场景日志推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
continue
|
|
@@ -302,6 +462,34 @@ class GatewayView(View):
|
|
|
logger.info('---场景日志推送接口异常--- {}'.format(repr(e)))
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def push_msg(push_type, **kwargs):
|
|
|
+ """
|
|
|
+ 发送推送消息
|
|
|
+ @param push_type: 推送类型
|
|
|
+ @param kwargs: 推送参数
|
|
|
+ @return: None
|
|
|
+ """
|
|
|
+ if push_type == 0: # ios apns
|
|
|
+ PushObject.ios_apns_push(**kwargs)
|
|
|
+ elif push_type == 1: # android gcm
|
|
|
+ PushObject.android_fcm_push(**kwargs)
|
|
|
+ elif push_type == 2: # android 极光推送
|
|
|
+ PushObject.android_jpush(**kwargs)
|
|
|
+ elif push_type == 3:
|
|
|
+ huawei_push_object = HuaweiPushObject()
|
|
|
+ huawei_push_object.send_push_notify_message(**kwargs)
|
|
|
+ elif push_type == 4: # android 小米推送
|
|
|
+ channel_id = 104551
|
|
|
+ PushObject.android_xmpush(channel_id=channel_id, **kwargs)
|
|
|
+ elif push_type == 5: # android vivo推送
|
|
|
+ PushObject.android_vivopush(**kwargs)
|
|
|
+ elif push_type == 6: # android oppo推送
|
|
|
+ channel_id = 'DEVICE_REMINDER'
|
|
|
+ PushObject.android_oppopush(channel_id=channel_id, **kwargs)
|
|
|
+ elif push_type == 7: # android 魅族推送
|
|
|
+ PushObject.android_meizupush(**kwargs)
|
|
|
+
|
|
|
@classmethod
|
|
|
def socket_msg_push(cls, request_dict, response):
|
|
|
"""
|