|
@@ -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})
|