|
@@ -10,7 +10,7 @@ import time
|
|
|
|
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
|
|
|
|
-from Model.models import UidPushModel
|
|
|
|
|
|
+from Model.models import UidPushModel, SensorRecord, GatewaySubDevice
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.utils import LocalDateTimeUtil
|
|
from Object.utils import LocalDateTimeUtil
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
@@ -36,18 +36,42 @@ class GatewayView(View):
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
- def gateway_push(self, request_dict, response):
|
|
|
|
|
|
+ @staticmethod
|
|
|
|
+ def gateway_push(request_dict, response):
|
|
|
|
+ """
|
|
|
|
+ 网关推送
|
|
|
|
+ @param request_dict: 请求参数
|
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
|
+ @request_dict ieee_addr: 长地址
|
|
|
|
+ @request_dict src_addr: 短地址
|
|
|
|
+ @request_dict sensor_type: 传感器类型
|
|
|
|
+ @request_dict event_type: 事件类型
|
|
|
|
+ @request_dict alarm: 消息内容
|
|
|
|
+ @param response: 响应对象
|
|
|
|
+ @return: response
|
|
|
|
+ """
|
|
logger = logging.getLogger('info')
|
|
logger = logging.getLogger('info')
|
|
serial_number = request_dict.get('serial_number', None)
|
|
serial_number = request_dict.get('serial_number', None)
|
|
|
|
+ ieee_addr = request_dict.get('ieee_addr', None)
|
|
src_addr = request_dict.get('src_addr', None)
|
|
src_addr = request_dict.get('src_addr', None)
|
|
|
|
+ sensor_type = request_dict.get('sensor_type', None)
|
|
event_type = request_dict.get('event_type', None)
|
|
event_type = request_dict.get('event_type', None)
|
|
alarm = request_dict.get('alarm', None)
|
|
alarm = request_dict.get('alarm', None)
|
|
logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
|
|
logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
|
|
- if not all([serial_number, src_addr, event_type, alarm]):
|
|
|
|
|
|
+ if not all([serial_number, ieee_addr, src_addr, sensor_type, event_type, alarm]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
|
|
|
|
n_time = int(time.time())
|
|
n_time = int(time.time())
|
|
try:
|
|
try:
|
|
|
|
+ # 查询子设备表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')
|
|
|
|
+ if gateway_sub_device_qs.exists():
|
|
|
|
+ gateway_sub_device_id = gateway_sub_device_qs[0]['id']
|
|
|
|
+ # 写入传感器记录数据
|
|
|
|
+ SensorRecord.objects.create(gateway_sub_device_id=gateway_sub_device_id, alarm=alarm,
|
|
|
|
+ event_type=event_type, created_time=n_time)
|
|
# 查询推送配置数据
|
|
# 查询推送配置数据
|
|
uid_push_qs = UidPushModel.objects.filter(uid_set__uid=serial_number, uid_set__detect_status=1). \
|
|
uid_push_qs = UidPushModel.objects.filter(uid_set__uid=serial_number, uid_set__detect_status=1). \
|
|
values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
|
|
values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
|
|
@@ -88,11 +112,11 @@ class GatewayView(View):
|
|
|
|
|
|
try:
|
|
try:
|
|
# 推送消息
|
|
# 推送消息
|
|
- if push_type == 0: # ios apns
|
|
|
|
|
|
+ if push_type == 0: # ios apns
|
|
GatewayPushService.ios_apns_push(**kwargs)
|
|
GatewayPushService.ios_apns_push(**kwargs)
|
|
- elif push_type == 1: # android gcm
|
|
|
|
|
|
+ elif push_type == 1: # android gcm
|
|
GatewayPushService.android_fcm_push(**kwargs)
|
|
GatewayPushService.android_fcm_push(**kwargs)
|
|
- elif push_type == 2: # android 极光推送
|
|
|
|
|
|
+ elif push_type == 2: # android 极光推送
|
|
GatewayPushService.android_jpush(**kwargs)
|
|
GatewayPushService.android_jpush(**kwargs)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.info('网关推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
logger.info('网关推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|