Pārlūkot izejas kodu

4G带云存字段

zhangdongming 2 nedēļas atpakaļ
vecāks
revīzija
5d12c91067

+ 38 - 0
Controller/UserDevice/DeviceVersionInfoController.py

@@ -61,6 +61,10 @@ class DeviceVersionInfoView(View):
             return self.validateUserDevice(userID, request, request_dict, response)
         elif operation == 'clearDeviceVersionCache':
             return self.clear_device_version_cache(userID, request, request_dict, response)
+        elif operation == 'getDeviceVersion':
+            d_code = request_dict.get('d_code')
+            ver = request_dict.get('ver')
+            return self.cache_device_version_info(d_code, ver)
         else:
             return response.json(414)
     @classmethod
@@ -154,6 +158,40 @@ class DeviceVersionInfoView(View):
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
+    @classmethod
+    def cache_device_version_info(cls, d_code, ver):
+        """
+        缓存设备版本信息
+        :param d_code: 设备规格码(软件方案)
+        :param ver: 设备版本号
+        :return: 设备版本信息字典或 None
+        """
+        redis = RedisObject()
+        version_key = f"{RedisKeyConstant.ZOSI_DEVICE_VERSION_INFO.value}{ver}{d_code}"
+
+        try:
+            version_info = redis.get_data(version_key)
+            if version_info:
+                return json.loads(version_info)
+        except Exception as e:
+            LOGGER.error(f"Redis get failed for key {version_key}: {e}")
+            return None
+
+        device_info = DeviceVersionInfo.objects.filter(
+            d_code=d_code, software_ver=ver
+        ).values().first()
+
+        if not device_info:
+            return None
+
+        try:
+            redis.set_data(version_key, json.dumps(device_info), 60 * 60 * 24)
+        except Exception as e:
+            LOGGER.error(f"Redis set failed for key {version_key}: {e}")
+            return None
+
+        return device_info
+
     @classmethod
     def validateUserDevice(cls, user_id, request, request_dict, response):
         """

+ 1 - 0
Model/models.py

@@ -5399,6 +5399,7 @@ class DeviceVersionInfo(models.Model):
     other_features = models.JSONField(null=True, verbose_name='其它功能')
     electricity_statistics = models.IntegerField(default=0, verbose_name='电量显示')
     supports_pet_tracking = models.SmallIntegerField(default=0, verbose_name='是否支持宠物追踪')
+    has_4g_cloud = models.SmallIntegerField(default=-1, verbose_name='-1:未配置,0:是4G但没云存,1:4G带云存')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')