Prechádzať zdrojové kódy

上传文件重置序列号使用状态

locky 4 rokov pred
rodič
commit
dfc76d58d4
1 zmenil súbory, kde vykonal 32 pridanie a 82 odobranie
  1. 32 82
      Controller/FileController.py

+ 32 - 82
Controller/FileController.py

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