|
@@ -11,7 +11,8 @@ 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, DeviceDomainRegionModel, IPAddr, CountryModel, RegionModel
|
|
|
+ AppLogModel, AppScannedSerial, StsFrequency, DeviceDomainRegionModel, IPAddr, CountryModel, RegionModel, \
|
|
|
+ AbnormalEvent, DeviceTypeModel, AbnormalEventCode
|
|
|
from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
|
|
|
|
|
|
|
|
@@ -62,8 +63,10 @@ class LogManagementView(View):
|
|
|
return self.getDomainLog(request_dict, response)
|
|
|
elif operation == 'getDomainScanLog': # 获取域名扫码日志
|
|
|
return self.getDomainScanLog(request_dict, response)
|
|
|
+ elif operation == 'getDeviceAbnormalEvent': # 获取设备异常事件
|
|
|
+ return self.getDeviceAbnormalEvent(request_dict, response)
|
|
|
else:
|
|
|
- return response.json(404)
|
|
|
+ return response.json(414)
|
|
|
|
|
|
def getRequestList(self, request_dict, response):
|
|
|
pageNo = request_dict.get('pageNo', None)
|
|
@@ -532,3 +535,57 @@ class LogManagementView(View):
|
|
|
return response.json(0, res)
|
|
|
except Exception as e:
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def getDeviceAbnormalEvent(request_dict, response):
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ device_type = request_dict.get('deviceType', None)
|
|
|
+ version = request_dict.get('version', None)
|
|
|
+ event_code = request_dict.get('eventCode', None)
|
|
|
+ page_no = request_dict.get('pageNo', None)
|
|
|
+ page_size = request_dict.get('pageSize', None)
|
|
|
+
|
|
|
+ if not all([page_no, page_size]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ page = int(page_no)
|
|
|
+ line = int(page_size)
|
|
|
+
|
|
|
+ try:
|
|
|
+ query = Q()
|
|
|
+ if uid:
|
|
|
+ query &= Q(uid=uid)
|
|
|
+ if device_type:
|
|
|
+ # 处理多个deviceType参数
|
|
|
+ device_types = [int(t.strip()) for t in device_type.split(',') if t.strip().isdigit()]
|
|
|
+ query &= Q(device_type__in=device_types)
|
|
|
+ if version:
|
|
|
+ query &= Q(version=version)
|
|
|
+ if event_code:
|
|
|
+ query &= Q(event_code=event_code)
|
|
|
+
|
|
|
+ abnormal_events = AbnormalEvent.objects.filter(query)
|
|
|
+ count = abnormal_events.count()
|
|
|
+ event_list = abnormal_events.order_by('-created_time').values(
|
|
|
+ 'id', 'uid', 'device_type', 'version', 'event_code',
|
|
|
+ 'content', 'event_time', 'created_time'
|
|
|
+ )[(page - 1) * line:page * line]
|
|
|
+
|
|
|
+ # 查询device_type对应的name,事件编码对应的事件
|
|
|
+ for event in event_list:
|
|
|
+ device_type = DeviceTypeModel.objects.filter(type=event['device_type']).first()
|
|
|
+ if device_type:
|
|
|
+ event['device_type'] = device_type.name
|
|
|
+ else:
|
|
|
+ event['device_type'] = ''
|
|
|
+
|
|
|
+ abnormal_event_code = AbnormalEventCode.objects.filter(event_code=event['event_code']).first()
|
|
|
+ if abnormal_event_code:
|
|
|
+ event['event'] = abnormal_event_code.event
|
|
|
+ else:
|
|
|
+ event['event'] = ''
|
|
|
+
|
|
|
+ return response.json(0, {'list': list(event_list), 'total': count})
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|