Kaynağa Gözat

智能场景表增加is_all_day字段,修改接口

locky 3 yıl önce
ebeveyn
işleme
97b2db969b

+ 9 - 4
Controller/SensorGateway/SmartSceneController.py

@@ -189,12 +189,13 @@ class SmartSceneView(View):
         tasks = request_dict.get('tasks', None)
         is_all_day = request_dict.get('isAllDay', None)
 
-        if not any([device_id, sub_device_id]):
-            return response.json(444, {'error param': 'deviceId or subDeviceId'})
+        if not any([device_id, sub_device_id,  is_all_day]):
+            return response.json(444, {'error param': 'deviceId or subDeviceId or isAllDay'})
         if not all([conditions, tasks]):
             return response.json(444, {'error param': 'conditions and tasks'})
 
         now_time = int(time.time())
+        is_all_day = int(is_all_day)    # 1: 全天, 2: 非全天
         conditions_dict = eval(conditions)
         tasks_list = eval(tasks)
         try:
@@ -208,6 +209,7 @@ class SmartSceneView(View):
                 'scene_name': scene_name,
                 'conditions': conditions,
                 'tasks': tasks,
+                'is_all_day': is_all_day,
                 'created_time': now_time,
                 'updated_time': now_time,
             }
@@ -227,9 +229,9 @@ class SmartSceneView(View):
                 serial_number = sub_device_qs[0]['device__serial_number']
 
             with transaction.atomic():
-                if not is_all_day:  # 没传时间
+                if is_all_day == 1:
                     smart_scene_qs = SmartScene.objects.create(**smart_scene_dict)
-                else:
+                elif is_all_day == 2:
                     if is_all_day == '0':
                         effective_time_qs = EffectiveTime.objects.filter(is_all_day=True).values('id')
                         if effective_time_qs.exists():
@@ -253,6 +255,9 @@ class SmartSceneView(View):
                                                                              repeat=repeat).id
                         smart_scene_dict['effective_time_id'] = effective_time_id
                         smart_scene_qs = SmartScene.objects.create(**smart_scene_dict)
+                else:
+                    return response.json(444, {'error param': 'invalid isAllDay'})
+
                 sub_device_id = conditions_dict['sensor']['subDeviceId']
                 sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('src_addr').first()
                 msg = {

+ 3 - 0
Controller/SensorGateway/SubDeviceController.py

@@ -274,6 +274,9 @@ class GatewaySubDeviceView(View):
                     else:
                         record_dict[date] = [alarm]
 
+            else:
+                return response.json(444, {'error param': 'invalid cycle'})
+
             # 组织响应数据列表,value为每 小时/天 的平均值
             for k, v in record_dict.items():
                 record_list.append({'key': k, 'value': round(sum(v) / len(v), 1)})

+ 1 - 0
Model/models.py

@@ -2631,6 +2631,7 @@ class SmartScene(models.Model):
     scene_name = models.CharField(default='', max_length=100, verbose_name=u'场景名称')
     conditions = models.CharField(default='', max_length=255, verbose_name=u'条件')
     tasks = models.CharField(default='', max_length=255, verbose_name=u'任务')
+    is_all_day = models.SmallIntegerField(default=0, verbose_name=u'是否全天')  # 1: 全天, 2: 非全天
     effective_time_id = models.IntegerField(default=0, verbose_name=u'关联场景执行时间id')
     is_enable = models.BooleanField(default=True, verbose_name=u'是否开启')
     device_data = models.CharField(default='', max_length=255, verbose_name=u'设备场景数据')