|
@@ -255,10 +255,8 @@ class UploadUIDFileView(View):
|
|
|
return str.format(operation=operation, quantity=quantity, area='国外')
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
class UploadSerialNumberFileView(View):
|
|
|
-
|
|
|
+ # 上传文件重置序列号使用状态
|
|
|
@method_decorator(csrf_exempt)
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
return super(UploadSerialNumberFileView, self).dispatch(request, *args, **kwargs)
|
|
@@ -266,87 +264,46 @@ class UploadSerialNumberFileView(View):
|
|
|
def get(self, request, *args, **kwargs):
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.GET
|
|
|
- fileName = request.FILES.get('fileName', None)
|
|
|
- return self.validate(fileName, request_dict, request)
|
|
|
+ return self.reset_serial_number(request_dict, request)
|
|
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.POST
|
|
|
- fileName = request.FILES.get('fileName', None)
|
|
|
- return self.validate(fileName, request_dict, request)
|
|
|
+ return self.reset_serial_number(request_dict, request)
|
|
|
|
|
|
- def validate(self, fileName, request_dict, request):
|
|
|
+ def reset_serial_number(self, request_dict, request):
|
|
|
token = request_dict.get('token', None)
|
|
|
- area = request_dict.get('area', None)
|
|
|
+ p2p = request_dict.get('area', None)
|
|
|
isReset = request_dict.get('isReset', 0)
|
|
|
content = request_dict.get('fileName', None)
|
|
|
- print('content')
|
|
|
- print(content)
|
|
|
-
|
|
|
- content = base64.b64decode(content).decode().strip()
|
|
|
- content = content[3:(len(content) - 3)]
|
|
|
- uids = content.split('\n')
|
|
|
- # print(uids)
|
|
|
- # print(len(uids))
|
|
|
+ print('content: ', content)
|
|
|
|
|
|
response = ResponseObject()
|
|
|
-
|
|
|
tko = TokenObject(token)
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
|
|
|
- # if not fileName and not area:
|
|
|
- # return response.json(444, 'fileName,area')
|
|
|
-
|
|
|
- data = {}
|
|
|
- duplicate = []
|
|
|
- for line in uids:
|
|
|
-
|
|
|
- if len(line) < 20:
|
|
|
- continue
|
|
|
-
|
|
|
- if data.__contains__(line):
|
|
|
- duplicate.append(line)
|
|
|
- else:
|
|
|
- data[line] = ''
|
|
|
-
|
|
|
- self.do_reset(data, response, area, request, tko)
|
|
|
-
|
|
|
- def do_reset(self, data, response, area, request, token):
|
|
|
- keys = data.keys()
|
|
|
- serial_numbers = []
|
|
|
- count = 0
|
|
|
- for key in keys:
|
|
|
- serial_numbers.append(key.strip())
|
|
|
- if len(serial_numbers) % 5000 == 0:
|
|
|
- count += self.do_update_uid_status(serial_numbers, area)
|
|
|
- serial_numbers.clear()
|
|
|
-
|
|
|
- if len(serial_numbers) > 0:
|
|
|
- count += self.do_update_uid_status(serial_numbers, area)
|
|
|
- serial_numbers.clear()
|
|
|
-
|
|
|
- operation = self.formatOperation('重置', int(count), int(area))
|
|
|
- self.add_log(request, operation, token)
|
|
|
- return response.json(0)
|
|
|
-
|
|
|
- def do_update_uid_status(self, uids, area):
|
|
|
- uid_qs = UIDModel.objects.filter(uid__in=uids, area=area, status=2)
|
|
|
- if uid_qs.exists():
|
|
|
- uid_ids = []
|
|
|
- for uid in uid_qs:
|
|
|
- if uid.status == 2:
|
|
|
- uid.status = 1
|
|
|
- uid_ids.append(uid.id)
|
|
|
- UIDModel.objects.bulk_update(uid_qs, fields=['status'])
|
|
|
-
|
|
|
- try:
|
|
|
- OrderUIDModel.objects.filter(uid__id__in=tuple(uid_ids)).delete()
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
-
|
|
|
- return uid_qs.count()
|
|
|
- return 0
|
|
|
+ if not p2p or not content:
|
|
|
+ return response.json(444, 'p2p, content')
|
|
|
+ try:
|
|
|
+ content = base64.b64decode(content).decode().strip()
|
|
|
+ content = content[3:(len(content)-3)]
|
|
|
+ serial_number_list = content.split('\r\n')
|
|
|
+ print('serial_number_list', serial_number_list)
|
|
|
+
|
|
|
+ # 重置使用状态为已下载的序列号为已分配
|
|
|
+ serial_number_qs = SerialNumberModel.objects.filter(serial_number__in=serial_number_list, p2p=p2p, use_status=2)
|
|
|
+ count = serial_number_qs.count() # 需要重置的序列号个数
|
|
|
+ if count:
|
|
|
+ with transaction.atomic():
|
|
|
+ serial_number_qs.update(use_status=1)
|
|
|
+ OrderSerialNumberModel.objects.filter(serial_number__in=serial_number_qs).delete()
|
|
|
+ operation = self.formatOperation('重置', int(count), p2p)
|
|
|
+ self.add_log(request, operation, tko)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ # print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
def add_log(self, request, operation, token):
|
|
|
ip = CommonService.get_ip_address(request)
|
|
@@ -365,19 +322,12 @@ class UploadSerialNumberFileView(View):
|
|
|
'operation': operation,
|
|
|
'user': user_qs[0]
|
|
|
}
|
|
|
+ LogModel.objects.create(**log)
|
|
|
|
|
|
- try:
|
|
|
- LogModel.objects.create(**log)
|
|
|
- except Exception as e:
|
|
|
- print('出错')
|
|
|
- print(repr(e))
|
|
|
-
|
|
|
- def formatOperation(self, operation, quantity, area):
|
|
|
- str = '{operation}{quantity}个{area}UID'
|
|
|
- if area == 0:
|
|
|
- return str.format(operation=operation, quantity=quantity, area='国内')
|
|
|
- else:
|
|
|
- return str.format(operation=operation, quantity=quantity, area='国外')
|
|
|
+ def formatOperation(self, operation, quantity, p2p):
|
|
|
+ operate = '{operation}{quantity}个{p2p}序列号'
|
|
|
+ p2p = '宸云' if p2p == '1' else 'TUTK'
|
|
|
+ return operate.format(operation=operation, quantity=quantity, p2p=p2p)
|
|
|
|
|
|
class DownloadUIDFileView(View):
|
|
|
|