浏览代码

查询设备异常事件,查询设备类型接口

locky 3 月之前
父节点
当前提交
5d20c3f59a
共有 2 个文件被更改,包括 70 次插入2 次删除
  1. 11 0
      AdminController/DeviceManagementController.py
  2. 59 2
      AdminController/LogManagementController.py

+ 11 - 0
AdminController/DeviceManagementController.py

@@ -88,6 +88,8 @@ class DeviceManagement(View):
                 return self.reset_ai(request, request_dict, response)
             elif operation == 'resetPrimaryUser':
                 return self.resetPrimaryUser(request, request_dict, response)
+            elif operation == 'getDeviceType':
+                return self.getDeviceType(response)
             elif operation == 'getDeviceTypeList':
                 return self.getDeviceTypeList(request_dict, response)
             elif operation == 'deleteDeviceType':
@@ -408,6 +410,15 @@ class DeviceManagement(View):
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
+    @staticmethod
+    def getDeviceType(response):
+        try:
+            device_type_qs = DeviceTypeModel.objects.all().values('type', 'name')
+            print(list(device_type_qs))
+            return response.json(0, {'list': list(device_type_qs)})
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
     # 获取设备类型数据
     def getDeviceTypeList(self, request_dict, response):
         name = request_dict.get('name', None)

+ 59 - 2
AdminController/LogManagementController.py

@@ -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)))
+