|
@@ -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):
|
|
|
"""
|