Преглед изворни кода

后台添加查询编辑广告开关显示状态

linhaohong пре 9 месеци
родитељ
комит
5806e71fa6
1 измењених фајлова са 102 додато и 35 уклоњено
  1. 102 35
      AdminController/CampaignController.py

+ 102 - 35
AdminController/CampaignController.py

@@ -1,7 +1,8 @@
 import time
 import json
 
-from Model.models import AppAdvertiseCampaign, DeviceTypeModel, CountryModel, OpenScreenCampaign
+from Model.models import AppAdvertiseCampaign, DeviceTypeModel, CountryModel, OpenScreenCampaign, UserSetStatus, \
+    Device_User, RegionRestriction
 from Ansjer.config import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, SERVER_TYPE, LOGGER
 
 from django.core.paginator import Paginator
@@ -32,6 +33,8 @@ class CampaignView(View):
         response = ResponseObject(language, 'pc')
         if operation == 'getCountryList':
             return self.get_country_list(response)
+        elif operation == 'getUserSetStatusList':  # 获取用户设置广告状态列表
+            return self.get_user_set_status_list(request_dict, response)
         else:
             tko = TokenObject(
                 request.META.get('HTTP_AUTHORIZATION'),
@@ -51,6 +54,8 @@ class CampaignView(View):
                 return self.switch_campaign(request_dict, response)
             elif operation == 'getUserBehaviorLog':  # 获取用户行为日志
                 return self.get_user_behavior_log(request_dict, response)
+            elif operation == 'setStatus':
+                return self.set_status(request_dict, response)
             else:
                 return response.json(414)
 
@@ -606,37 +611,99 @@ class CampaignView(View):
             AWS_SES_ACCESS_REGION = 'us-east-1'
         return s3_url, regin, AWS_SES_ACCESS_REGION
 
-#                                ,#.
-#                              .[[[&[[;   ,&&,
-#                              &# ,[;,&; [[[[[[:
-#                            [[   :[&,&[#;i[[,[,
-#                        ;#i [   L@$[&[#&[[   .[
-#                      i[[[[[[   @@$.#[#&$$$   [;
-#                     ,[,,,;;&   i$$  [  @@$   &&
-#                     [i;,,,;[,       [  $$#   [[i:#[#
-#                     [,,,,,,#&.     &[,       &&[[&[[
-#                     [,,,,,,,&[[&i[[[#[      [&;,;[[&
-#                     [,,,,,,,,,&&[&;,,&[[&;[[[,,,,;[[
-#                     &;,,,,,,,,,,,,,,,;,#[[&,,,;,,;,[[#
-#                     i[,,,,,,,,,,,,,,,,,,,,,,;,;,,,,[[&:
-#                      [;,,,,,,,,,,,,,,,,,,,,,&,;,,,,#[[
-#                       [;,;,,,,,,,,,,,,,,,,,;[,;,,,,;[
-#                       ;[#;,,,,,,,,,,,,,,,,,i&,,,,,,i[
-#                        :&[i;,,,,,,,,,,,,,;,[&,;,,,,#[i
-#                          [[[[i,,,,,,,;,;&[&&&&,,,,,[[[
-#                           &;[[[[&[[&[&[&&&,,,&[,,,,[[[
-#                           :&i,;,ii##i;,,,;;,,;;,,;[[i
-#                         &[[&[[[,;,,,,,,,,,,,,,,,,[[&,
-#                        &[,,,;[[,,,,,,,,,,,,,,,,;[[&&[[
-#                        [,,,,[[,;,,,,,,,,,,,,,,,,,,,,;[[
-#                        [,,;;[;,,,,,,,,,,,,,,,,,,[[;,,,[
-#                        [i;#[[;,,,,,,,,,,,,,,,,;[[;,,,;[
-#                        &[,,&#,,,,,,,,,,,,,,,,,,[;;,,,[[
-#                         [[&&,;,,,,,,,,,,,,,,,,,[;;;[[[
-#                           [[,;,,,,,,,,,,,,,,,,,[#;#&
-#                           &[,,,,,,,,,,,,,,,,,,,,[[[&
-#                            [,,,,,,,,,,,,,,,,,,,,,,[[[
-#                            [,,,,,,,,,,,,,,,,,,;,,;[[:
-#                            &;,,,,,,,,,,,,,,,,,;,,,;[
-#                                    鳄鱼保佑
-#                                   代码无BUG!
+    @staticmethod
+    def set_status(request_dict, response):
+        """
+        编辑状态
+        """
+        try:
+            user_status_id = request_dict.get("userStatusId", None)
+            user_id = request_dict.get("userID", None)
+            email = request_dict.get("email", None)
+            phone = request_dict.get("phone", None)
+            username = request_dict.get("username", None)
+            status = request_dict.get("status", None)
+            now_time = int(time.time())
+            if user_status_id and status:
+                UserSetStatus.objects.filter(pk=user_status_id).update(status=status)
+            elif user_id or email or phone or username:
+                region_restriction = RegionRestriction.objects.filter(statusName="splashAdSwitchStatus").first()
+                status = region_restriction.default_status if region_restriction else None
+                user = Device_User.objects.filter(
+                    Q(userID=user_id) | Q(userEmail=email) | Q(phone=phone) | Q(username=username)).first()
+                if user:
+                    if UserSetStatus.objects.filter(user_id=user.userID).exists():
+                        return response.json(174)
+                    UserSetStatus.objects.create(user_id=user.userID, status=status,
+                                                 region_restriction_id=region_restriction,
+                                                 created_time=now_time, updated_time=now_time)
+            else:
+                return response.json(444)
+
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def get_user_set_status_list(request_dict, response):
+        """
+        获取状态列表
+        """
+        try:
+            user_id = request_dict.get("userID", None)
+            email = request_dict.get("email", None)
+            phone = request_dict.get("phone", None)
+            username = request_dict.get("username", None)
+            page = int(request_dict.get("page", 1))
+            page_size = int(request_dict.get("pageSize", 10))
+
+            region_restriction = RegionRestriction.objects.filter(statusName="splashAdSwitchStatus").first()
+            user_set_qs = UserSetStatus.objects.filter(region_restriction_id=region_restriction)
+
+            if user_id:
+                user_set_qs = user_set_qs.filter(user_id=user_id)
+
+            if email:
+                user = Device_User.objects.filter(userEmail=email).first()
+                if user:
+                    user_set_qs = user_set_qs.filter(user_id=user.userID)
+
+            if phone:
+                user = Device_User.objects.filter(phone=phone).first()
+                if user:
+                    user_set_qs = user_set_qs.filter(user_id=user.userID)
+
+            if username:
+                user = Device_User.objects.filter(username=username).first()
+                if user:
+                    user_set_qs = user_set_qs.filter(user_id=user.userID)
+
+            if not user_set_qs.exists():
+                return response.json(0, {'list': [], 'total': 0})
+
+            total_count = user_set_qs.count()
+            user_set_paginated = user_set_qs[(page - 1) * page_size:page * page_size]
+
+            user_set_list = []
+            for user_set in user_set_paginated:
+                status_name = user_set.region_restriction_id.statusName
+                user = Device_User.objects.filter(userID=user_set.user_id).first()
+                user_set_list.append({
+                    'userSetId': user_set.id,
+                    'userID': user_set.user_id,
+                    'statusName': status_name,
+                    'setStatus': user_set.status,
+                    'username': user.username,
+                    'phone': user.phone,
+                    'email': user.userEmail,
+                    'createdTime': user_set.created_time,
+                    'updatedTime': user_set.updated_time,
+                })
+
+            return response.json(0, {
+                'list': user_set_list,
+                'total': total_count,
+            })
+
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))