Эх сурвалжийг харах

添加OTA升级V2接口,统计设备升级记录

Ansjer_antony_ios 3 жил өмнө
parent
commit
95c7309ee5

+ 1 - 0
Ansjer/urls.py

@@ -128,6 +128,7 @@ urlpatterns = [
     url(r'^dlotapack/(?P<fullPath>[0-9\w/.\-]+)', OTAEquipment.downloadOTAInterfaceV2),
     url(r'^dlotapack/(?P<fullPath>[0-9\w/.\-]+)', OTAEquipment.downloadOTAInterfaceV2),
     url(r'^OTA/getDownLoadOTApackUrl$', OTAEquipment.getDownLoadOTApackUrl),
     url(r'^OTA/getDownLoadOTApackUrl$', OTAEquipment.getDownLoadOTApackUrl),
     url(r'^OTA/checkMaxVersion$', OTAEquipment.checkMaxVersion),
     url(r'^OTA/checkMaxVersion$', OTAEquipment.checkMaxVersion),
+    url(r'^v2/OTA/checkMaxVersion$', OTAEquipment.checkMaxVersionV2),
 
 
     # h获取验证码    # v2接口
     # h获取验证码    # v2接口
     url(r'^v2/account/authcode$', UserController.v2authCodeView.as_view()),
     url(r'^v2/account/authcode$', UserController.v2authCodeView.as_view()),

+ 67 - 1
Controller/OTAEquipment.py

@@ -14,7 +14,7 @@ from django.views.generic import TemplateView
 from Ansjer.config import BASE_DIR
 from Ansjer.config import BASE_DIR
 from Ansjer.config import SERVER_DOMAIN
 from Ansjer.config import SERVER_DOMAIN
 from Ansjer.config import SERVER_TYPE
 from Ansjer.config import SERVER_TYPE
-from Model.models import Device_User, EquipmentVersionLimitModel, CountryIPModel
+from Model.models import Device_User, EquipmentVersionLimitModel, CountryIPModel, DeviceOTAUpgradeRecord
 from Model.models import Equipment_Version
 from Model.models import Equipment_Version
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
@@ -753,6 +753,72 @@ def checkMaxVersion(request):
     res = {
     res = {
         'url': url,
         'url': url,
     }
     }
+    # 记录设备OTA升级
+    createdTime = int(time.time())
+    # deviceOTA_UpgradeRecord = DeviceOTAUpgradeRecord({
+    #     Equipment_package=equipmentVersion[0].eid, created_time=createdTime, oldVersion=now_version, newVersion=softwareVersion})
+    # deviceOTA_UpgradeRecord.save()
+    DeviceOTAUpgradeRecord.objects.create(
+        equipment_package=equipmentVersion[0],
+        created_time=createdTime,
+        old_version=version,
+        new_version=equipmentVersion[0].version,
+    )
     return response.json(0, res)
     return response.json(0, res)
 
 
+@csrf_exempt
+def checkMaxVersionV2(request):
+    # QT检查ota设备软件版本是否需要更新
+    response = ResponseObject()
+    if request.method == "POST":
+        request_dict = request.POST
+    elif request.method == "GET":
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    deviceType = request_dict.get('deviceType', None)
+    version = request_dict.get('version', None)  # 设备版本:当前版本+设备规格代码
+    lang = request_dict.get('lang', None)  # 'zh-Hans','en'
+    uid = request_dict.get('uid','null')
+    serial_number = request_dict.get('serial_number','null')
+
+
+    token = request_dict.get('token',None)
+    token_object = TokenObject(token)
+    if token_object.code != 0:
+        return response.json(token_object.code)
+    user_id = token_object.userID
+
+    if not deviceType or not version:
+        return response.json(444, 'deviceType or version')
+    now_version = version[1:version.rindex('.')]  # 去掉V
+    code = version[version.rindex('.') + 1:]
+    equipmentVersion = Equipment_Version.objects.filter(mci=deviceType, code=code, lang=lang,
+                                                        status=1)  # order by data_joined
+    # 判断是否有该版本存在
+    if not equipmentVersion.exists():
+        return response.json(907)
 
 
+    filePath = equipmentVersion[0].filePath
+    softwareVersion = equipmentVersion[0].softwareVersion  # 可用最新版本的版本号
+    maxVersion = equipmentVersion[0].max_ver
+    if now_version >= softwareVersion:
+        # 当前版本大于等于最新版本,不需要更新
+        return response.json(902)
+    url = SERVER_DOMAIN + 'OTA/downloadsPack/' + filePath  # 复用app下载ota包的方式
+    res = {
+        'url': url,
+    }
+    # 记录设备OTA升级
+    createdTime = int(time.time())
+    DeviceOTAUpgradeRecord.objects.create(
+        equipment_package=equipmentVersion[0],
+        created_time=createdTime,
+        old_version=version,
+        new_version=equipmentVersion[0].version,
+        user_id=user_id,
+        serial_number=serial_number,
+        uid=uid,
+    )
+    print('执行成功%s' % DeviceOTAUpgradeRecord.id)
+    return response.json(0, res)

+ 17 - 0
Model/models.py

@@ -2042,3 +2042,20 @@ class CloudVodSurveysOperateLog(models.Model):
         verbose_name = '云存问卷调查—操作日志'
         verbose_name = '云存问卷调查—操作日志'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
         ordering = ('id',)
         ordering = ('id',)
+
+class DeviceOTAUpgradeRecord(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    equipment_package = models.ForeignKey(Equipment_Version, to_field='eid', default='', on_delete=models.CASCADE,
+                             verbose_name='关联设备OTA包ID')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+    old_version = models.CharField(max_length=22, blank=True, verbose_name='原版本号', default='')
+    new_version = models.CharField(max_length=22, blank=True, verbose_name='升级后版本号', default='')
+    user_id = models.CharField(max_length=32, blank=True, verbose_name='用户ID', default='')
+    serial_number = models.CharField(max_length=11, blank=True, verbose_name='序列号', default='')
+    uid = models.CharField(max_length=22, blank=True, verbose_name='设备UID', default='')
+
+    class Meta:
+        db_table = 'device_OTA_upgrade_record'
+        verbose_name = '设备OTA升级记录'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)