瀏覽代碼

优化获取序列号程序

locky 3 年之前
父節點
當前提交
b37c368e13
共有 1 個文件被更改,包括 7 次插入19 次删除
  1. 7 19
      Controller/SerialNumberController.py

+ 7 - 19
Controller/SerialNumberController.py

@@ -199,20 +199,9 @@ class SerialNumberView(View):
             return response.json(5)
         redisObj.CONN.expire(serial_operate_lock_key, 60)
 
-        key = 'serial_lock'
-        value = redisObj.lpop(key)
-        count = 0
-        while value is False and count < 5:
-            time.sleep(1)
-            value = redisObj.lpop(key)
-            count += 1
-
-        if count == 5 and value is False:  # 暂时注释
-            return response.json(5)
-        userid = '3'
-        user_qs = UserModel.objects.filter(id=userid)
+        user_qs = UserModel.objects.filter(id=3)
         if not user_qs.exists():
-            redisObj.rpush(key, value)
+            redisObj.del_data(key=serial_operate_lock_key)  # redis解锁
             return response.json(9)
 
         user = user_qs[0]
@@ -234,12 +223,11 @@ class SerialNumberView(View):
                 sns.append(cs['serial_number'])
             mark = cs_qs[0]['company__mark']
 
-        sn_qs = SerialNumberModel.objects.filter(serial_number__in=sns)
-        if not sn_qs.exists():
-            return response.json(444, '序列号不足')
+        # 判断是否还有可用的序列号
         count = result['num']
-        if count < quantity:
-            redisObj.rpush(key, value)
+        sn_qs = SerialNumberModel.objects.filter(serial_number__in=sns)
+        if not sn_qs.exists() or count < quantity:
+            redisObj.del_data(key=serial_operate_lock_key)  # redis解锁
             return response.json(444, '序列号不足')
 
         try:
@@ -291,8 +279,8 @@ class SerialNumberView(View):
                 }
                 LogModel.objects.create(**log)
                 redisObj.del_data(key=serial_operate_lock_key)  # redis解锁
-                redisObj.rpush(key, value)
                 return response.json(0, {'serial_number': serial_number + mark, 'mac': mac})
         except Exception as e:
+            redisObj.del_data(key=serial_operate_lock_key)  # redis解锁
             return response.json(500, repr(e))