Ver Fonte

更新网关推送

locky há 3 anos atrás
pai
commit
c0b00d7bf6
2 ficheiros alterados com 58 adições e 37 exclusões
  1. 38 36
      Controller/gatewayController.py
  2. 20 1
      Model/models.py

+ 38 - 36
Controller/gatewayController.py

@@ -1,16 +1,15 @@
 # -*- coding: utf-8 -*-
 """
+@Author : Rocky
 @Time : 2022/5/9 10:51
-@Auth : Locky
 @File :gatewayController.py
-@IDE :PyCharm
 """
 import logging
 import time
 
 from django.views.generic.base import View
 
-from Model.models import UidPushModel, SensorRecord, GatewaySubDevice
+from Model.models import SensorRecord, GatewaySubDevice, GatewayPush, Device_Info
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
@@ -22,14 +21,14 @@ class GatewayView(View):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         operation = kwargs.get('operation')
-        return self.validation(request.GET, request, operation)
+        return self.validation(request.GET, operation)
 
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         operation = kwargs.get('operation')
-        return self.validation(request.POST, request, operation)
+        return self.validation(request.POST, operation)
 
-    def validation(self, request_dict, request, operation):
+    def validation(self, request_dict, operation):
         response = ResponseObject()
         if operation == 'gatewayPush':  # 网关推送
             return self.gateway_push(request_dict, response)
@@ -54,8 +53,8 @@ class GatewayView(View):
         serial_number = request_dict.get('serial_number', None)
         ieee_addr = request_dict.get('ieee_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)
+        sensor_type = int(request_dict.get('sensor_type', None))
+        event_type = int(request_dict.get('event_type', None))
         alarm = request_dict.get('alarm', None)
         logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
         if not all([serial_number, ieee_addr, src_addr, sensor_type, event_type, alarm]):
@@ -63,46 +62,49 @@ class GatewayView(View):
 
         n_time = int(time.time())
         try:
+            nickname = serial_number
             # 查询子设备表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')
+                                                                    src_addr=src_addr).values('id', 'nickname')
             if gateway_sub_device_qs.exists():
                 gateway_sub_device_id = gateway_sub_device_qs[0]['id']
+                nickname = gateway_sub_device_qs[0]['nickname']
                 # 写入传感器记录数据
                 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). \
-                values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
-                       'lang', 'm_code', 'tz', 'uid_set__nickname', 'uid_set__detect_interval', 'uid_set__detect_group')
-            if not uid_push_qs.exists():
+
+            device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID_id')
+            if not device_info_qs.exists():
                 return response.json(173)
-            uid_push_list = [uid_push for uid_push in uid_push_qs]
-            nickname = uid_push_list[0]['uid_set__nickname']
-            device_nick_name = nickname if nickname else serial_number
-            detect_interval = uid_push_list[0]['uid_set__detect_interval']
-            detect_group = uid_push_list[0]['uid_set__detect_group']
 
             local_date_time = ''
             equipment_info_list = []
-            event_type = int(event_type)
-            kwargs = {
-                'n_time': n_time,
-                'event_type': event_type,
-                'nickname': device_nick_name,
-            }
-
-            for uid_push in uid_push_list:
-                device_user_id = uid_push['userID_id']
-                push_type = uid_push['push_type']
-                app_bundle_id = uid_push['appBundleId']
-                token_val = uid_push['token_val']
-                lang = uid_push['lang']
-                tz = uid_push['tz'] if uid_push['tz'] else 0
+
+            for device_info in device_info_qs:
+                user_id = device_info['userID_id']
+                # 查询推送配置数据
+                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,
+                }
+
+                user_id = gateway_push_qs[0]['user_id']
+                app_bundle_id = gateway_push_qs[0]['app_bundle_id']
+                push_type = gateway_push_qs[0]['push_type']
+                token_val = gateway_push_qs[0]['token_val']
+                lang = gateway_push_qs[0]['lang']
+                tz = gateway_push_qs[0]['tz'] if gateway_push_qs[0]['tz'] else 0
 
                 # 获取推送所需数据
-                msg_title = GatewayPushService.get_msg_title(app_bundle_id, device_nick_name)
+                msg_title = GatewayPushService.get_msg_title(app_bundle_id, nickname)
                 msg_text = GatewayPushService.get_msg_text(n_time, tz, lang, alarm)
 
                 kwargs['msg_title'] = msg_title
@@ -130,10 +132,10 @@ class GatewayView(View):
                     event_time=n_time,
                     receive_time=n_time,
                     device_uid=serial_number,
-                    device_nick_name=device_nick_name,
+                    device_nick_name=nickname,
                     alarm=alarm,
                     event_type=event_type,
-                    device_user_id=device_user_id,
+                    device_user_id=user_id,
                 ))
             if equipment_info_list:
                 # 根据日期获得星期几

+ 20 - 1
Model/models.py

@@ -1161,7 +1161,7 @@ class UidSetModel(models.Model):
 
 
 # 设备关联用户推送
-class   UidPushModel(models.Model):
+class UidPushModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
     userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)
     uid_set = models.ForeignKey(UidSetModel, to_field='id', on_delete=models.CASCADE)
@@ -1182,6 +1182,25 @@ class   UidPushModel(models.Model):
         ordering = ('-id',)
 
 
+class GatewayPush(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    user_id = models.CharField(default='', max_length=32, verbose_name=u'用户id')
+    app_bundle_id = models.CharField(default='', max_length=32, verbose_name=u'app包id')
+    app_type = models.IntegerField(default=0, verbose_name=u'app类型')    # 1: ios, 2: 安卓
+    push_type = models.IntegerField(default=0, verbose_name=u'推送类型')    # 0: apns, 1: 安卓gcm, 2: 极光
+    token_val = models.CharField(default='', max_length=500, verbose_name=u'设备验证令牌')
+    m_code = models.CharField(default='', max_length=64, verbose_name='手机唯一标识')
+    lang = models.CharField(default='en', max_length=8, verbose_name='推送语言')
+    tz = models.CharField(default='0', max_length=8, verbose_name='时区')
+    logout = models.BooleanField(default=False, verbose_name=u'退出登录')
+
+    class Meta:
+        db_table = 'gateway_push'
+        verbose_name = '网关推送'
+        verbose_name_plural = verbose_name
+        app_label = 'db2'
+
+
 # 设备通道配置
 class UidChannelSetModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')