AppSetController.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2020/2/27 9:38
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AppSetController.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from Ansjer.config import SERVER_TYPE
  15. from Model.models import AppSetModel, PromotionRuleModel, PopupsConfig, RedDotsConfig
  16. from django.views.generic.base import View
  17. from Object.RedisObject import RedisObject
  18. from Object.TokenObject import TokenObject
  19. from Service.ModelService import ModelService
  20. import time, json
  21. from Object.ResponseObject import ResponseObject
  22. class AppSetView(View):
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. operation = kwargs.get('operation', None)
  26. return self.validation(request.GET, operation)
  27. def post(self, request, *args, **kwargs):
  28. request.encoding = 'utf-8'
  29. operation = kwargs.get('operation', None)
  30. return self.validation(request.POST, operation)
  31. def validation(self, request_dict, operation):
  32. response = ResponseObject()
  33. if operation == 'query':
  34. return self.do_query(request_dict, response)
  35. if operation == 'admin_query':
  36. token = request_dict.get('token', None)
  37. tko = TokenObject(token)
  38. if tko.code == 0:
  39. userID = tko.userID
  40. return self.do_admin_query(userID, request_dict, response)
  41. else:
  42. return response.json(tko.code)
  43. elif operation == 'admin_update':
  44. token = request_dict.get('token', None)
  45. tko = TokenObject(token)
  46. if tko.code == 0:
  47. userID = tko.userID
  48. return self.do_admin_update(userID, request_dict, response)
  49. else:
  50. return response.json(tko.code)
  51. else:
  52. token = request_dict.get('token', None)
  53. tko = TokenObject(token)
  54. if tko.code == 0:
  55. userID = tko.userID
  56. if operation == 'page_set': # app弹窗标记红点设置
  57. return self.do_page_set(userID, request_dict, response)
  58. else:
  59. return response.json(tko.code)
  60. # 查询
  61. def do_query(self, request_dict, response):
  62. lang = request_dict.get('lang', None)
  63. appBundleId = request_dict.get('appBundleId', None)
  64. if not appBundleId:
  65. return response.json(444, 'appBundleId')
  66. app_set_qs = AppSetModel.objects.filter(appBundleId=appBundleId).values('content')
  67. if not app_set_qs.exists():
  68. return response.json(173)
  69. try:
  70. if not app_set_qs[0]['content']:
  71. return response.json(0)
  72. dict_json = json.loads(app_set_qs[0]['content'])
  73. # 加入促销弹窗
  74. promotion = PromotionRuleModel.objects.filter(status=1).values('startTime', 'endTime', 'popups')
  75. if promotion.exists():
  76. dict_json['popupsStartTime'] = promotion[0]['startTime']
  77. dict_json['popupsEndTime'] = promotion[0]['endTime']
  78. dict_json['popupsContent'] = json.loads(promotion[0]['popups']).get(lang, '')
  79. dict_json['nowTime'] = int(time.time())
  80. if 'editionUpgrading' in dict_json:
  81. if dict_json['editionUpgrading'] == 1:
  82. if lang == 'cn':
  83. dict_json['editionUpgrading'] = '正在升级,请稍后登录'
  84. else:
  85. dict_json['editionUpgrading'] = 'Upgrading, please sign in later'
  86. else:
  87. dict_json['editionUpgrading'] = ''
  88. return response.json(0, dict_json)
  89. except Exception as e:
  90. return response.json(500, "错误行数:{errLine}, 错误信息: {errmsg}".format(errLine=e.__traceback__.tb_lineno,
  91. errmsg=repr(e)))
  92. # res = {}
  93. # res['grade'] = 1
  94. # # # 用户帮助
  95. # res['usingHelp'] = 0
  96. # # # AP添加方式
  97. # res['apAdd'] = 1
  98. # # # AP工具
  99. # res['apTool'] = 1
  100. # # # 广告模块
  101. # res['ad_module'] = {
  102. # "time": 0,
  103. # "ad_path": [
  104. # "https://test.dvema.com/web/static/image/default_ad1",
  105. # "https://test.dvema.com/web/static/image/default_ad2",
  106. # "https://test.dvema.com/web/static/image/default_ad3",
  107. # ]
  108. # }
  109. # res['init_img'] = 'https://test.dvema.com/web/static/image/default_start'
  110. # return response.json(0, res)
  111. def do_admin_query(self, userID, request_dict, response):
  112. # 查询和添加权限
  113. own_perm = ModelService.check_perm(userID, 40)
  114. if not own_perm:
  115. return response.json(404)
  116. appBundleId = request_dict.get('appBundleId', None)
  117. sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId)
  118. count = sm_qs.count()
  119. nowTime = int(time.time())
  120. if count > 0:
  121. sm_qs = sm_qs.values('id', 'appBundleId', 'content', 'addTime', 'updTime')
  122. return response.json(0, {'data': list(sm_qs), 'count': count})
  123. else:
  124. AppSetModel.objects.create(
  125. appBundleId=appBundleId,
  126. addTime=nowTime,
  127. updTime=nowTime
  128. )
  129. return response.json(0)
  130. def do_admin_update(self, userID, request_dict, response):
  131. # 修改的权限
  132. own_perm = ModelService.check_perm(userID, 50)
  133. if not own_perm:
  134. return response.json(404)
  135. appBundleId = request_dict.get('appBundleId', None)
  136. content = request_dict.get('content', None)
  137. nowTime = int(time.time())
  138. sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId)
  139. redis = RedisObject()
  140. if SERVER_TYPE != "Ansjer.formal_settings":
  141. key_id = "www" + appBundleId
  142. else:
  143. key_id = "test" + appBundleId
  144. redis.del_data(key=key_id)
  145. if sm_qs.exists():
  146. sm_qs.update(content=content, updTime=nowTime)
  147. return response.json(0)
  148. else:
  149. return response.json(173)
  150. def do_page_set(self, userID, request_dict, response):
  151. lang = request_dict.get('lang', 'en')
  152. dict_json = {}
  153. now_time = int(time.time())
  154. dict_json['popups'] = {
  155. 'title': '',
  156. 'content': '',
  157. 'status': 0,
  158. 'tag': 1,
  159. }
  160. #弹窗
  161. popups_obj = PopupsConfig.objects.filter(lang=lang).values('title','content','start_time','end_time','tag')
  162. if popups_obj.exists:
  163. popups_status = 0
  164. if now_time >= popups_obj[0]['start_time'] and now_time <= popups_obj[0]['end_time']:
  165. popups_status = 1
  166. dict_json['popups'] = {
  167. 'title': popups_obj[0]['title'],
  168. 'content': popups_obj[0]['content'],
  169. 'status': popups_status,
  170. 'tag': popups_obj[0]['tag'],
  171. }
  172. #红点标记
  173. dict_json['red_dots'] = []
  174. red_dots_obj = RedDotsConfig.objects.values('module','start_time','end_time')
  175. for red_dots in red_dots_obj:
  176. red_dots_status = 0
  177. if now_time >= red_dots['start_time'] and now_time <= red_dots['end_time']:
  178. red_dots_status = 1
  179. dict_json['red_dots'].append({
  180. 'module': red_dots['module'],
  181. 'status': red_dots_status,
  182. })
  183. dict_json['red_dots'] = list(dict_json['red_dots'])
  184. return response.json(0, dict_json)