Browse Source

设备上传日志接口兼容使用序列号

locky 3 years ago
parent
commit
53bf1f6a26
2 changed files with 19 additions and 8 deletions
  1. 18 8
      Controller/DeviceLogController.py
  2. 1 0
      Model/models.py

+ 18 - 8
Controller/DeviceLogController.py

@@ -39,20 +39,23 @@ class DeviceLogView(View):
 
 
     def getUploadUrl(self, request_dict, response):
     def getUploadUrl(self, request_dict, response):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
+        serial_number = request_dict.get('serial_number', None)
         file_type = request_dict.get('file_type', None)
         file_type = request_dict.get('file_type', None)
         file_num = int(request_dict.get('file_num', 1))
         file_num = int(request_dict.get('file_num', 1))
 
 
-        if not all([uid, file_type]):
+        # uid,serial_number二传一
+        if not (uid or serial_number and file_type):
             return response.json(444)
             return response.json(444)
 
 
         try:
         try:
-            uid = CommonService.decode_data(uid)
+            device_id = uid if uid else serial_number
+            # device_id = CommonService.decode_data(device_id)
             put_url_list = []
             put_url_list = []
             for num in range(file_num):
             for num in range(file_num):
                 # 日志文件名
                 # 日志文件名
                 name = CommonService.createOrderID()
                 name = CommonService.createOrderID()
                 filename = str(name) + '.' + file_type
                 filename = str(name) + '.' + file_type
-                obj = 'device_log/{uid}/'.format(uid=uid) + filename
+                obj = 'device_log/{device_id}/'.format(device_id=device_id) + filename
                 aws_s3_client = boto3.client(
                 aws_s3_client = boto3.client(
                     's3',
                     's3',
                     region_name=REGION_NAME,
                     region_name=REGION_NAME,
@@ -77,17 +80,24 @@ class DeviceLogView(View):
 
 
     def uploaded(self, request, request_dict, response):
     def uploaded(self, request, request_dict, response):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
+        serial_number = request_dict.get('serial_number', None)
         status = request_dict.get('status', None)
         status = request_dict.get('status', None)
         filename = request_dict.get('filename', None)
         filename = request_dict.get('filename', None)
 
 
-        if not all([uid, status, filename]):
+        # uid,serial_number二传一
+        if not (uid or serial_number and status and filename):
             return response.json(444)
             return response.json(444)
 
 
         try:
         try:
-            status = int(status)
-            uid = CommonService.decode_data(uid)
-            ip = CommonService.get_ip_address(request)
-            DeviceLogModel.objects.create(uid=uid, ip=ip, status=status, filename=filename)
+            data_dict = {
+                'status': int(status),
+                'ip': CommonService.get_ip_address(request),
+            }
+            if uid:
+                data_dict['uid'] = CommonService.decode_data(uid)
+            else:
+                data_dict['serial_number'] = CommonService.decode_data(serial_number)
+            DeviceLogModel.objects.create(**data_dict)
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)

+ 1 - 0
Model/models.py

@@ -1168,6 +1168,7 @@ class DeviceLogModel(models.Model):
     id = models.AutoField(primary_key=True)
     id = models.AutoField(primary_key=True)
     ip = models.CharField(default='', max_length=32, verbose_name='ip')
     ip = models.CharField(default='', max_length=32, verbose_name='ip')
     uid = models.CharField(max_length=32, default='', verbose_name='设备uid')
     uid = models.CharField(max_length=32, default='', verbose_name='设备uid')
+    serial_number = models.CharField(max_length=9, default='', verbose_name='序列号')
     status = models.SmallIntegerField(default=0, verbose_name='上传状态')   # 0: 成功,1: 失败
     status = models.SmallIntegerField(default=0, verbose_name='上传状态')   # 0: 成功,1: 失败
     filename = models.CharField(max_length=120, default='', verbose_name='文件名')
     filename = models.CharField(max_length=120, default='', verbose_name='文件名')
     add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')
     add_time = models.DateTimeField(blank=True, auto_now_add=True, verbose_name=u'添加时间')