Prechádzať zdrojové kódy

优化获取序列号

locky 3 rokov pred
rodič
commit
9c21d8df31
1 zmenil súbory, kde vykonal 72 pridanie a 72 odobranie
  1. 72 72
      Controller/SerialNumberController.py

+ 72 - 72
Controller/SerialNumberController.py

@@ -177,82 +177,82 @@ class SerialNumberView(View):
         token = request_dict.get('token', None)
         time_stamp = request_dict.get('time_stamp', None)
         mac = request_dict.get('mac', None)
-        if token and time_stamp and quantity and company_id:
 
-            token = int(CommonService.decode_data(token))
-            time_stamp = int(time_stamp)
+        if not all([token, time_stamp, company_id]):
+            return response.json(444)
 
-            now_time = int(time.time())
-            distance = now_time - time_stamp
+        token = int(CommonService.decode_data(token))
+        time_stamp = int(time_stamp)
 
-            if token != time_stamp or distance > 60000 or distance < -60000:  # 为了全球化时间控制在一天内
-                return response.json(404)
+        now_time = int(time.time())
+        distance = now_time - time_stamp
+
+        if token != time_stamp or distance > 60000 or distance < -60000:  # 为了全球化时间控制在一天内
+            return response.json(404)
 
-            redisObject = RedisObject()
-            key = 'serial_lock'
+        redisObject = RedisObject()
+        key = 'serial_lock'
+        value = redisObject.lpop(key)
+        count = 0
+        while value is False and count < 5:
+            time.sleep(1)
             value = redisObject.lpop(key)
-            count = 0
-            while value is False and count < 5:
-                time.sleep(1)
-                value = redisObject.lpop(key)
-                count += 1
-
-            if count == 5 and value is False:  # 暂时注释
-                return response.json(5)
-            userid = '3'
-            user_qs = UserModel.objects.filter(id=userid)
-            if not user_qs.exists():
-                redisObject.rpush(key, value)
-                return response.json(9)
-
-            user = user_qs[0]
-            result = UserSerialNumberModel.objects.filter(user__id=user.id,
-                                                          serial_number__use_status=1).aggregate(
-                num=Count('serial_number__use_status'))
-
-            us_qs = UserSerialNumberModel.objects.filter(user__id=user.id,
-                                                         serial_number__use_status=1).values(
-                'serial_number__serial_number')
-
-            sns = []
-            for us in us_qs:
-                sns.append(us['serial_number__serial_number'])
-
-            cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=1, company__secret=company_id).values('serial_number', 'company__mark')
-            sns = []
-            mark = ""
-            if cs_qs.exists():
-                for cs in cs_qs:
-                    sns.append(cs['serial_number'])
-                mark = cs_qs[0]['company__mark']
-
-            sn_qs = SerialNumberModel.objects.filter(serial_number__in=sns)
-            count = result['num']
-            if count < quantity:
-                redisObject.rpush(key, value)
-                return response.json(444, '序列号不足')
-
-            # company_serial_qs = company_serial_qs.values('id', 'serial_number__serial_number', 'company__mark')
-            save_point = transaction.savepoint()  # 设置事务保存点
-            try:
-                if sn_qs.exists():
-                    sn_qs = sn_qs[0: quantity]
-                    serial_number = sn_qs[0].serial_number
-                    serialNumberModel = SerialNumberModel(
-                        id=sn_qs[0].id,
-                        serial_number=serial_number,
-                        status=sn_qs[0].status,
-                        use_status=2,
-                        add_time=sn_qs[0].add_time
-                    )
-                    updates = []
-                    updates.append(serialNumberModel)
-                    bulk_update(updates)
+            count += 1
 
-            except Exception as e:
-                if save_point:
-                    transaction.savepoint_rollback(save_point)  # 事务回滚
+        if count == 5 and value is False:  # 暂时注释
+            return response.json(5)
+        userid = '3'
+        user_qs = UserModel.objects.filter(id=userid)
+        if not user_qs.exists():
             redisObject.rpush(key, value)
-            return response.json(0, {'serial_number': serial_number + mark, 'mac': mac})
-        else:
-            return response.json(444)
+            return response.json(9)
+
+        user = user_qs[0]
+        result = UserSerialNumberModel.objects.filter(user__id=user.id,
+                                                      serial_number__use_status=1).aggregate(
+            num=Count('serial_number__use_status'))
+
+        us_qs = UserSerialNumberModel.objects.filter(user__id=user.id,
+                                                     serial_number__use_status=1).values(
+            'serial_number__serial_number')
+
+        sns = []
+        for us in us_qs:
+            sns.append(us['serial_number__serial_number'])
+
+        cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=1, company__secret=company_id).values('serial_number', 'company__mark')
+        sns = []
+        mark = ""
+        if cs_qs.exists():
+            for cs in cs_qs:
+                sns.append(cs['serial_number'])
+            mark = cs_qs[0]['company__mark']
+
+        sn_qs = SerialNumberModel.objects.filter(serial_number__in=sns)
+        count = result['num']
+        if count < quantity:
+            redisObject.rpush(key, value)
+            return response.json(444, '序列号不足')
+
+        # company_serial_qs = company_serial_qs.values('id', 'serial_number__serial_number', 'company__mark')
+        save_point = transaction.savepoint()  # 设置事务保存点
+        try:
+            if sn_qs.exists():
+                sn_qs = sn_qs[0: quantity]
+                serial_number = sn_qs[0].serial_number
+                serialNumberModel = SerialNumberModel(
+                    id=sn_qs[0].id,
+                    serial_number=serial_number,
+                    status=sn_qs[0].status,
+                    use_status=2,
+                    add_time=sn_qs[0].add_time
+                )
+                updates = []
+                updates.append(serialNumberModel)
+                bulk_update(updates)
+
+        except Exception as e:
+            if save_point:
+                transaction.savepoint_rollback(save_point)  # 事务回滚
+        redisObject.rpush(key, value)
+        return response.json(0, {'serial_number': serial_number + mark, 'mac': mac})