Bladeren bron

开屏广告后台代码

linhaohong 9 maanden geleden
bovenliggende
commit
854791f3a5
2 gewijzigde bestanden met toevoegingen van 139 en 1 verwijderingen
  1. 135 0
      AdminController/CampaignController.py
  2. 4 1
      Ansjer/urls.py

+ 135 - 0
AdminController/CampaignController.py

@@ -0,0 +1,135 @@
+import time
+
+from Model.models import Device_User, RegionRestriction, UserSetStatus
+from django.views import View
+from django.db.models import Q
+
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+
+
+class CampaignView(View):
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        request_dict = request.GET
+        return self.validation(request_dict, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        request_dict = request.POST
+        return self.validation(request_dict, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        language = request_dict.get('language', 'en')
+        response = ResponseObject(language, 'pc')
+        if operation == 'getUserSetStatusList':  # 获取用户设置广告状态列表
+            return self.get_user_set_status_list(request_dict, response)
+        else:
+            tko = TokenObject(
+                request.META.get('HTTP_AUTHORIZATION'),
+                returntpye='pc')
+            if tko.code != 0:
+                return response.json(tko.code)
+            response.lang = tko.lang
+            if operation == 'setStatus':
+                return self.set_status(request_dict, response)
+            else:
+                return response.json(414)
+
+    @staticmethod
+    def set_status(request_dict, response):
+        """
+        编辑状态
+        """
+        try:
+            user_status_id = request_dict.get("userSetId", 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 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=username) | Q(userEmail=username) | Q(phone=username) | Q(username=username)).first()
+                if user:
+                    if UserSetStatus.objects.filter(user_id=user.userID, region_restriction_id=region_restriction).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(173)
+            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)))

+ 4 - 1
Ansjer/urls.py

@@ -4,7 +4,8 @@ from django.urls import path, re_path
 
 from AdminController import UserManageController, RoleController, MenuController, TestServeController, \
     ServeManagementController, LogManagementController, DeviceManagementController, VersionManagementController, \
-    AiServeController, SurveysManageController, SerialManageController, MessageMangementController, EvaluationActivityController
+    AiServeController, SurveysManageController, SerialManageController, MessageMangementController, \
+    EvaluationActivityController, CampaignController
 from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppInfo, \
     Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     AppColophon, DateController, \
@@ -416,6 +417,8 @@ urlpatterns = [
     re_path(r'serial/(?P<operation>.*)', SerialManageController.SerialView.as_view()),
     # 数据系统模块
     re_path(r'^dataManagement/', include("Ansjer.server_urls.datasystem_url")),
+    # APP广告模块
+    re_path('campaign/(?P<operation>.*)', CampaignController.CampaignView.as_view()),
     # 查询消息推送模块
     re_path('messageManagement/(?P<operation>.*)', MessageMangementController.MassageView.as_view()),
     # 新品体验官