|
@@ -374,6 +374,7 @@ class SerialNumberView(View):
|
|
|
else:
|
|
|
return response.json(444)
|
|
|
|
|
|
+ @transaction.atomic
|
|
|
def do_detach_uid(self, request, request_dict, response):
|
|
|
token = request_dict.get('token', None)
|
|
|
time_stamp = request_dict.get('time_stamp', None)
|
|
@@ -396,46 +397,55 @@ class SerialNumberView(View):
|
|
|
return response.json(173)
|
|
|
uid_serial = uid_serial_qs[0]
|
|
|
|
|
|
- # 删除iot设备信息表数据
|
|
|
- iot = iotdeviceInfoModel.objects.filter(serial_number=serial)
|
|
|
- if iot.exists():
|
|
|
- iot.delete()
|
|
|
-
|
|
|
- uid = uid_serial.uid.uid
|
|
|
- company_serial_qs = CompanySerialModel.objects.filter(id=uid_serial.company_serial.id)
|
|
|
- if company_serial_qs.exists():
|
|
|
- company_serial = company_serial_qs[0]
|
|
|
- company_serial.status = 1
|
|
|
- company_serial.save()
|
|
|
- dv_qs = Device_Info.objects.filter(UID=uid)
|
|
|
- if dv_qs.exists():
|
|
|
- # 删除设备
|
|
|
- dv_qs.delete()
|
|
|
- # 删除设备影子信息uid_set 外键关联删除设备推送配置信息 uid_push
|
|
|
- up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
|
|
|
- DetectControllerView().do_delete_redis(uid)
|
|
|
- if up_qs.count() > 1:
|
|
|
- UidPushModel.objects.filter(uid_set__uid=uid).delete()
|
|
|
- else:
|
|
|
- up_qs.delete()
|
|
|
-
|
|
|
- UIDModel.objects.filter(uid=uid).update(status=0, mac='') # 重置uid的使用状态为未分配
|
|
|
- uid_serial.delete()
|
|
|
-
|
|
|
- # 记录操作日志
|
|
|
- ip = CommonService.get_ip_address(request)
|
|
|
- content = json.loads(json.dumps(request_dict))
|
|
|
- log = {
|
|
|
- 'ip': ip,
|
|
|
- 'user_id': 1,
|
|
|
- 'status': 200,
|
|
|
- 'time': now_time,
|
|
|
- 'content': json.dumps(content),
|
|
|
- 'url': 'serialNumber/detachUID',
|
|
|
- 'operation': '序列号{}解绑uid: {}'.format(serial, uid),
|
|
|
- }
|
|
|
- LogModel.objects.create(**log)
|
|
|
- return response.json(0)
|
|
|
+ try:
|
|
|
+ save_point = transaction.savepoint() # 设置事务保存点
|
|
|
+ # 删除iot设备信息表数据
|
|
|
+ iot = iotdeviceInfoModel.objects.filter(serial_number=serial)
|
|
|
+ if iot.exists():
|
|
|
+ iot.delete()
|
|
|
+
|
|
|
+ uid = uid_serial.uid.uid
|
|
|
+ company_serial_qs = CompanySerialModel.objects.filter(id=uid_serial.company_serial.id)
|
|
|
+ if company_serial_qs.exists():
|
|
|
+ company_serial = company_serial_qs[0]
|
|
|
+ company_serial.status = 1
|
|
|
+ company_serial.save()
|
|
|
+ dv_qs = Device_Info.objects.filter(UID=uid)
|
|
|
+ if dv_qs.exists():
|
|
|
+ # 删除设备
|
|
|
+ dv_qs.delete()
|
|
|
+ # 删除设备影子信息uid_set 外键关联删除设备推送配置信息 uid_push
|
|
|
+ up_qs = UidPushModel.objects.filter(uid_set__uid=uid)
|
|
|
+ DetectControllerView().do_delete_redis(uid)
|
|
|
+ if up_qs.count() > 1:
|
|
|
+ UidPushModel.objects.filter(uid_set__uid=uid).delete()
|
|
|
+ else:
|
|
|
+ up_qs.delete()
|
|
|
+
|
|
|
+ UIDModel.objects.filter(uid=uid).update(status=0, mac='') # 重置uid的使用状态为未分配
|
|
|
+ uid_serial.delete()
|
|
|
+
|
|
|
+ # 记录操作日志
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ content = json.loads(json.dumps(request_dict))
|
|
|
+ log = {
|
|
|
+ 'ip': ip,
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': now_time,
|
|
|
+ 'content': json.dumps(content),
|
|
|
+ 'url': 'serialNumber/detachUID',
|
|
|
+ 'operation': '序列号{}解绑uid: {}'.format(serial, uid),
|
|
|
+ }
|
|
|
+ LogModel.objects.create(**log)
|
|
|
+ transaction.savepoint_commit(save_point) # 提交事务
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ if save_point:
|
|
|
+ transaction.savepoint_rollback(save_point) # 事务回滚
|
|
|
+ djangoLogger = logging.getLogger('django')
|
|
|
+ djangoLogger.exception(repr(e))
|
|
|
+ return response.json(176, str(e))
|
|
|
|
|
|
def do_update(self, userID, request_dict, response):
|
|
|
# perm = ModelService.check_perm_uid_manage(userID, 0)
|