|
@@ -56,8 +56,50 @@ class DeviceVersionInfoView(View):
|
|
|
return self.get_device_version_info(userID, request, request_dict, response)
|
|
|
elif operation == 'validateUserDevice':
|
|
|
return self.validateUserDevice(userID, request, request_dict, response)
|
|
|
+ elif operation == 'clearDeviceVersionCache':
|
|
|
+ return self.clear_device_version_cache(userID, request, request_dict, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
+ @classmethod
|
|
|
+ def clear_device_version_cache(cls, user_id, request, request_dict, response):
|
|
|
+ """
|
|
|
+ 清除设备版本缓存
|
|
|
+ @param user_id: 用户ID
|
|
|
+ @param request: 请求对象
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: 响应结果
|
|
|
+ """
|
|
|
+ d_code = request_dict.get('d_code', None)
|
|
|
+ timestamp = request_dict.get('timestamp', None)
|
|
|
+
|
|
|
+ if not d_code and not timestamp:
|
|
|
+ return response.json(444) # 错误代码:缺少必要参数
|
|
|
+
|
|
|
+ try:
|
|
|
+ LOGGER.info(f'清除缓存 user: {user_id}, d_code: {d_code}, timestamp: {timestamp}')
|
|
|
+ redis = RedisObject()
|
|
|
+ if d_code:
|
|
|
+ # 清除指定d_code的所有版本缓存
|
|
|
+ pattern = RedisKeyConstant.ZOSI_DEVICE_VERSION_INFO.value + '*' + d_code
|
|
|
+ matched_keys = redis.get_keys(pattern) # 将结果赋值给 matched_keys
|
|
|
+ if matched_keys:
|
|
|
+ for key in matched_keys: # 使用正确的变量名
|
|
|
+ redis.del_data(key)
|
|
|
+
|
|
|
+ if timestamp:
|
|
|
+ # 清除创建时间早于指定时间戳的缓存
|
|
|
+ devices = DeviceVersionInfo.objects.filter(created_time__lt=timestamp).values('d_code', 'software_ver')
|
|
|
+ for device in devices:
|
|
|
+ key = RedisKeyConstant.ZOSI_DEVICE_VERSION_INFO.value + device['software_ver'] + device['d_code']
|
|
|
+ redis.del_data(key)
|
|
|
+
|
|
|
+ return response.json(0, "缓存清除成功")
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ error_line = e.__traceback__.tb_lineno
|
|
|
+ LOGGER.error(f'清除缓存失败 user:{user_id}, error_line:{error_line}, error_msg:{repr(e)}')
|
|
|
+ return response.json(500, f'error_line:{error_line}, error_msg:{repr(e)}')
|
|
|
|
|
|
@classmethod
|
|
|
def get_device_version_info(cls, user_id, request, request_dict, response):
|