|
@@ -0,0 +1,57 @@
|
|
|
+# @Author : Rocky
|
|
|
+# @File : ReportController.py
|
|
|
+# @Time : 2025/5/12 10:42
|
|
|
+import json
|
|
|
+import time
|
|
|
+
|
|
|
+from django.views import View
|
|
|
+
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
+from Model.models import AbnormalEvent
|
|
|
+
|
|
|
+
|
|
|
+class ReportView(View):
|
|
|
+
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, operation):
|
|
|
+ response = ResponseObject()
|
|
|
+ if operation == 'abnormalEvent': # 上报异常事件
|
|
|
+ return self.abnormal_event(request_dict, response)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def abnormal_event(request_dict, response):
|
|
|
+ uid = request_dict.get('uid')
|
|
|
+ device_type = request_dict.get('device_type')
|
|
|
+ version = request_dict.get('version')
|
|
|
+ event_list = request_dict.get('event_list')
|
|
|
+
|
|
|
+ if not all([uid, device_type, version, event_list]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ try:
|
|
|
+ device_type = int(device_type)
|
|
|
+ now_time = int(time.time())
|
|
|
+ event_list = json.loads(event_list)
|
|
|
+
|
|
|
+ abnormal_event_list = []
|
|
|
+ for event in event_list:
|
|
|
+ event_code = event['event_code']
|
|
|
+ event_time = event['event_time']
|
|
|
+ abnormal_event = AbnormalEvent(
|
|
|
+ uid=uid, device_type=device_type, version=version, event_code=event_code, event_time=event_time,
|
|
|
+ created_time=now_time
|
|
|
+ )
|
|
|
+ abnormal_event_list.append(abnormal_event)
|
|
|
+ AbnormalEvent.objects.bulk_create(abnormal_event_list)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|