| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | # -*- coding: utf-8 -*-"""@Time : 2020/12/16 8:44@Auth : Locky@File :CloudTest.py@IDE :PyCharm"""import timefrom django.db import transactionfrom django.db.models import Qfrom django.views.generic.base import Viewfrom Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModelfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectclass cloudTestView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.GET, request, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.POST, request, operation)    def validation(self, request_dict, request, operation):        response = ResponseObject()        if operation is None:            return response.json(444, 'error path')        else:            token = request_dict.get('token', None)            # 设备主键uid            tko = TokenObject(token)            response.lang = tko.lang            if tko.code != 0:                return response.json(tko.code)            userID = tko.userID            if operation == 'deviceTransfer':                return self.deviceTransfer(request_dict, response)            elif operation == 'mealTransfer':                return self.mealTransfer(request_dict, response, userID)            elif operation == 'expireMeal':                return self.expireMeal(request_dict, response)    def deviceTransfer(self, request_dict, response):        # 设备转移        oldUserID = request_dict.get("oldUserID", None)        loginName = request_dict.get("username", None)        uid = request_dict.get('uid', None)        try:            # 查询该userID下是否存在此设备            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=oldUserID, UID=uid, isExist=1)            if not old_deviceInfo_qs.exists():                return response.json(10008)            # 登录方式可能为用户名,手机号或邮箱登录            deviceUser_qs = Device_User.objects.filter(                Q(username=loginName) | Q(phone=loginName) | Q(userEmail=loginName)).values('userID')            newUserID = deviceUser_qs[0]['userID']            # 判断新用户的userID是否跟旧用户的一样            if newUserID == oldUserID:                return response.json(10009)            # 判断新用户是否已有此设备UID            new_deviceInfo_qs = Device_Info.objects.filter(userID_id=newUserID, UID=uid, isExist=1)            if new_deviceInfo_qs:                return response.json(10009)            # 分享的设备不能转移            isShare = Device_Info.objects.get(userID_id=oldUserID, UID=uid).isShare            if isShare:                return response.json(10015)            # 获取旧设备的username            oldUserName = Device_User.objects.get(userID=oldUserID).username            with transaction.atomic():                # 更新设备信息                old_deviceInfo_qs.update(userID=newUserID, vodPrimaryUserID=newUserID, vodPrimaryMaster=oldUserName)                VodHlsModel.objects.filter(uid=uid).delete()        except Exception as e:            # print(e)            return response.json(500, repr(e))        else:            return response.json(0)    def mealTransfer(self, request_dict, response, userID):        # 云存套餐转移        old_uid = request_dict.get("old_uid", None)        new_uid = request_dict.get("new_uid", None)        nowTime = int(time.time())        try:            # 查询两个UID是否在同一账号下            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=old_uid).values('isExist')            new_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=new_uid).values('isExist')            if not (old_deviceInfo_qs.exists() and new_deviceInfo_qs.exists()):                return response.json(10010)            new_isExist = new_deviceInfo_qs[0]['isExist']            if not new_isExist:                return response.json(10011)            # 查询转出设备正在使用的套餐            old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id').order_by('addTime')            if not old_using_uid_bucket.exists():                return response.json(10013)            # 首次转移,根据订单判断是否为购买的套餐            old_orderModel_qs = Order_Model.objects.filter(userID_id=userID, UID=old_uid)            if old_orderModel_qs.exists():                old_UIDbucket_id = old_using_uid_bucket[0]['id']                # 只能转移购买的的套餐(支付类型为体验套餐和激活码不能转移,即pay_type不能为10,11)                old_orderModel_qs = Order_Model.objects.filter(uid_bucket_id=old_UIDbucket_id).values('payType')                payType = old_orderModel_qs[0]['payType']                if payType == 10 or payType == 11:                    return response.json(10012)            # # 查询转入设备正在使用的套餐            new_using_uid_bucket = UID_Bucket.objects.filter(uid=new_uid, endTime__gte=nowTime)            if new_using_uid_bucket.exists():                return response.json(10014)            with transaction.atomic():                # vod_uid_bucket表更新uid                old_using_uid_bucket_id = old_using_uid_bucket[0]['id']                UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid)                # 删除转出设备stscrd表关联数据                StsCrdModel.objects.filter(uid=old_uid).delete()        except Exception as e:            # print(e)            return response.json(500, repr(e))        else:            return response.json(0)    def expireMeal(self, request_dict, response):        UID_Bucket_id = request_dict.get("UID_Bucket_id", None)        # 修改endTime让当前设备套餐过期        if UID_Bucket_id:            nowTime = int(time.time())            try:                UID_Bucket.objects.filter(id=UID_Bucket_id).update(endTime=nowTime-1)            except Exception as e:                # print(e)                return response.json(500, repr(e))            else:                return response.json(0)        response.json(404)
 |