CampaignController.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import time
  2. from Model.models import Device_User, RegionRestriction, UserSetStatus
  3. from django.views import View
  4. from django.db.models import Q
  5. from Object.ResponseObject import ResponseObject
  6. from Object.TokenObject import TokenObject
  7. class CampaignView(View):
  8. def get(self, request, *args, **kwargs):
  9. request.encoding = 'utf-8'
  10. operation = kwargs.get('operation')
  11. request_dict = request.GET
  12. return self.validation(request_dict, request, operation)
  13. def post(self, request, *args, **kwargs):
  14. request.encoding = 'utf-8'
  15. operation = kwargs.get('operation')
  16. request_dict = request.POST
  17. return self.validation(request_dict, request, operation)
  18. def validation(self, request_dict, request, operation):
  19. language = request_dict.get('language', 'en')
  20. response = ResponseObject(language, 'pc')
  21. if operation == 'getUserSetStatusList': # 获取用户设置广告状态列表
  22. return self.get_user_set_status_list(request_dict, response)
  23. else:
  24. tko = TokenObject(
  25. request.META.get('HTTP_AUTHORIZATION'),
  26. returntpye='pc')
  27. if tko.code != 0:
  28. return response.json(tko.code)
  29. response.lang = tko.lang
  30. if operation == 'setStatus':
  31. return self.set_status(request_dict, response)
  32. else:
  33. return response.json(414)
  34. @staticmethod
  35. def set_status(request_dict, response):
  36. """
  37. 编辑状态
  38. """
  39. try:
  40. user_status_id = request_dict.get("userSetId", None)
  41. username = request_dict.get("username", None)
  42. status = request_dict.get("status", None)
  43. now_time = int(time.time())
  44. if user_status_id and status:
  45. UserSetStatus.objects.filter(pk=user_status_id).update(status=status)
  46. elif username:
  47. region_restriction = RegionRestriction.objects.filter(statusName="splashAdSwitchStatus").first()
  48. status = region_restriction.default_status if region_restriction else None
  49. user = Device_User.objects.filter(
  50. Q(userID=username) | Q(userEmail=username) | Q(phone=username) | Q(username=username)).first()
  51. if user:
  52. if UserSetStatus.objects.filter(user_id=user.userID, region_restriction_id=region_restriction).exists():
  53. return response.json(174)
  54. UserSetStatus.objects.create(user_id=user.userID, status=status,
  55. region_restriction_id=region_restriction,
  56. created_time=now_time, updated_time=now_time)
  57. else:
  58. return response.json(173)
  59. else:
  60. return response.json(444)
  61. return response.json(0)
  62. except Exception as e:
  63. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  64. @staticmethod
  65. def get_user_set_status_list(request_dict, response):
  66. """
  67. 获取状态列表
  68. """
  69. try:
  70. user_id = request_dict.get("userID", None)
  71. email = request_dict.get("email", None)
  72. phone = request_dict.get("phone", None)
  73. username = request_dict.get("username", None)
  74. page = int(request_dict.get("page", 1))
  75. page_size = int(request_dict.get("pageSize", 10))
  76. region_restriction = RegionRestriction.objects.filter(statusName="splashAdSwitchStatus").first()
  77. user_set_qs = UserSetStatus.objects.filter(region_restriction_id=region_restriction)
  78. if user_id:
  79. user_set_qs = user_set_qs.filter(user_id=user_id)
  80. if email:
  81. user = Device_User.objects.filter(userEmail=email).first()
  82. if user:
  83. user_set_qs = user_set_qs.filter(user_id=user.userID)
  84. if phone:
  85. user = Device_User.objects.filter(phone=phone).first()
  86. if user:
  87. user_set_qs = user_set_qs.filter(user_id=user.userID)
  88. if username:
  89. user = Device_User.objects.filter(username=username).first()
  90. if user:
  91. user_set_qs = user_set_qs.filter(user_id=user.userID)
  92. if not user_set_qs.exists():
  93. return response.json(0, {'list': [], 'total': 0})
  94. total_count = user_set_qs.count()
  95. user_set_paginated = user_set_qs[(page - 1) * page_size:page * page_size]
  96. user_set_list = []
  97. for user_set in user_set_paginated:
  98. status_name = user_set.region_restriction_id.statusName
  99. user = Device_User.objects.filter(userID=user_set.user_id).first()
  100. user_set_list.append({
  101. 'userSetId': user_set.id,
  102. 'userID': user_set.user_id,
  103. 'statusName': status_name,
  104. 'setStatus': user_set.status,
  105. 'username': user.username,
  106. 'phone': user.phone,
  107. 'email': user.userEmail,
  108. 'createdTime': user_set.created_time,
  109. 'updatedTime': user_set.updated_time,
  110. })
  111. return response.json(0, {
  112. 'list': user_set_list,
  113. 'total': total_count,
  114. })
  115. except Exception as e:
  116. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))