Browse Source

ip地址表ip增加索引,日志查询新增APP扫码/云存警报,新增编辑修改流量套餐有效期

zhangdongming 1 năm trước cách đây
mục cha
commit
4518b41c22

+ 58 - 2
AdminController/LogManagementController.py

@@ -8,7 +8,7 @@ from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
-    AppLogModel
+    AppLogModel, AppScannedSerial, StsFrequency
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 
 
@@ -51,6 +51,10 @@ class LogManagementView(View):
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
+            elif operation == 'getScanLog':  # 获取app日志
+                return self.getScanLog(request_dict, response)
+            elif operation == 'getAlarmLog':  # 获取app日志
+                return self.getAlarmLog(request_dict, response)
             else:
                 return response.json(404)
 
@@ -351,4 +355,56 @@ class LogManagementView(View):
             return response.json(0, {'list': app_log_list, 'total': count})
         except Exception as e:
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    def getScanLog(self, request_dict, response):
+        serial = request_dict.get('serial', None)
+        ip = request_dict.get('ip', None)
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+
+        if not all([pageNo, pageSize]):
+            return response.json(444)
+
+        page = int(pageNo)
+        line = int(pageSize)
+
+        try:
+            scan_log_qs = AppScannedSerial.objects.all()
+            if serial:
+                scan_log_qs = scan_log_qs.filter(serial__contains=serial)
+            if ip:
+                scan_log_qs = scan_log_qs.filter(ip__contains=ip)
+            count = scan_log_qs.count()
+            scan_log_qs = scan_log_qs.order_by('-add_time').values(
+                'serial', 'ip', 'add_time', 'update_time')[
+                          (page - 1) * line:page * line]
+            scan_log_list = list(scan_log_qs)
+            return response.json(
+                0, {'list': scan_log_list, 'total': count})
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    def getAlarmLog(self, request_dict, response):
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        uid = request_dict.get('uid', None)
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+
+        try:
+            alarm_log_qs = StsFrequency.objects.all()
+            if uid:
+                alarm_log_qs = alarm_log_qs.filter(uid=uid)
+            count = alarm_log_qs.count()
+            alarm_log_qs = alarm_log_qs.order_by('-updateTime').values('id', 'uid', 'frequency', 'updateTime',
+                                                                       'addTime')[(page - 1) * line:page * line]
+            return response.json(0, {'list': list(alarm_log_qs), 'total': count})
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 80 - 0
AdminController/UnicomManageController.py

@@ -122,6 +122,10 @@ 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)
+            elif operation == 'updateFlowComboById':  # 根据ID更新流量套餐
+                return self.update_flow_combo_by_id(request_dict, response)
             if operation == 'verifyPackageExport':
                 return self.verify_package_export_excel(request, request_dict, response)
             else:
@@ -851,6 +855,22 @@ class UnicomManageControllerView(View):
             return response.json(0, {'package_list': cls.get_dx_package_list(original_data)})
         return response.json(0, {'package_list': package_list})
 
+    @classmethod
+    def update_flow_combo_by_id(cls, request_dict, response):
+        """
+        根据ID修改流量套餐
+        """
+        try:
+            flow_combo_id = request_dict.get('id', None)
+            expire_time = request_dict.get('expireTime', None)
+            if not all([flow_combo_id, expire_time]):
+                return response.json(0)
+            UnicomComboOrderInfo.objects.filter(id=int(flow_combo_id)).update(expire_time=int(expire_time))
+            return response.json(0)
+        except Exception as e:
+            LOGGER.error('*****更新流量套餐异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response(500)
+
     @staticmethod
     def get_unicom_package_list(iccid, o_qs):
         package_list = []
@@ -1553,3 +1573,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

+ 1 - 1
Model/models.py

@@ -4686,7 +4686,7 @@ class IotCardOrderUsageHistory(models.Model):
 
 class IPAddr(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='主键')
-    ip = models.CharField(default='', max_length=32, verbose_name='ip')
+    ip = models.CharField(default='', db_index=True, max_length=32, verbose_name='ip')
     district = models.CharField(default='', max_length=32, verbose_name='区')
     city = models.CharField(default='', max_length=32, verbose_name='市')
     region = models.CharField(default='', max_length=32, verbose_name='省/州')