فهرست منبع

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

Ansjer 1 سال پیش
والد
کامیت
828a4cad50
1فایلهای تغییر یافته به همراه65 افزوده شده و 3 حذف شده
  1. 65 3
      AdminController/LogManagementController.py

+ 65 - 3
AdminController/LogManagementController.py

@@ -4,11 +4,13 @@ import boto3
 import botocore
 import botocore
 import requests
 import requests
 from django.views.generic.base import View
 from django.views.generic.base import View
+
+from Object.IPWeatherObject import IPQuery
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
 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
 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)
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
                 return self.getAppLogList(request_dict, response)
-            elif operation == 'getScanLog':  # 获取app日志
+            elif operation == 'getScanLog':  # 获取扫码日志
                 return self.getScanLog(request_dict, response)
                 return self.getScanLog(request_dict, response)
-            elif operation == 'getAlarmLog':  # 获取app日志
+            elif operation == 'getAlarmLog':  # 获取警报日志
                 return self.getAlarmLog(request_dict, response)
                 return self.getAlarmLog(request_dict, response)
+            elif operation == 'getDomainLog':  # 获取域名日志
+                return self.getDomainLog(request_dict, response)
             else:
             else:
                 return response.json(404)
                 return response.json(404)
 
 
@@ -408,3 +412,61 @@ class LogManagementView(View):
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(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)))