AppSetController.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import time
  2. import json
  3. from Ansjer.config import SERVER_TYPE
  4. from Model.models import AppSetModel, PromotionRuleModel, PopupsConfig, RedDotsConfig
  5. from django.views.generic.base import View
  6. from Object.RedisObject import RedisObject
  7. from Object.TokenObject import TokenObject
  8. from Service.ModelService import ModelService
  9. from Object.ResponseObject import ResponseObject
  10. class AppSetView(View):
  11. def get(self, request, *args, **kwargs):
  12. request.encoding = 'utf-8'
  13. operation = kwargs.get('operation', None)
  14. return self.validation(request.GET, operation)
  15. def post(self, request, *args, **kwargs):
  16. request.encoding = 'utf-8'
  17. operation = kwargs.get('operation', None)
  18. return self.validation(request.POST, operation)
  19. def validation(self, request_dict, operation):
  20. response = ResponseObject()
  21. if operation == 'query':
  22. return self.do_query(request_dict, response)
  23. token = request_dict.get('token', None)
  24. tko = TokenObject(token)
  25. if tko.code != 0:
  26. return response.json(tko.code)
  27. user_id = tko.userID
  28. if operation == 'page_set': # app弹窗标记红点设置
  29. return self.do_page_set(user_id, request_dict, response)
  30. elif operation == 'admin_query':
  31. return self.do_admin_query(user_id, request_dict, response)
  32. elif operation == 'admin_update':
  33. return self.do_admin_update(user_id, request_dict, response)
  34. else:
  35. return response.json(414)
  36. @staticmethod
  37. def do_query(request_dict, response):
  38. """
  39. 查询app配置
  40. @param request_dict: 请求数据
  41. @request_dict lang: 语言
  42. @request_dict appBundleId: app包id
  43. @param response: 响应
  44. @return: response
  45. """
  46. lang = request_dict.get('lang', None)
  47. appBundleId = request_dict.get('appBundleId', None)
  48. if not appBundleId:
  49. return response.json(444, 'appBundleId')
  50. app_set_qs = AppSetModel.objects.filter(appBundleId=appBundleId).values('content')
  51. if not app_set_qs.exists():
  52. return response.json(173)
  53. try:
  54. if not app_set_qs[0]['content']:
  55. return response.json(0)
  56. dict_json = json.loads(app_set_qs[0]['content'])
  57. # 加入促销弹窗
  58. promotion = PromotionRuleModel.objects.filter(status=1).values('startTime', 'endTime', 'popups')
  59. if promotion.exists():
  60. dict_json['popupsStartTime'] = promotion[0]['startTime']
  61. dict_json['popupsEndTime'] = promotion[0]['endTime']
  62. dict_json['popupsContent'] = json.loads(promotion[0]['popups']).get(lang, '')
  63. dict_json['nowTime'] = int(time.time())
  64. if 'editionUpgrading' in dict_json:
  65. dict_json['editionUpgrading'] = ''
  66. if dict_json['editionUpgrading'] == 1:
  67. if lang == 'cn':
  68. dict_json['editionUpgrading'] = '正在升级,请稍后登录'
  69. else:
  70. dict_json['editionUpgrading'] = 'Upgrading, please sign in later'
  71. return response.json(0, dict_json)
  72. except Exception as e:
  73. return response.json(500, '错误行数:{errLine}, 错误信息: {errmsg}'.format(errLine=e.__traceback__.tb_lineno,
  74. errmsg=repr(e)))
  75. def do_admin_query(self, userID, request_dict, response):
  76. # 查询和添加权限
  77. own_perm = ModelService.check_perm(userID, 40)
  78. if not own_perm:
  79. return response.json(404)
  80. appBundleId = request_dict.get('appBundleId', None)
  81. sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId)
  82. count = sm_qs.count()
  83. nowTime = int(time.time())
  84. if count > 0:
  85. sm_qs = sm_qs.values('id', 'appBundleId', 'content', 'addTime', 'updTime')
  86. return response.json(0, {'data': list(sm_qs), 'count': count})
  87. else:
  88. AppSetModel.objects.create(
  89. appBundleId=appBundleId,
  90. addTime=nowTime,
  91. updTime=nowTime
  92. )
  93. return response.json(0)
  94. def do_admin_update(self, userID, request_dict, response):
  95. # 修改的权限
  96. own_perm = ModelService.check_perm(userID, 50)
  97. if not own_perm:
  98. return response.json(404)
  99. appBundleId = request_dict.get('appBundleId', None)
  100. content = request_dict.get('content', None)
  101. nowTime = int(time.time())
  102. sm_qs = AppSetModel.objects.filter(appBundleId=appBundleId)
  103. redis = RedisObject()
  104. if SERVER_TYPE != "Ansjer.formal_settings":
  105. key_id = "www" + appBundleId
  106. else:
  107. key_id = "test" + appBundleId
  108. redis.del_data(key=key_id)
  109. if sm_qs.exists():
  110. sm_qs.update(content=content, updTime=nowTime)
  111. return response.json(0)
  112. else:
  113. return response.json(173)
  114. def do_page_set(self, userID, request_dict, response):
  115. lang = request_dict.get('lang', 'en')
  116. dict_json = {}
  117. now_time = int(time.time())
  118. dict_json['popups'] = {
  119. 'title': '',
  120. 'content': '',
  121. 'status': 0,
  122. 'tag': 1,
  123. }
  124. #弹窗
  125. popups_obj = PopupsConfig.objects.filter(lang=lang).values('title','content','start_time','end_time','tag')
  126. if popups_obj.exists():
  127. popups_status = 0
  128. if now_time >= popups_obj[0]['start_time'] and now_time <= popups_obj[0]['end_time']:
  129. popups_status = 1
  130. dict_json['popups'] = {
  131. 'title': popups_obj[0]['title'],
  132. 'content': popups_obj[0]['content'],
  133. 'status': popups_status,
  134. 'tag': popups_obj[0]['tag'],
  135. }
  136. #红点标记
  137. dict_json['red_dots'] = []
  138. red_dots_obj = RedDotsConfig.objects.values('module','start_time','end_time')
  139. for red_dots in red_dots_obj:
  140. red_dots_status = 0
  141. if now_time >= red_dots['start_time'] and now_time <= red_dots['end_time']:
  142. red_dots_status = 1
  143. dict_json['red_dots'].append({
  144. 'module': red_dots['module'],
  145. 'status': red_dots_status,
  146. })
  147. dict_json['red_dots'] = list(dict_json['red_dots'])
  148. return response.json(0, dict_json)