Просмотр исходного кода

Merge remote-tracking branch 'remotes/origin/locky' into test

Ansjer 1 год назад
Родитель
Сommit
828a4cad50
1 измененных файлов с 65 добавлено и 3 удалено
  1. 65 3
      AdminController/LogManagementController.py

+ 65 - 3
AdminController/LogManagementController.py

@@ -4,11 +4,13 @@ import boto3
 import botocore
 import requests
 from django.views.generic.base import View
+
+from Object.IPWeatherObject import IPQuery
 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, AppScannedSerial, StsFrequency
+    AppLogModel, AppScannedSerial, StsFrequency, DeviceDomainRegionModel, IPAddr, CountryModel
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 
 
@@ -51,10 +53,12 @@ class LogManagementView(View):
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
-            elif operation == 'getScanLog':  # 获取app日志
+            elif operation == 'getScanLog':  # 获取扫码日志
                 return self.getScanLog(request_dict, response)
-            elif operation == 'getAlarmLog':  # 获取app日志
+            elif operation == 'getAlarmLog':  # 获取警报日志
                 return self.getAlarmLog(request_dict, response)
+            elif operation == 'getDomainLog':  # 获取域名日志
+                return self.getDomainLog(request_dict, response)
             else:
                 return response.json(404)
 
@@ -408,3 +412,61 @@ class LogManagementView(View):
         except Exception as e:
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def getDomainLog(request_dict, response):
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        serial_number = request_dict.get('serialNumber', None)
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+
+        try:
+            device_domain_qs = DeviceDomainRegionModel.objects.all()
+            if serial_number:
+                device_domain_qs = device_domain_qs.filter(serial_number__contains=serial_number)
+            count = device_domain_qs.count()
+            device_domain_qs = device_domain_qs.order_by('-update_time').values()[(page - 1) * line:page * line]
+
+            device_domain_list = []
+            for device_domain in device_domain_qs:
+                ip = device_domain['ip']
+                country_code = device_domain['country_code']
+                ip_addr_qs = IPAddr.objects.filter(ip=ip, is_geoip2=False).values('region')
+                if ip_addr_qs.exists():
+                    region = ip_addr_qs[0]['region']
+                else:
+                    ip_qs = IPQuery(ip)
+                    region = ip_qs.region
+
+                # 港澳台返回美洲域名
+                if country_code == 'CN' and region in ['香港', '澳门', '台湾']:
+                    country_code = 'NA'
+
+                country_qs = CountryModel.objects.filter(country_code=country_code).\
+                    values('region__name', 'region__api')
+                api = ''
+                region_name = ''
+                if country_qs.exists():
+                    api = country_qs[0]['region__api']
+                    region_name = country_qs[0]['region__name']
+                api_region = region_name + '域名'
+
+                device_domain_list.append({
+                    'id': device_domain['id'],
+                    'serial_number': device_domain['serial_number'],
+                    'ip': ip,
+                    'region_id': device_domain['region_id'],
+                    'country_code': country_code,
+                    'api': api,
+                    'api_region': api_region,
+                    'add_time': device_domain['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                    'update_time': device_domain['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                })
+            return response.json(0, {'list': device_domain_list, 'total': count})
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))