拍爱

views.py 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from django.conf import settings
  4. from django.shortcuts import redirect
  5. from logit import logit
  6. from account.models import UserInfo
  7. from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo
  8. from utils.error.errno_utils import UserStatusCode
  9. from utils.error.response_utils import response
  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.REQUEST.get('platform', '')
  40. version = request.REQUEST.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.REQUEST.get('platform', '')
  50. channel = request.REQUEST.get('channel', '')
  51. version = request.REQUEST.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. })