linhaohong 1 жил өмнө
parent
commit
a72bc03861

+ 62 - 0
AdminController/UnicomManageController.py

@@ -122,6 +122,8 @@ class UnicomManageControllerView(View):
                 return self.transfer_device_package(request_dict, response, tko.user)
             elif operation == 'updateExpirationDate':  # 修改套餐过期时间
                 return self.update_expiration_date(request_dict, response)
+            elif operation == 'batchOrderFlowPackage':  # 批量订购流量套餐包
+                return self.batch_order_flow_package(request, request_dict, response, userID)
             if operation == 'verifyPackageExport':
                 return self.verify_package_export_excel(request, request_dict, response)
             else:
@@ -1553,3 +1555,63 @@ class UnicomManageControllerView(View):
             LOGGER.info('*****UnicomManageController.package_cdk_export_excel:errLine:{}, errMsg:{}'
                         .format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @classmethod
+    def batch_order_flow_package(cls, request, request_dict, response, user_id):
+        serial_number_file = request.FILES.get('serialNumberFile', None)
+        package_id = request_dict.get('packageId', None)
+
+        if serial_number_file is None or package_id is None:
+            return response.json(444)
+
+        try:
+            # 读取序列号文件
+            serial_numbers = [line.decode('utf-8').strip() for line in serial_number_file.readlines()]
+            if all(len(serial_number) == 9 for serial_number in serial_numbers):
+                thread = threading.Thread(target=cls.batch_order_flow,
+                                          args=(serial_numbers, package_id, request, request_dict, user_id))
+                thread.start()
+            else:
+                return response.json(10, "请导入9位序列号")
+            return response.json(0)
+
+        except Exception as e:
+            LOGGER.info('*****UnicomManageController.batch_order_flow_package:errLine:{}, errMsg:{}'
+                        .format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @classmethod
+    def batch_order_flow(cls, serial_numbers, package_id, request, request_dict, user_id):
+        try:
+            failures = []  # 记录失败的序列号
+            successes = []  # 记录成功的数量
+
+            # 循环添加
+            for serial_number in serial_numbers:
+                serial_number = serial_number[:9]
+                result = UnicomComboView().generate_flow_package(serial_number, int(package_id), user_id)
+                LOGGER.info(f'{serial_number} 订购流量套餐包, createdBy:{user_id}, result:{result}')
+                if not result:
+                    failures.append(serial_number)
+                else:
+                    successes.append(serial_number)
+
+            # 写入操作日志
+            ip = CommonService.get_ip_address(request)
+            content = json.loads(json.dumps(request_dict))
+            log = {
+                'ip': ip,
+                'user_id': 1,
+                'status': 200,
+                'time': int(time.time()),
+                'url': 'unicom/manage/batchOrderFlowPackage',
+                'content': json.dumps(content),
+                'operation': f'批量充值流量,序列号{failures}充值失败,序列号{successes}流量充值成功',
+            }
+            LogModel.objects.create(**log)
+            return
+
+        except Exception as e:
+            LOGGER.info('*****UnicomManageController.batch_order_flow:errLine:{}, errMsg:{}'
+                        .format(e.__traceback__.tb_lineno, repr(e)))
+            return