@@ -78,6 +78,7 @@ urlpatterns += [  | 
            ||
| 78 | 78 | 
                url(r'^op/upgrade$', op_views.upgrade_api, name='upgrade_api'), # APP 升级  | 
            
| 79 | 79 | 
                url(r'^op/splash$', op_views.splash_api, name='splash_api'), # 启动页面  | 
            
| 80 | 80 | 
                url(r'^op/feedback$', op_views.feedback_api, name='feedback_api'), # 用户反馈  | 
            
| 81 | 
                + url(r'^op/downlaod$', op_views.download_api, name='download_api'), # 下载接口  | 
            |
| 81 | 82 | 
                ]  | 
            
| 82 | 83 | 
                 | 
            
| 83 | 84 | 
                # 支付相关  | 
            
                @@ -6,6 +6,7 @@ from django.template.loader import render_to_string  | 
            ||
| 6 | 6 | 
                 | 
            
| 7 | 7 | 
                from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo  | 
            
| 8 | 8 | 
                from utils.disk_utils import write_to_disk  | 
            
| 9 | 
                +from utils.redis.rapp import set_latest_app  | 
            |
| 9 | 10 | 
                from utils.redis.rversion import delete_guest_entrance_control, set_guest_entrance_control  | 
            
| 10 | 11 | 
                 | 
            
| 11 | 12 | 
                 | 
            
                @@ -20,6 +21,9 @@ class LatestAppInfoAdmin(admin.ModelAdmin):  | 
            ||
| 20 | 21 | 
                'version': obj.latest_version,  | 
            
| 21 | 22 | 
                }), settings.DOWNLOAD_PAGE_PATH)  | 
            
| 22 | 23 | 
                 | 
            
| 24 | 
                + # 设置最新 APP 信息  | 
            |
| 25 | 
                + set_latest_app()  | 
            |
| 26 | 
                +  | 
            |
| 23 | 27 | 
                 | 
            
| 24 | 28 | 
                class SplashInfoAdmin(admin.ModelAdmin):  | 
            
| 25 | 29 | 
                     list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'status', 'created_at', 'updated_at')
               | 
            
                @@ -1,11 +1,14 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                +from django.conf import settings  | 
            |
| 3 | 4 | 
                from django.http import JsonResponse  | 
            
| 5 | 
                +from django.shortcuts import redirect  | 
            |
| 4 | 6 | 
                 | 
            
| 5 | 7 | 
                from account.models import UserInfo  | 
            
| 6 | 8 | 
                from operation.models import FeedbackInfo, LatestAppInfo, SplashInfo  | 
            
| 7 | 9 | 
                from utils.error.errno_utils import UserStatusCode  | 
            
| 8 | 10 | 
                from utils.error.response_utils import response  | 
            
| 11 | 
                +from utils.redis.rapp import get_latest_app  | 
            |
| 9 | 12 | 
                 | 
            
| 10 | 13 | 
                 | 
            
| 11 | 14 | 
                def upgrade_api(request):  | 
            
                @@ -14,16 +17,11 @@ def upgrade_api(request):  | 
            ||
| 14 | 17 | 
                :param request:  | 
            
| 15 | 18 | 
                :return:  | 
            
| 16 | 19 | 
                """  | 
            
| 17 | 
                - try:  | 
            |
| 18 | 
                - appinfo = LatestAppInfo.objects.all()[0].data  | 
            |
| 19 | 
                - except IndexError:  | 
            |
| 20 | 
                -        appinfo = {}
               | 
            |
| 21 | 
                -  | 
            |
| 22 | 20 | 
                     return JsonResponse({
               | 
            
| 23 | 21 | 
                'status': 200,  | 
            
| 24 | 22 | 
                'message': u'获取最新版信息成功',  | 
            
| 25 | 23 | 
                         'data': {
               | 
            
| 26 | 
                - 'appinfo': appinfo,  | 
            |
| 24 | 
                + 'appinfo': get_latest_app(),  | 
            |
| 27 | 25 | 
                },  | 
            
| 28 | 26 | 
                })  | 
            
| 29 | 27 | 
                 | 
            
                @@ -69,3 +67,16 @@ def feedback_api(request):  | 
            ||
| 69 | 67 | 
                         'data': {
               | 
            
| 70 | 68 | 
                },  | 
            
| 71 | 69 | 
                })  | 
            
| 70 | 
                +  | 
            |
| 71 | 
                +  | 
            |
| 72 | 
                +def download_api(request):  | 
            |
| 73 | 
                + """  | 
            |
