ソースを参照

消息提醒设置新版本接口

zhangdongming 1 年間 前
コミット
da14c833ae
4 ファイル変更48 行追加14 行削除
  1. 2 0
      Ansjer/urls.py
  2. 41 12
      Controller/DetectControllerV2.py
  3. 4 2
      Controller/EquipmentManager.py
  4. 1 0
      Model/models.py

+ 2 - 0
Ansjer/urls.py

@@ -349,6 +349,8 @@ urlpatterns = [
     url(r'^api/surveys/(?P<operation>.*)$', CloudStorageController.CloudStorageView.as_view()),
     # 设备分享
     url(r'^api/device/share/(?P<operation>.*)$', UserDeviceShareController.UserDeviceShareView.as_view()),
+    re_path(r'^server/(?P<apiVersion>[a-zA-Z0-9]+)/open/detect/(?P<operation>.*)$',
+            DetectControllerV2.DetectControllerViewV2.as_view()),
 
     # 网关家庭模块
     url(r'^app/sensor/gateway/(?P<operation>.*)$', EquipmentFamilyController.EquipmentFamilyView.as_view()),

+ 41 - 12
Controller/DetectControllerV2.py

@@ -10,7 +10,6 @@ from django.views.generic.base import View
 
 from Ansjer.config import DETECT_PUSH_DOMAIN, DETECT_PUSH_DOMAINS, DETECT_PUSH_DOMAIN_JIUAN, DETECT_PUSH_DOMAINS_JIUAN, \
     OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, LOGGER
-from Ansjer.config import PUSH_REDIS_ADDRESS
 from Model.models import Device_Info, Equipment_Info, UidSetModel, UidPushModel, CompanyModel, SysMsgModel, \
     AiService, VodBucketModel
 from Object.ETkObject import ETkObject
@@ -28,17 +27,18 @@ class DetectControllerViewV2(View):
     def get(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         operation = kwargs.get('operation')
+        api_version = kwargs.get('apiVersion')
         # self.ip = CommonService.get_ip_address(request)
-        return self.validation(request.GET, operation)
+        return self.validation(request, request.GET, operation, api_version)
 
     def post(self, request, *args, **kwargs):
         request.encoding = 'utf-8'
         operation = kwargs.get('operation')
+        api_version = kwargs.get('apiVersion')
         # self.ip = CommonService.get_ip_address(request)
-        return self.validation(request.POST, operation)
-
-    def validation(self, request_dict, operation):
+        return self.validation(request, request.POST, operation, api_version)
 
+    def validation(self, request, request_dict, operation, api_version):
         response = ResponseObject()
         if operation is None:
             return response.json(444, 'error path')
@@ -58,11 +58,40 @@ class DetectControllerViewV2(View):
             # 更新推送延迟
             elif operation == 'updateInterval':
                 return self.do_update_interval(userID, request_dict, response)
+            # 消息提醒配置
+            elif operation == 'messageNotificationSet':
+                return self.message_notification_set(api_version, request_dict, response)
             else:
                 return response.json(414)
         else:
             return response.json(tko.code)
 
+    @classmethod
+    def message_notification_set(cls, api_version, request_dict, response):
+        """
+        消息提醒设置
+        @param api_version: 版本号
+        @param request_dict: 参数json格式
+        @param response: 响应数据
+        """
+        try:
+            msg_data = request_dict.get('msgData', None)
+            uid = request_dict.get('uid', None)
+            LOGGER.info('*****DetectControllerViewV2.message_notification_set*****api_version:{},uid:{}'
+                        .format(api_version, uid))
+            if not all([msg_data, uid]):
+                return response.json(444)
+            data = json.loads(msg_data)
+            uid_set_qs = UidSetModel.objects.filter(uid=uid)
+            if not uid_set_qs.exists():
+                return response.json(173)
+            uid_set_qs.update(msg_notify=data, updTime=int(time.time()))
+            return response.json(0)
+        except Exception as e:
+            LOGGER.info('*****DetectControllerViewV2.message_notification_set:errLine:{}, errMsg:{}'
+                        .format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
     def do_change_status(self, userID, request_dict, response):
         token_val = request_dict.get('token_val', None)
         jg_token_val = request_dict.get('jg_token_val', '')
@@ -114,7 +143,6 @@ class DetectControllerViewV2(View):
             uid_set_data = {
                 'device_type': device_info_qs[0].Type
             }
-
             # 设置开关状态,0:关闭,1:开启
             if status:
                 status = int(status)
@@ -124,9 +152,6 @@ class DetectControllerViewV2(View):
             # 检测类型
             if detect_group:
                 uid_set_data['detect_group'] = detect_group
-            # uid_set = UidSetModel.objects.filter(uid=uid).order_by('-updTime')
-            # if uid_set.exists():
-            #     interval = uid_set.first().new_detect_interval if not interval else interval
             # 设置消息推送间隔
             if interval:
                 interval = int(interval)
@@ -142,12 +167,16 @@ class DetectControllerViewV2(View):
                         }
                     }
                     CommonService.req_publish_mqtt_msg(uid, topic_name, msg)
-                    # req_success = CommonService.req_publish_mqtt_msg(uid, topic_name, msg)
-                    # if not req_success:
-                    #     return response.json(10044)
 
             uid_set_qs = UidSetModel.objects.filter(uid=uid)
             if uid_set_qs.exists():
+                msg_data = uid_set_qs.first().msg_notify
+                if status == 0 and msg_data:
+                    msg_data['appPush'] = -1
+                    uid_set_data['msg_notify'] = msg_data
+                elif status == 1 and msg_data:
+                    msg_data['appPush'] = 1
+                    uid_set_data['msg_notify'] = msg_data
                 uid_set_id = uid_set_qs[0].id
                 uid_set_data['updTime'] = nowTime
                 uid_set_qs.update(**uid_set_data)

+ 4 - 2
Controller/EquipmentManager.py

@@ -1088,7 +1088,8 @@ def uid_status(request):
     # 判断用户是否绑定设备
     qs = UidSetModel.objects.filter(uid=uid).values('uid', 'detect_status', 'detect_interval', 'version', 'ucode',
                                                     'p2p_region', 'tz', 'video_code', 'channel', 'cloud_vod', 'id',
-                                                    'detect_group', 'is_alexa', 'region_alexa', 'is_ptz')
+                                                    'detect_group', 'is_alexa', 'region_alexa', 'is_ptz',
+                                                    'msg_notify')
 
     # 调试
     debugOnes = int(time.time())
@@ -1119,7 +1120,8 @@ def uid_status(request):
             'detect_group': qs[0]['detect_group'],  # 推送组
             'is_alexa': qs[0]['is_alexa'],  # 推送组
             'region_alexa': qs[0]['region_alexa'],  # 推送组
-            'is_ptz': qs[0]['is_ptz']
+            'is_ptz': qs[0]['is_ptz'],
+            'msgData': qs[0]['msg_notify']
         }
 
         # 调试

+ 1 - 0
Model/models.py

@@ -1385,6 +1385,7 @@ class UidSetModel(models.Model):
     tb_city_information_id = models.IntegerField(blank=True, default=0, verbose_name='城市信息')
     device_type = models.SmallIntegerField(default=0, verbose_name='设备类型')
     ai_type = models.SmallIntegerField(default=0, verbose_name='检测类型')
+    msg_notify = models.JSONField(null=True, verbose_name='消息通知Json')
 
     class Meta:
         db_table = 'uid_set'