Browse Source

新增PC获取序列号接口4

chenshibin 4 years ago
parent
commit
6f3812f08a
1 changed files with 46 additions and 16 deletions
  1. 46 16
      Controller/SerialNumberController.py

+ 46 - 16
Controller/SerialNumberController.py

@@ -207,29 +207,59 @@ class SerialNumberView(View):
 
             if count == 5 and value is False:  # 暂时注释
                 return response.json(5)
-
-            company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id, status=0,
-                                                                  p2p=p2p_type)
-            if not company_serial_qs.exists():
-                redisObject.rpush(key, value)
-                return response.json(373)
-
-            # 存在对应的企业
-            company_serial_qs = company_serial_qs[0:quantity]
+            userid = '3'
+            user_qs = UserModel.objects.filter(id=userid)
+            if not user_qs.exists():
+                return response.json(9)
+
+            user = user_qs[0]
+            result = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__p2p=p2p_type,
+                                                          serial_number__use_status=1).aggregate(
+                num=Count('serial_number__use_status'))
+
+            us_qs = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__p2p=p2p_type,
+                                                         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).values('serial_number', 'company')
+            sns = []
+            company = ""
+            if cs_qs.exists():
+                for cs in cs_qs:
+                    sns.append(cs['serial_number'])
+                company = cs_qs[0].company
+
+            sn_qs = SerialNumberModel.objects.filter(serial_number__in=sns)
+            count = result['num']
+            if count < quantity:
+                return response.json(444, '序列号不足')
 
             # company_serial_qs = company_serial_qs.values('id', 'serial_number__serial_number', 'company__mark')
             save_point = transaction.savepoint()  # 设置事务保存点
             try:
-                ids = []
-                for serial in company_serial_qs:
-                    ids.append(serial.id)
-                    SerialNumberModel.objects.filter(serial_number=serial.serial_number).update(use_status=2)
-                CompanySerialModel.objects.filter(id__in=ids).update(status=1)
+                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,
+                        p2p=sn_qs[0].p2p,
+                        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': company_serial_qs[0].serial_number + company_serial_qs[0].company.mark, 'mac': mac})
+            return response.json(0, {'serial_number': serial_number + company, 'mac': mac})
         else:
             return response.json(444)