| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | import timefrom Model.models import Device_User, RegionRestriction, UserSetStatusfrom django.views import Viewfrom django.db.models import Qfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectclass 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)))
 |