| 74 | 
                + 下载接口  | 
            |
| 75 | 
                + :param request:  | 
            |
| 76 | 
                + :return:  | 
            |
| 77 | 
                + """  | 
            |
| 78 | 
                + if request.weixin:  | 
            |
| 79 | 
                + return redirect(settings.DOWNLOAD_WX_URL)  | 
            |
| 80 | 
                + if request.iOS:  | 
            |
| 81 | 
                + return redirect(settings.DOWNLOAD_IOS_URL)  | 
            |
| 82 | 
                +    return redirect(get_latest_app().get('latest_url', ''))
               | 
            
                @@ -271,6 +271,10 @@ PAI2_HOME_MAX_ROWS = 400 # 首页照片最大数量, PAI2_HOME_PER_PAGE * PAI2_  | 
            ||
| 271 | 271 | 
                 DOWNLOAD_TMPL_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.tmpl.html').replace('\\', '/')
               | 
            
| 272 | 272 | 
                 DOWNLOAD_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.html').replace('\\', '/')
               | 
            
| 273 | 273 | 
                 | 
            
| 274 | 
                +# 下载设置  | 
            |
| 275 | 
                +DOWNLOAD_WX_URL = ''  | 
            |
| 276 | 
                +DOWNLOAD_IOS_URL = ''  | 
            |
| 277 | 
                +  | 
            |
| 274 | 278 | 
                # 群组设置  | 
            
| 275 | 279 | 
                GROUP_PER_PAGE = 20 # 群组每页数量  | 
            
| 276 | 280 | 
                 | 
            
                @@ -0,0 +1,29 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +import json  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.conf import settings  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +from operation.models import LatestAppInfo  | 
            |
| 8 | 
                +from utils.redis.rkeys import LATEST_APP_INFO  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                +r = settings.REDIS_CACHE  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                +# 最新 APP 相关  | 
            |
| 15 | 
                +  | 
            |
| 16 | 
                +  | 
            |
| 17 | 
                +def set_latest_app():  | 
            |
| 18 | 
                + """ 设置最新 APP 信息 """  | 
            |
| 19 | 
                + try:  | 
            |
| 20 | 
                + appinfo = LatestAppInfo.objects.all()[0].data  | 
            |
| 21 | 
                + except IndexError:  | 
            |
| 22 | 
                +        appinfo = {}
               | 
            |
| 23 | 
                + r.set(LATEST_APP_INFO, json.dumps(appinfo))  | 
            |
| 24 | 
                + return appinfo  | 
            |
| 25 | 
                +  | 
            |
| 26 | 
                +  | 
            |
| 27 | 
                +def get_latest_app():  | 
            |
| 28 | 
                + """ 获取最新 APP 信息 """  | 
            |
| 29 | 
                +    return json.loads(r.get(LATEST_APP_INFO) or '{}') or set_latest_app()
               | 
            
                @@ -30,3 +30,6 @@ SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系  | 
            ||
| 30 | 30 | 
                 | 
            
| 31 | 31 | 
                # 游客入口相关  | 
            
| 32 | 32 | 
                GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info' # STRING,游客入口控制信息  | 
            
| 33 | 
                +  | 
            |
| 34 | 
                +# APP 相关  | 
            |
| 35 | 
                +LATEST_APP_INFO = 'latest:app:info' # STRING,最新 APP 信息  |