拍爱

views.py 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from django.conf import settings
  4. from django.shortcuts import redirect
  5. from django_logit import logit
  6. from django_response import response
  7. from account.models import UserInfo
  8. from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo
  9. from utils.error.errno_utils import UserStatusCode
  10. from utils.redis.rapp import get_latest_app
  11. from utils.redis.rguest import get_guest_entrance_control
  12. from utils.redis.roperation.rbox_program_version import get_box_program_version
  13. from utils.redis.rpatch import get_app_patch_info
  14. from utils.redis.rsettings import get_app_settings_info
  15. from utils.version_utils import is_version_match
  16. @logit
  17. def upgrade_api(request):
  18. """ APP 升级 """
  19. src = int(request.POST.get('src', 0))
  20. latest_app = get_latest_app(src)
  21. if request.iOS:
  22. appinfo = {
  23. 'latest_version_code': latest_app.get('latest_ios_version_code', ''),
  24. 'latest_version_name': latest_app.get('latest_ios_version_name', ''),
  25. 'latest_url': latest_app.get('latest_ios_url', ''),
  26. }
  27. else:
  28. appinfo = {
  29. 'latest_version_code': latest_app.get('latest_adr_version_code', ''),
  30. 'latest_version_name': latest_app.get('latest_adr_version_name', ''),
  31. 'latest_url': latest_app.get('latest_adr_url', ''),
  32. }
  33. return response(200, 'Get Latest App Success', u'获取最新版信息成功', {
  34. 'appinfo': appinfo,
  35. })
  36. @logit
  37. def patch_api(request):
  38. """ APP 补丁 """
  39. platform = request.GET.get('platform', '') or request.POST.get('platform', '')
  40. version = request.GET.get('version', '') or request.POST.get('version', '')
  41. src = int(request.POST.get('src', 0))
  42. patch_info = get_app_patch_info(platform, version, src)
  43. return response(200, 'Get Patch Info Success', u'获取补丁信息成功', {
  44. 'patch_url': patch_info.get('patch_url', ''),
  45. })
  46. @logit
  47. def online_api(request):
  48. """ 是否上线 """
  49. platform = request.GET.get('platform', '') or request.POST.get('platform', '')
  50. channel = request.GET.get('channel', '') or request.POST.get('channel', '')
  51. version = request.GET.get('version', '') or request.POST.get('version', '')
  52. app_settings = get_app_settings_info(platform, channel, version)
  53. return response(200, 'Get Online Status Success', u'获取是否上线成功', {
  54. 'online': app_settings.get('online', True),
  55. })
  56. @logit
  57. def guest_api(request):
  58. """ 游客状态 """
  59. src = int(request.POST.get('src', 0))
  60. gen = get_guest_entrance_control(src)
  61. # 是否配置游客入口控制信息
  62. if not gen:
  63. return response(UserStatusCode.GUEST_NOT_ALLOWED)
  64. # 平台校验
  65. platform = gen.get('platform', '')
  66. if request.Android:
  67. if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]:
  68. return response(UserStatusCode.GUEST_NOT_ALLOWED)
  69. else:
  70. if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]:
  71. return response(UserStatusCode.GUEST_NOT_ALLOWED)
  72. # 版本校验
  73. if not is_version_match(request, gen):
  74. return response(UserStatusCode.GUEST_NOT_ALLOWED)
  75. return response(200, 'Guest Login Allowed', u'游客登录开启')
  76. @logit
  77. def splash_api(request):
  78. """ 启动页面 """
  79. src = int(request.POST.get('src', 0))
  80. splashes = SplashInfo.objects.filter(src=src, status=True)
  81. splashes = [splash.data for splash in splashes]
  82. return response(200, 'Get Splash Success', u'获取最新版信息成功', {
  83. 'splashes': splashes,
  84. })
  85. @logit
  86. def feedback_api(request):
  87. """ 用户反馈 """
  88. user_id = request.POST.get('user_id', '')
  89. feedback = request.POST.get('feedback', '')
  90. src = int(request.POST.get('src', 0))
  91. if not UserInfo.objects.filter(user_id=user_id, status=True).exists():
  92. return response(UserStatusCode.USER_NOT_FOUND)
  93. FeedbackInfo.objects.create(
  94. user_id=user_id,
  95. feedback=feedback,
  96. src=src,
  97. )
  98. return response(200, 'Feedback Success', u'反馈成功')
  99. def download_api(request):
  100. """ 下载接口 """
  101. src = int(request.GET.get('src', 0))
  102. if request.weixin:
  103. if src == LatestAppInfo.PAIAI_USER:
  104. wx_url = settings.PAI2_USER_DOWNLOAD_WX_URL
  105. elif src == LatestAppInfo.PAIAI_LENSMAN:
  106. wx_url = settings.PAI2_LENSMAN_DOWNLOAD_WX_URL
  107. elif src == LatestAppInfo.PAIAI_TOURGUIDE:
  108. wx_url = settings.PAI2_TOURGUIDE_DOWNLOAD_WX_URL
  109. return redirect(wx_url)
  110. if request.iOS:
  111. if src == LatestAppInfo.PAIAI_USER:
  112. ios_url = settings.PAI2_USER_DOWNLOAD_IOS_URL
  113. elif src == LatestAppInfo.PAIAI_LENSMAN:
  114. ios_url = settings.PAI2_LENSMAN_DOWNLOAD_IOS_URL
  115. elif src == LatestAppInfo.PAIAI_TOURGUIDE:
  116. ios_url = settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_URL
  117. return redirect(ios_url)
  118. return redirect(get_latest_app(src).get('latest_adr_url', ''))
  119. def kvformat(bpversion, k):
  120. v = bpversion.get(k, '')
  121. return '"{}":{}'.format(k, v) if isinstance(v, int) else '"{}":"{}"'.format(k, v)
  122. def box_program_version_api(request):
  123. """ BOX 程序版本信息 """
  124. bpversion = get_box_program_version()
  125. keys = ['srv_version_code', 'srv_version_name', 'srv_sha1', 'proc_version_code', 'proc_version_name', 'proc_sha1']
  126. kvs = [kvformat(bpversion, k) for k in keys]
  127. bpversion_str = os.linesep.join(kvs)
  128. return response(200, 'Get Box Program Version Success', u'获取盒子程序版本成功', {
  129. 'bpversion': bpversion,
  130. 'bpversion_str': bpversion_str,
  131. })