Parcourir la source

新增定制推送515(儿童保护模式开启)

zhangdongming il y a 10 mois
Parent
commit
0fd9660b4c
2 fichiers modifiés avec 30 ajouts et 5 suppressions
  1. 9 3
      Controller/DetectControllerV2.py
  2. 21 2
      Service/DevicePushService.py

+ 9 - 3
Controller/DetectControllerV2.py

@@ -84,13 +84,19 @@ class NotificationV2View(View):
                     return JsonResponse(status=200, data={'code': 0, 'msg': 'Push again in one minute'})
             redis_obj.set_data(key=req_limiting, val=1, expire=60)  # 当缓存不存在限流数据 重新设置一分钟请求一次
 
+            # OZI定制客户儿童保护模式
+            child_protection = event_type == 515 and detection == 0
             # 查询uid_push和uid_set数据
-            uid_push_qs = DevicePushService.query_uid_push(uid, event_type, button)
+            if child_protection:
+                uid_push_qs = DevicePushService.get_uid_push_by_uid(uid)  # 查主用户
+            else:
+                uid_push_qs = DevicePushService.query_uid_push(uid, event_type, button)
+
             if not uid_push_qs.exists():
                 TIME_LOGGER.info('推送响应,uid:{},uid_push数据不存在!'.format(uid))
                 return JsonResponse(status=200, data={'code': 176, 'msg': 'no uid_push data'})
 
-            ai_type = uid_push_qs.first()['uid_set__ai_type']
+            ai_type = 0 if child_protection else uid_push_qs.first()['uid_set__ai_type']
             device_type = uid_push_qs.first()['uid_set__device_type']
 
             # uid_push_qs转存列表
@@ -100,7 +106,7 @@ class NotificationV2View(View):
 
             # APP消息提醒推送间隔
             detect_interval = uid_set_push_list[0]['uid_set__detect_interval']
-            if event_type not in [606, 607]:
+            if event_type not in [606, 607, 515]:
                 if not cache_app_push:
                     # 缓存APP提醒推送间隔 默认1分钟提醒一次
                     DevicePushService.cache_push_detect_interval(redis_obj, push_interval, detect_interval,

+ 21 - 2
Service/DevicePushService.py

@@ -127,6 +127,21 @@ class DevicePushService:
                        'uid_set__msg_notify', 'jg_token_val')
         return uid_push_qs
 
+    @classmethod
+    def get_uid_push_by_uid(cls, uid):
+        """
+        根据uid获取设备推送(目前仅用在OZI定制客户)
+        """
+        device_info_qs = Device_Info.objects.filter(UID=uid).values('vodPrimaryUserID')
+        primary_user_id = device_info_qs[0]['vodPrimaryUserID']
+        uid_push_qs = UidPushModel.objects.filter(uid_set__uid=uid, userID_id=primary_user_id) \
+            .exclude(token_val='0'). \
+            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',
+                   'uid_set__channel', 'uid_set__ai_type', 'uid_set__device_type', 'uid_set__new_detect_interval',
+                   'uid_set__msg_notify', 'jg_token_val')
+        return uid_push_qs
+
     @staticmethod
     def qs_to_list(qs):
         """
@@ -169,8 +184,8 @@ class DevicePushService:
                 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
+            # 低功耗产品推送,休眠702,低电量704提醒,515 ozi, 并且detection=0,0标识单事件类型,1标识多事件类型
+            is_app_push = True if params['event_type'] in [702, 704, 515] and params['detection'] == 0 else is_app_push
             redis_obj = params['redis_obj']
             # 推送
             if is_app_push:
@@ -562,6 +577,8 @@ class DevicePushService:
                 msg_type = '有人徘徊'
             elif event_type == 65:
                 msg_type = '长时间无人出现'
+            elif event_type == 515:
+                msg_type = '儿童保护模式开启'
 
             elif event_type == 704:
                 msg_type = '电量低'
@@ -615,6 +632,8 @@ class DevicePushService:
                 msg_type = 'Loitering detected'
             elif event_type == 65:
                 msg_type = 'No appearance for a long time'
+            elif event_type == 515:
+                msg_type = 'Child protection mode is enabled'
 
             elif event_type == 704:
                 msg_type = 'low battery'