| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- # -*- coding: utf-8 -*-
 
- """
 
- @Time : 2020/12/16 8:44
 
- @Auth : Locky
 
- @File :CloudTest.py
 
- @IDE :PyCharm
 
- """
 
- import time
 
- from django.db import transaction
 
- from django.views.generic.base import View
 
- from Object.TokenObject import TokenObject
 
- from Service.ModelService import ModelService
 
- from Object.ResponseObject import ResponseObject
 
- from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel
 
- class 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)
 
-         username = 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).values('isShare','vodPrimaryUserID')
 
-             if not old_deviceInfo_qs.exists():
 
-                 return response.json(10008)
 
-             # 判断新用户的userID是否跟旧用户的一样
 
-             newUserID = ModelService.get_userID_byname(username)
 
-             if newUserID == oldUserID:
 
-                 return response.json(10009)
 
-             # 分享的设备不能转移
 
-             isShare = old_deviceInfo_qs[0]['isShare']
 
-             if isShare:
 
-                 return response.json(10015)
 
-             # 旧用户是设备主用户才能转移
 
-             vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
 
-             if vodPrimaryUserID != '' and vodPrimaryUserID != oldUserID:
 
-                 return response.json(10037)
 
-             # 判断新用户是否已有此设备UID
 
-             new_deviceInfo_qs = Device_Info.objects.filter(userID_id=newUserID, UID=uid, isExist=1)
 
-             if new_deviceInfo_qs:
 
-                 return response.json(10009)
 
-             # 获取新设备的username
 
-             newUserName = Device_User.objects.get(userID=newUserID).username
 
-             vodPrimaryUserID = newUserID
 
-             vodPrimaryMaster = newUserName
 
-             with transaction.atomic():
 
-                 # 更新旧设备userID
 
-                 old_deviceInfo_qs.update(userID=newUserID)
 
-                 # 更新所有设备主用户信息
 
-                 Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
 
-                 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','vodPrimaryUserID')
 
-             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)
 
-             # 不是主用户无法转移
 
-             vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
 
-             if vodPrimaryUserID != '' and vodPrimaryUserID != userID:
 
-                 return response.json(10038)
 
-             vodPrimaryUserID = userID
 
-             vodPrimaryMaster = ModelService.get_user_name(userID)
 
-             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():
 
-                 # 更新所有设备主用户信息
 
-                 Device_Info.objects.filter(UID=new_uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
 
-                 # 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)
 
 
  |