add api download_api

Brightcells 9 ans auparavant
Parent
Commettre
535ac34ee1
6 fichiers modifiés avec 58 ajouts et 6 suppressions
  1. 1 0
      api/urls.py
  2. 4 0
      operation/admin.py
  3. 17 6
      operation/views.py
  4. 4 0
      pai2/settings.py
  5. 29 0
      utils/redis/rapp.py
  6. 3 0
      utils/redis/rkeys.py

+ 1 - 0
api/urls.py

@@ -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
 # 支付相关

+ 4 - 0
operation/admin.py

@@ -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')

+ 17 - 6
operation/views.py

@@ -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', ''))

+ 4 - 0
pai2/settings.py

@@ -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
 

+ 29 - 0
utils/redis/rapp.py

@@ -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()

+ 3 - 0
utils/redis/rkeys.py

@@ -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 信息