|
|
|
@ -9,7 +9,7 @@ from api.models import Apps, UserInfo, AppReleaseInfo, AppUDID, APPToDeveloper, |
|
|
|
|
import time, os |
|
|
|
|
from django.utils import timezone |
|
|
|
|
from fir_ser.settings import CACHE_KEY_TEMPLATE, SERVER_DOMAIN, SYNC_CACHE_TO_DATABASE, DEFAULT_MOBILEPROVISION, \ |
|
|
|
|
USER_FREE_DOWNLOAD_TIMES |
|
|
|
|
USER_FREE_DOWNLOAD_TIMES, AUTH_USER_FREE_DOWNLOAD_TIMES |
|
|
|
|
from api.utils.storage.storage import Storage, LocalStorage |
|
|
|
|
from api.utils.utils import file_format_path |
|
|
|
|
import logging |
|
|
|
@ -95,12 +95,14 @@ def get_download_url_by_cache(app_obj, filename, limit, isdownload=True, key='', |
|
|
|
|
|
|
|
|
|
def get_app_instance_by_cache(app_id, password, limit, udid): |
|
|
|
|
if udid: |
|
|
|
|
return Apps.objects.filter(app_id=app_id).values("pk", 'user_id', 'type', 'password', 'issupersign').first() |
|
|
|
|
return Apps.objects.filter(app_id=app_id).values("pk", 'user_id', 'type', 'password', 'issupersign', |
|
|
|
|
'user_id__certification__status').first() |
|
|
|
|
app_key = "_".join([CACHE_KEY_TEMPLATE.get("app_instance_key"), app_id]) |
|
|
|
|
app_obj_cache = cache.get(app_key) |
|
|
|
|
if not app_obj_cache: |
|
|
|
|
app_obj_cache = Apps.objects.filter(app_id=app_id).values("pk", 'user_id', 'type', 'password', |
|
|
|
|
'issupersign').first() |
|
|
|
|
'issupersign', |
|
|
|
|
'user_id__certification__status').first() |
|
|
|
|
cache.set(app_key, app_obj_cache, limit) |
|
|
|
|
|
|
|
|
|
app_password = app_obj_cache.get("password") |
|
|
|
@ -314,7 +316,10 @@ def set_user_download_times_flag(user_id, act): |
|
|
|
|
return cache.set(user_can_download_key, act, 3600 * 24) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_free_download_times(user_id, act='get', amount=1): |
|
|
|
|
def get_user_free_download_times(user_id, act='get', amount=1, auth_status=False): |
|
|
|
|
free_download_times = USER_FREE_DOWNLOAD_TIMES |
|
|
|
|
if auth_status: |
|
|
|
|
free_download_times = AUTH_USER_FREE_DOWNLOAD_TIMES |
|
|
|
|
now = timezone.now() |
|
|
|
|
user_free_download_times_key = "_".join( |
|
|
|
|
[CACHE_KEY_TEMPLATE.get("user_free_download_times_key"), str(now.year), str(now.month), str(now.day), |
|
|
|
@ -326,17 +331,17 @@ def get_user_free_download_times(user_id, act='get', amount=1): |
|
|
|
|
else: |
|
|
|
|
return user_free_download_times |
|
|
|
|
else: |
|
|
|
|
cache.set(user_free_download_times_key, USER_FREE_DOWNLOAD_TIMES, 3600 * 24) |
|
|
|
|
cache.set(user_free_download_times_key, free_download_times, 3600 * 24) |
|
|
|
|
if act == 'set': |
|
|
|
|
return cache.incr(user_free_download_times_key, -amount) |
|
|
|
|
else: |
|
|
|
|
return USER_FREE_DOWNLOAD_TIMES |
|
|
|
|
return free_download_times |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def consume_user_download_times(user_id, app_id, amount=1): |
|
|
|
|
def consume_user_download_times(user_id, app_id, amount=1, auth_status=False): |
|
|
|
|
with cache.lock("%s_%s" % ('consume_user_download_times', user_id)): |
|
|
|
|
if get_user_free_download_times(user_id, 'get', amount) > 0: |
|
|
|
|
get_user_free_download_times(user_id, 'set', amount) |
|
|
|
|
if get_user_free_download_times(user_id, 'get', amount, auth_status) > 0: |
|
|
|
|
get_user_free_download_times(user_id, 'set', amount, auth_status) |
|
|
|
|
else: |
|
|
|
|
if not check_user_can_download(user_id): |
|
|
|
|
return False |
|
|
|
@ -350,18 +355,34 @@ def consume_user_download_times(user_id, app_id, amount=1): |
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def add_user_download_times(user_id, download_times=0): |
|
|
|
|
with cache.lock("%s_%s" % ('consume_user_download_times', user_id)): |
|
|
|
|
try: |
|
|
|
|
UserInfo.objects.filter(pk=user_id).update(download_times=F('download_times') + download_times) |
|
|
|
|
def enable_user_download(user_id): |
|
|
|
|
enable_user_download_times_flag(user_id) |
|
|
|
|
for app_obj in Apps.objects.filter(pk=user_id): |
|
|
|
|
del_cache_response_by_short(app_obj.app_id) |
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def add_user_download_times(user_id, download_times=0): |
|
|
|
|
with cache.lock("%s_%s" % ('consume_user_download_times', user_id)): |
|
|
|
|
try: |
|
|
|
|
UserInfo.objects.filter(pk=user_id).update(download_times=F('download_times') + download_times) |
|
|
|
|
return enable_user_download(user_id) |
|
|
|
|
except Exception as e: |
|
|
|
|
logger.error("%s download_times less then 0. Exception:%s" % (user_id, e)) |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def check_user_has_all_download_times(user_id): |
|
|
|
|
return get_user_free_download_times(user_id) > 0 or check_user_can_download(user_id) |
|
|
|
|
def check_user_has_all_download_times(app_obj): |
|
|
|
|
user_id = app_obj.user_id_id |
|
|
|
|
auth_status = app_obj.user_id__certification__status |
|
|
|
|
return get_user_free_download_times(user_id, auth_status=auth_status) > 0 or check_user_can_download(user_id) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def user_auth_success(user_id): |
|
|
|
|
''' |
|
|
|
|
认证成功,需要调用该方法增加次数 |
|
|
|
|
:param user_id: |
|
|
|
|
:return: |
|
|
|
|
''' |
|
|
|
|
get_user_free_download_times(user_id, 'set', USER_FREE_DOWNLOAD_TIMES - AUTH_USER_FREE_DOWNLOAD_TIMES) |
|
|
|
|
return enable_user_download(user_id) |
|
|
|
|