Explorar o código

优化序列号解绑uid程序

locky %!s(int64=3) %!d(string=hai) anos
pai
achega
3dff2e4d6f
Modificáronse 1 ficheiros con 22 adicións e 30 borrados
  1. 22 30
      Controller/SerialNumberController.py

+ 22 - 30
Controller/SerialNumberController.py

@@ -12,7 +12,7 @@ from django.views import View
 from Controller.DetectController import DetectControllerView
 from Controller.DeviceConfirmRegion import Device_Region
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, CompanyModel, RegionModel, \
-    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel, MacModel
+    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel, MacModel, UidSetModel
 from Object.RedisObject import RedisObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
@@ -306,6 +306,14 @@ class SerialNumberView(View):
 
         now_time = int(time.time())
         serial = serial_number[0:6]
+        company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial).values('status')
+        if not company_serial_qs.exists():
+            return response.json(379)
+        status = company_serial_qs[0]['status']
+        if status == 1:
+            return response.json(0, {'success': '序列号未绑定uid'})
+        elif status == 3:
+            return response.json(10043)
         uid_serial_qs = UIDCompanySerialModel.objects.filter(company_serial__serial_number=serial)
         if not uid_serial_qs.exists():
             return response.json(173)
@@ -313,35 +321,19 @@ class SerialNumberView(View):
 
         try:
             with transaction.atomic():
-                # 删除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()
-
-                    # 修改其他数据库的序列号使用状态为已使用
-                    update_success = self.update_serial_status(serial=serial, status=1)
-                    try:
-                        assert update_success
-                    except AssertionError:
-                        return response.json(378)
+                company_serial_qs.update(status=1)      # 更新序列号状态
+                # 删除设备相关数据
+                Device_Info.objects.filter(UID=uid).delete()
+                UidSetModel.objects.filter(uid=uid).delete()
+                iotdeviceInfoModel.objects.filter(serial_number=serial).delete()
+
+                # 修改其他数据库的序列号使用状态为已使用
+                update_success = self.update_serial_status(serial=serial, status=1)
+                try:
+                    assert update_success
+                except AssertionError:
+                    return response.json(378)
 
                 UIDModel.objects.filter(uid=uid).update(status=0, mac='')    # 重置uid的使用状态为未分配
                 uid_serial.delete()
@@ -414,7 +406,7 @@ class SerialNumberView(View):
             if update:
                 return response.json(0)
             else:
-                return response.json(176)
+                return response.json(378)
         except Exception as e:
             djangoLogger = logging.getLogger('django')
             djangoLogger.exception(repr(e))