|
@@ -51,6 +51,9 @@ class GatewayDeviceView(View):
|
|
if operation == 'bind-serial-user':
|
|
if operation == 'bind-serial-user':
|
|
response = ResponseObject()
|
|
response = ResponseObject()
|
|
return self.bind_serial_user(request_dict, response)
|
|
return self.bind_serial_user(request_dict, response)
|
|
|
|
+ elif operation == 'reset':
|
|
|
|
+ response = ResponseObject()
|
|
|
|
+ return self.reset(request_dict, response)
|
|
|
|
|
|
token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
lang = request_dict.get('lang', None)
|
|
lang = request_dict.get('lang', None)
|
|
@@ -535,6 +538,54 @@ class GatewayDeviceView(View):
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
|
|
+ @staticmethod
|
|
|
|
+ def reset(request_dict, response):
|
|
|
|
+ """
|
|
|
|
+ 网关复位删除设备信息
|
|
|
|
+ @param request_dict: 请求参数字典
|
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
|
+ @param response: 响应对象
|
|
|
|
+ @return:
|
|
|
|
+ """
|
|
|
|
+ serial_number = request_dict.get('serial_number')
|
|
|
|
+ if not serial_number:
|
|
|
|
+ return response.json(444)
|
|
|
|
+ try:
|
|
|
|
+ with transaction.atomic():
|
|
|
|
+ device_qs = Device_Info.objects.filter(serial_number=serial_number)
|
|
|
|
+ device_id_list = list(device_qs.values_list('id', flat=True))
|
|
|
|
+ user_id_list = list(device_qs.values_list('userID_id', flat=True))
|
|
|
|
+ if not device_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
+
|
|
|
|
+ FamilyRoomDevice.objects.filter(device_id__in=device_id_list).delete()
|
|
|
|
+ UidSetModel.objects.filter(uid=device_qs.first().UID).delete()
|
|
|
|
+ socket_info_qs = SocketInfo.objects.filter(device_id__in=device_id_list)
|
|
|
|
+ if socket_info_qs.exists():
|
|
|
|
+ socket_info_qs.delete()
|
|
|
|
+ SocketPowerStatistics.objects.filter(device_id__in=device_id_list).delete()
|
|
|
|
+ SocketSchedule.objects.filter(device_id__in=device_id_list).delete()
|
|
|
|
+ SmartSocketView.delete_alexa_socket(serial_number)
|
|
|
|
+
|
|
|
|
+ # 如果有子设备,删除子设备和关联的场景数据,删除传感器记录
|
|
|
|
+ gateway_qs = GatewaySubDevice.objects.filter(device_id__in=device_id_list)
|
|
|
|
+ if gateway_qs.exists():
|
|
|
|
+ sub_id_list = gateway_qs.values_list('id', flat=True)
|
|
|
|
+ SensorRecord.objects.filter(gateway_sub_device_id__in=list(sub_id_list)).delete()
|
|
|
|
+ SmartScene.objects.filter(Q(device_id__in=device_id_list) | Q(sub_device_id__in=sub_id_list)).delete()
|
|
|
|
+ else:
|
|
|
|
+ SmartScene.objects.filter(device_id__in=device_id_list).delete()
|
|
|
|
+
|
|
|
|
+ gateway_qs.delete() # 删除子设备
|
|
|
|
+ SceneLog.objects.filter(device_id__in=device_id_list).delete()
|
|
|
|
+ device_qs.delete()
|
|
|
|
+ # 异步删除推送消息
|
|
|
|
+ asy = threading.Thread(target=ModelService.del_user_list_eq_info, args=(user_id_list, serial_number))
|
|
|
|
+ asy.start()
|
|
|
|
+ return response.json(0)
|
|
|
|
+ except Exception as e:
|
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
+
|
|
@classmethod
|
|
@classmethod
|
|
def update_socket(cls, serial_number, device_name, user_id, region):
|
|
def update_socket(cls, serial_number, device_name, user_id, region):
|
|
url = 'https://www.zositech.xyz/deviceStatus/addOrUpdateSwitch'
|
|
url = 'https://www.zositech.xyz/deviceStatus/addOrUpdateSwitch'
|
|
@@ -549,6 +600,8 @@ class GatewayDeviceView(View):
|
|
requests.post(url=url, data=data, timeout=5)
|
|
requests.post(url=url, data=data, timeout=5)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(repr(e))
|
|
print(repr(e))
|
|
|
|
+
|
|
|
|
+
|
|
#
|
|
#
|
|
# ___====-_ _-====___
|
|
# ___====-_ _-====___
|
|
# _--^^^#####// \\#####^^^--_
|
|
# _--^^^#####// \\#####^^^--_
|