Browse Source

查找设备序列号:306低功耗无Wi-Fi产品

yeweidong 2 years ago
parent
commit
e22bd8ee02
2 changed files with 66 additions and 1 deletions
  1. 55 1
      Controller/TestApi.py
  2. 11 0
      Model/models.py

+ 55 - 1
Controller/TestApi.py

@@ -47,7 +47,7 @@ from django.contrib.auth.hashers import make_password  # 对密码加密模块
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, \
     AWS_SECRET_ACCESS_KEY, SERVER_TYPE, AWS_SES_ACCESS_REGION
 from Model.models import Order_Model, Store_Meal, DeviceLogModel, VodBucketModel, \
-    TestSerialRepetition, UIDCompanySerialModel, CompanySerialModel, LogModel
+    TestSerialRepetition, TestDeviceFindSerial, UIDCompanySerialModel, CompanySerialModel, LogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -170,6 +170,8 @@ class testView(View):
             return self.getSerialNumberInfo(request_dict, response)
         elif operation == 'get-serial-details':  # 序列号信息查询
             return self.get_serial_details(request_dict, response, request)
+        elif operation == 'find_device_serial':  # 查找设备序列号接口:306低功耗无Wi-Fi产品
+            return self.find_device_serial(request_dict, response)
         else:
             return 123
 
@@ -1024,3 +1026,55 @@ class testView(View):
             LOGGER.info('异常详情,errLine:{}, errMsg:{}'
                         .format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500)
+
+    @classmethod
+    def find_device_serial(cls, request_dict, response):
+        try:
+            firmware_time_code_no = request_dict.get('firmwareTimeCode', None)
+            function_type_str = request_dict.get('functionType', None)
+            serial_no = request_dict.get('serialNo', None)
+            if not function_type_str:
+                return response.json(444)
+            with transaction.atomic():
+                first_firmwares_qs = TestDeviceFindSerial.objects.filter(firmware_time_code=firmware_time_code_no)
+                if function_type_str == 'save_firmware_code': # pc上报唯一码(固件码+时间)  device_save_serial get_device_serial
+                    if not firmware_time_code_no:
+                        return response.json(444)
+                    if first_firmwares_qs.exists():
+                        return response.json(174)
+                    else:
+                        now_time = int(time.time())
+                        params = {'firmware_time_code': firmware_time_code_no, 'created_time': now_time}
+                        TestDeviceFindSerial.objects.create(**params)
+                    return response.json(0)
+                elif function_type_str == 'device_save_serial':     # 设备上报序列号绑定固件码  get_device_serial
+                    if not all([firmware_time_code_no, serial_no]):
+                        return response.json(444)
+                    if first_firmwares_qs.exists():
+                        serial_no_qs = TestDeviceFindSerial.objects.filter(serial_number=serial_no)
+                        if serial_no_qs.exists():
+                            return response.json(174)
+                        data_id = first_firmwares_qs.first().id
+                        TestDeviceFindSerial.objects.filter(id=data_id).update(serial_number=serial_no)
+                        return response.json(0)
+                    else:
+                        return response.json(173)
+
+                elif function_type_str == 'get_device-serial':  # 根据固件码获取序列号
+                    if not firmware_time_code_no:
+                        return response.json(444)
+                    if first_firmwares_qs.exists():
+                        result = {'Id': first_firmwares_qs.first().id,
+                                'firmwareTimeCode': firmware_time_code_no,
+                                'serialNumber': first_firmwares_qs.first().serial_number,
+                                'createdTime': first_firmwares_qs.first().created_time}
+                        print('返回结果 : %s', result)
+                        return response.json(0, result)
+                    else:
+                        return response.json(173)
+                else:
+                    return response.json(444)
+
+        except Exception as e:
+            LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(178, e)

+ 11 - 0
Model/models.py

@@ -3384,6 +3384,17 @@ class TestSerialRepetition(models.Model):
         verbose_name = '测试序列号重复问题'
         verbose_name_plural = verbose_name
 
+class TestDeviceFindSerial(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    serial_number = models.CharField(blank=True, db_index=True, max_length=20, default='',
+                                     verbose_name='序列号')
+    firmware_time_code = models.CharField(max_length=128, unique=True, default='', verbose_name='PC固件码+时间')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'test_device_find_serial'
+        verbose_name = '查找设备序列号'
+        verbose_name_plural = verbose_name
 
 class SocketPowerStatistics(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')