|
@@ -204,94 +204,91 @@ class SerialNumberView(View):
|
|
|
mark = serial_number[6:9]
|
|
|
serial = serial_number[0:6]
|
|
|
|
|
|
- savePoint = transaction.savepoint()
|
|
|
try:
|
|
|
- try:
|
|
|
- if not country_id:
|
|
|
- ip = CommonService.get_ip_address(request)
|
|
|
- country_id = Device_Region().get_device_region(ip)
|
|
|
+ if not country_id:
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ country_id = Device_Region().get_device_region(ip)
|
|
|
|
|
|
- # 判断序列号是否已和企业关联
|
|
|
- company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id, serial_number=serial)
|
|
|
- if not company_serial_qs.exists():
|
|
|
- return response.json(173)
|
|
|
+ # 判断序列号是否已和企业关联
|
|
|
+ company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id, serial_number=serial)
|
|
|
+ if not company_serial_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
|
|
|
- # 当序列号已关联UID
|
|
|
- company_serial = company_serial_qs[0]
|
|
|
+ # 当序列号已关联UID
|
|
|
+ company_serial = company_serial_qs[0]
|
|
|
|
|
|
- if company_serial.status == 0: # 该序列号未绑定企业
|
|
|
- return response.json(173)
|
|
|
- elif company_serial.status == 1: # 绑定uid
|
|
|
- count = 0
|
|
|
- while count < 3:
|
|
|
- p2p = SerialNumberModel.objects.filter(serial_number=serial).values('p2p')
|
|
|
- print('此序列号的p2p类型:', p2p[0]['p2p'])
|
|
|
- uid_qs = UIDModel.objects.filter(vpg__company_id=company_serial.company.id,
|
|
|
- vpg__region_id=country_id,
|
|
|
- status=0, p2p_type=p2p[0]['p2p']).order_by('id')[0:10]
|
|
|
- # uid_qs:未进行绑定的uid列表
|
|
|
- if not uid_qs.exists():
|
|
|
- return response.json(173)
|
|
|
- uid = uid_qs[0]
|
|
|
- result = UIDModel.objects.filter(id=uid.id, status=0).\
|
|
|
- update(**{'status': 2, 'update_time': int(time.time())})
|
|
|
-
|
|
|
- if int(result) <= 0: # 更新失败
|
|
|
- count += 1
|
|
|
- continue
|
|
|
-
|
|
|
- uid_serial = UIDCompanySerialModel(uid_id=uid.id, company_serial_id=company_serial.id,
|
|
|
- add_time=now_time, update_time=now_time)
|
|
|
- uid_serial.save()
|
|
|
-
|
|
|
- company_serial.status = 2
|
|
|
- company_serial.save()
|
|
|
-
|
|
|
- dev = Device_Info.objects.filter(UID=uid.uid)
|
|
|
- if dev.exists():
|
|
|
- dev.update(serial_number=serial_number)
|
|
|
-
|
|
|
- full_uid_code = uid.uid__full_uid_code
|
|
|
- if uid.platform in CRCKey.keys():
|
|
|
- full_uid_code += ':'+CRCKey[uid.platform]
|
|
|
-
|
|
|
- res = {
|
|
|
- 'full_uid_code': CommonService.encode_data(full_uid_code),
|
|
|
- 'uid': CommonService.encode_data(uid.uid),
|
|
|
- 'mac': CommonService.encode_data(uid.mac),
|
|
|
- 'extra': uid.uid_extra,
|
|
|
- 'platform': uid.platform,
|
|
|
- 'initString': uid.init_string,
|
|
|
- 'initStringApp': uid.init_string_app,
|
|
|
- }
|
|
|
- return response.json(0, res)
|
|
|
- return response.json(5)
|
|
|
- else:
|
|
|
- uid_qs = UIDCompanySerialModel.objects.filter(company_serial_id=company_serial.id)
|
|
|
+ if company_serial.status == 0: # 该序列号未绑定企业
|
|
|
+ return response.json(173)
|
|
|
+ elif company_serial.status == 1: # 绑定uid
|
|
|
+ save_point = transaction.savepoint() # 设置事务保存点
|
|
|
+ count = 0
|
|
|
+ # 获取序列号的p2p类型
|
|
|
+ p2p = SerialNumberModel.objects.filter(serial_number=serial).values('p2p')[0]['p2p']
|
|
|
+ while count < 3:
|
|
|
+ # 查询是否存在未绑定序列号的uid
|
|
|
+ uid_qs = UIDModel.objects.filter(vpg__company_id=company_serial.company.id,
|
|
|
+ vpg__region_id=country_id, status=0, p2p_type=p2p). \
|
|
|
+ order_by('id')
|
|
|
if not uid_qs.exists():
|
|
|
return response.json(173)
|
|
|
- uid = uid_qs.values('uid__uid', 'uid__mac', 'uid__uid_extra', 'uid__full_uid_code',
|
|
|
- 'uid__platform', 'uid__init_string', 'uid__init_string_app')[0]
|
|
|
- full_uid_code = uid['uid__full_uid_code']
|
|
|
- if uid['uid__platform'] in CRCKey.keys():
|
|
|
- full_uid_code += ':'+CRCKey[uid['uid__platform']]
|
|
|
+
|
|
|
+ uid = uid_qs[0]
|
|
|
+ result = UIDModel.objects.filter(id=uid.id, status=0).\
|
|
|
+ update(status=2, update_time=now_time)
|
|
|
+
|
|
|
+ if int(result) <= 0: # 更新失败
|
|
|
+ count += 1
|
|
|
+ continue
|
|
|
+
|
|
|
+ # UID关联【企业关联序列号】表创建数据
|
|
|
+ UIDCompanySerialModel.objects.create(uid_id=uid.id, company_serial_id=company_serial.id,
|
|
|
+ add_time=now_time, update_time=now_time)
|
|
|
+
|
|
|
+ company_serial.status = 2
|
|
|
+ company_serial.save()
|
|
|
+
|
|
|
+ dev = Device_Info.objects.filter(UID=uid.uid)
|
|
|
+ if dev.exists():
|
|
|
+ dev.update(serial_number=serial_number)
|
|
|
+
|
|
|
+ full_uid_code = uid.uid__full_uid_code
|
|
|
+ if uid.platform in CRCKey.keys():
|
|
|
+ full_uid_code += ':'+CRCKey[uid.platform]
|
|
|
+
|
|
|
res = {
|
|
|
'full_uid_code': CommonService.encode_data(full_uid_code),
|
|
|
- 'uid': CommonService.encode_data(uid['uid__uid']),
|
|
|
- 'mac': CommonService.encode_data(uid['uid__mac']),
|
|
|
- 'extra': uid['uid__uid_extra'],
|
|
|
- 'platform': uid['uid__platform'],
|
|
|
- 'initString': uid['uid__init_string'],
|
|
|
- 'initStringApp': uid['uid__init_string_app'],
|
|
|
+ 'uid': CommonService.encode_data(uid.uid),
|
|
|
+ 'mac': CommonService.encode_data(uid.mac),
|
|
|
+ 'extra': uid.uid_extra,
|
|
|
+ 'platform': uid.platform,
|
|
|
+ 'initString': uid.init_string,
|
|
|
+ 'initStringApp': uid.init_string_app,
|
|
|
}
|
|
|
+ transaction.savepoint_commit(save_point) # 提交事务
|
|
|
return response.json(0, res)
|
|
|
- except Exception as e:
|
|
|
- if savePoint:
|
|
|
- transaction.rollback(savePoint)
|
|
|
- djangoLogger = logging.getLogger('django')
|
|
|
- djangoLogger.exception(repr(e))
|
|
|
- return response.json(176, str(e))
|
|
|
+ return response.json(5)
|
|
|
+ else:
|
|
|
+ uid_qs = UIDCompanySerialModel.objects.filter(company_serial_id=company_serial.id)
|
|
|
+ if not uid_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ uid = uid_qs.values('uid__uid', 'uid__mac', 'uid__uid_extra', 'uid__full_uid_code',
|
|
|
+ 'uid__platform', 'uid__init_string', 'uid__init_string_app')[0]
|
|
|
+ full_uid_code = uid['uid__full_uid_code']
|
|
|
+ if uid['uid__platform'] in CRCKey.keys():
|
|
|
+ full_uid_code += ':'+CRCKey[uid['uid__platform']]
|
|
|
+ res = {
|
|
|
+ 'full_uid_code': CommonService.encode_data(full_uid_code),
|
|
|
+ 'uid': CommonService.encode_data(uid['uid__uid']),
|
|
|
+ 'mac': CommonService.encode_data(uid['uid__mac']),
|
|
|
+ 'extra': uid['uid__uid_extra'],
|
|
|
+ 'platform': uid['uid__platform'],
|
|
|
+ 'initString': uid['uid__init_string'],
|
|
|
+ 'initStringApp': uid['uid__init_string_app'],
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
except Exception as e:
|
|
|
+ if save_point:
|
|
|
+ transaction.savepoint_rollback(save_point) # 事务回滚
|
|
|
djangoLogger = logging.getLogger('django')
|
|
|
djangoLogger.exception(repr(e))
|
|
|
return response.json(176, str(e))
|