Ver código fonte

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer

locky 3 anos atrás
pai
commit
6f50df4e8a
1 arquivos alterados com 17 adições e 8 exclusões
  1. 17 8
      Controller/SerialNumberController.py

+ 17 - 8
Controller/SerialNumberController.py

@@ -12,7 +12,8 @@ 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, UidSetModel
+    CountryModel, UIDModel, Device_Info, iotdeviceInfoModel, UidPushModel, LogModel, MacModel, UidSetModel, UID_Bucket, \
+    Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel
 from Object.RedisObject import RedisObject
 from Object.uidManageResponseObject import uidManageResponseObject
 from Object.TokenObject import TokenObject
@@ -151,13 +152,6 @@ class SerialNumberView(View):
         if serial_number[9:10]:
             p2p_type = serial_number[9:10]
 
-        # redis加锁,防止同一个序列号重复绑定
-        redisObj = RedisObject()
-        isLock = redisObj.CONN.setnx(serial + 'do_attach_uid', 1)
-        redisObj.CONN.expire(serial + 'do_attach_uid', 60)
-        if not isLock:
-            return response.json(5)
-
         try:
             if not country_id:
                 # 设备模拟国外环境测试
@@ -180,6 +174,13 @@ class SerialNumberView(View):
             if company_serial.status == 0:  # 该序列号未绑定企业
                 return response.json(173)
             elif company_serial.status == 1:    # 绑定uid
+                # redis加锁,防止同一个序列号重复绑定
+                key = serial + 'do_attach_uid'
+                redisObj = RedisObject()
+                isLock = redisObj.CONN.setnx(key, 1)
+                redisObj.CONN.expire(key, 60)
+                if not isLock:
+                    return response.json(5)
                 with transaction.atomic():
                     count = 0
                     while count < 3:
@@ -244,6 +245,7 @@ class SerialNumberView(View):
                             assert update_success
                         except AssertionError:
                             return response.json(378)
+                        redisObj.del_data(key=key)
                         return response.json(0, res)
                     return response.json(5)
             elif company_serial.status == 2:   # 返回uid
@@ -335,6 +337,13 @@ class SerialNumberView(View):
                 Device_Info.objects.filter(UID=uid).delete()
                 UidSetModel.objects.filter(uid=uid).delete()
                 iotdeviceInfoModel.objects.filter(serial_number=serial).delete()
+                # 重置设备云存
+                UID_Bucket.objects.filter(uid=uid).delete()
+                Unused_Uid_Meal.objects.filter(uid=uid).delete()
+                Order_Model.objects.filter(UID=uid).delete()
+                StsCrdModel.objects.filter(uid=uid).delete()
+                VodHlsModel.objects.filter(uid=uid).delete()
+                ExperienceContextModel.objects.filter(uid=uid).delete()
 
                 # 修改其他数据库的序列号使用状态为已使用
                 update_success = self.update_serial_status(serial=serial, status=1)