You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.1 KiB
123 lines
4.1 KiB
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
# project: 12月
|
|
# author: NinEveN
|
|
# date: 2021/12/23
|
|
from api.models import AppScreenShot, AppReleaseInfo, Apps
|
|
from common.cache.storage import AdPicShowCache, AppDownloadShortShowCache, RedisCacheBase, DownloadUrlCache, \
|
|
TokenManagerCache, CloudStorageCache, AppInstanceCache, AppDownloadTimesCache
|
|
|
|
|
|
def invalid_screen_pic_cache(key, app_obj):
|
|
for screen_shot_obj in AppScreenShot.objects.filter(app_id=app_obj).all():
|
|
DownloadUrlCache(key, screen_shot_obj.screenshot_url).del_storage_cache()
|
|
|
|
|
|
def invalid_ad_pic_cache(key, short):
|
|
ad_pic_short_cache = AdPicShowCache(key, short)
|
|
ad_pic_cache_key = ad_pic_short_cache.get_storage_cache()
|
|
if ad_pic_cache_key:
|
|
DownloadUrlCache(key, ad_pic_cache_key).del_storage_cache()
|
|
ad_pic_short_cache.del_storage_cache()
|
|
|
|
|
|
def invalid_short_response_cache(key, short):
|
|
short_storage = AppDownloadShortShowCache(key, short)
|
|
response_cache_key_list = short_storage.get_storage_cache()
|
|
if response_cache_key_list and isinstance(response_cache_key_list, list):
|
|
for response_cache_key in response_cache_key_list:
|
|
RedisCacheBase(response_cache_key).del_storage_cache()
|
|
short_storage.del_storage_cache()
|
|
|
|
|
|
def invalid_short_cache(app_obj, key='ShortDownloadView'.lower()):
|
|
"""
|
|
失效下载页生成的缓存数据
|
|
:param key:
|
|
:param app_obj:
|
|
:return:
|
|
缓存key: 'ShortDownloadView'.lower()
|
|
1.清理图片缓存
|
|
2.清理下载token缓存
|
|
3.清理广告缓存
|
|
4.清理应用截图缓存
|
|
5.清理下载token缓存[无需清理]
|
|
6.清理response 响应缓存
|
|
7.清理生成下载实例缓存
|
|
# 8.如果有关联应用,还需要清理关联应用的图片缓存和下载token缓存
|
|
"""
|
|
if not app_obj:
|
|
return
|
|
master_release_dict = AppReleaseInfo.objects.filter(app_id=app_obj, is_master=True).values('icon_url', 'release_id',
|
|
'release_type').first()
|
|
if master_release_dict:
|
|
# 1.清理图片缓存
|
|
DownloadUrlCache(key, master_release_dict.get('icon_url')).del_storage_cache()
|
|
|
|
release_id = master_release_dict.get('release_id')
|
|
release_type = master_release_dict.get('release_type')
|
|
# 2.清理下载token缓存
|
|
TokenManagerCache(key, release_id).del_storage_cache()
|
|
TokenManagerCache(key, f'{release_id}.{"apk" if release_type == 0 else "ipa"}').del_storage_cache()
|
|
DownloadUrlCache(key, f'{release_id}.{"apk" if release_type == 0 else "ipa"}').del_storage_cache()
|
|
TokenManagerCache('', f"{release_id}.plist").del_storage_cache()
|
|
DownloadUrlCache('', f"{release_id}.plist").del_storage_cache()
|
|
|
|
# 3.清理广告缓存
|
|
invalid_ad_pic_cache(key, app_obj.short)
|
|
|
|
# 4.清理应用截图缓存
|
|
invalid_screen_pic_cache(key, app_obj)
|
|
|
|
# 6.清理response 响应缓存
|
|
invalid_short_response_cache(key, app_obj.short)
|
|
|
|
# 7.清理生成下载实例缓存
|
|
AppInstanceCache(app_obj.app_id).del_storage_cache()
|
|
|
|
|
|
def invalid_app_cache(app_obj):
|
|
"""
|
|
删除app的时候,需要执行清理操作
|
|
:param app_obj:
|
|
:return:
|
|
"""
|
|
invalid_short_cache(app_obj, '')
|
|
invalid_short_cache(app_obj, 'ShortDownloadView'.lower())
|
|
|
|
|
|
def invalid_head_img_cache(user_obj):
|
|
"""
|
|
:param user_obj:
|
|
:return:
|
|
"""
|
|
DownloadUrlCache('', user_obj.head_img).del_storage_cache()
|
|
|
|
|
|
def invalid_user_storage_cache(user_obj, storage_auth):
|
|
"""
|
|
|
|
:param user_obj:
|
|
:param storage_auth:
|
|
:return:
|
|
"""
|
|
CloudStorageCache(storage_auth, user_obj.uid).del_storage_cache()
|
|
|
|
for app_obj in Apps.objects.filter(user_id=user_obj).all():
|
|
invalid_app_cache(app_obj)
|
|
|
|
invalid_head_img_cache(user_obj)
|
|
|
|
|
|
def invalid_app_download_times_cache(app_id):
|
|
"""
|
|
删除应用的时候,需要清理一下下载次数缓存
|
|
:param app_id:
|
|
:return:
|
|
"""
|
|
AppDownloadTimesCache(app_id).del_storage_cache()
|
|
AppInstanceCache(app_id).del_storage_cache()
|
|
|
|
|
|
def invalid_app_download_plist_cache(release_id):
|
|
TokenManagerCache('', release_id).del_storage_cache()
|
|
|