|
@@ -10,9 +10,11 @@ from django.db import transaction
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
|
|
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
|
|
+from Service import CommonService
|
|
from Service.ModelService import ModelService
|
|
from Service.ModelService import ModelService
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
-from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel, Unused_Uid_Meal
|
|
|
|
|
|
+from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel, Unused_Uid_Meal, \
|
|
|
|
+ VodBucketModel
|
|
|
|
|
|
|
|
|
|
class cloudTestView(View):
|
|
class cloudTestView(View):
|
|
@@ -47,10 +49,11 @@ class cloudTestView(View):
|
|
return self.expireMeal(request_dict, response)
|
|
return self.expireMeal(request_dict, response)
|
|
|
|
|
|
def deviceTransfer(self, request_dict, response):
|
|
def deviceTransfer(self, request_dict, response):
|
|
- # 设备转移
|
|
|
|
|
|
+ # 设备转移,一个用户下的设备转移到另一个用户
|
|
oldUserID = request_dict.get("oldUserID", None)
|
|
oldUserID = request_dict.get("oldUserID", None)
|
|
username = request_dict.get("username", None)
|
|
username = request_dict.get("username", None)
|
|
uid = request_dict.get('uid', None)
|
|
uid = request_dict.get('uid', None)
|
|
|
|
+ nowTime = int(time.time())
|
|
|
|
|
|
try:
|
|
try:
|
|
# 查询该userID下是否存在此设备
|
|
# 查询该userID下是否存在此设备
|
|
@@ -69,7 +72,7 @@ class cloudTestView(View):
|
|
vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
|
|
vodPrimaryUserID = old_deviceInfo_qs[0]['vodPrimaryUserID']
|
|
if vodPrimaryUserID != '' and vodPrimaryUserID != oldUserID:
|
|
if vodPrimaryUserID != '' and vodPrimaryUserID != oldUserID:
|
|
return response.json(10037)
|
|
return response.json(10037)
|
|
- # 判断新用户是否已有此设备UID
|
|
|
|
|
|
+ # 判断新用户是否已有此设备
|
|
new_deviceInfo_qs = Device_Info.objects.filter(userID_id=newUserID, UID=uid, isExist=1)
|
|
new_deviceInfo_qs = Device_Info.objects.filter(userID_id=newUserID, UID=uid, isExist=1)
|
|
if new_deviceInfo_qs:
|
|
if new_deviceInfo_qs:
|
|
return response.json(10009)
|
|
return response.json(10009)
|
|
@@ -80,9 +83,9 @@ class cloudTestView(View):
|
|
vodPrimaryMaster = newUserName
|
|
vodPrimaryMaster = newUserName
|
|
|
|
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
- # 更新旧设备userID
|
|
|
|
- old_deviceInfo_qs.update(userID=newUserID)
|
|
|
|
- # 更新所有设备主用户信息
|
|
|
|
|
|
+ # 更新旧设备的userID,设备添加时间
|
|
|
|
+ old_deviceInfo_qs.update(userID=newUserID, data_joined=nowTime)
|
|
|
|
+ # 更新设备的主用户信息
|
|
Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
|
|
Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
|
|
VodHlsModel.objects.filter(uid=uid).delete()
|
|
VodHlsModel.objects.filter(uid=uid).delete()
|
|
except Exception as e:
|
|
except Exception as e:
|
|
@@ -92,7 +95,7 @@ class cloudTestView(View):
|
|
return response.json(0)
|
|
return response.json(0)
|
|
|
|
|
|
def mealTransfer(self, request_dict, response, userID):
|
|
def mealTransfer(self, request_dict, response, userID):
|
|
- # 云存套餐转移
|
|
|
|
|
|
+ # 云存套餐转移,同一用户下不同设备间的云存套餐转移
|
|
old_uid = request_dict.get("old_uid", None)
|
|
old_uid = request_dict.get("old_uid", None)
|
|
new_uid = request_dict.get("new_uid", None)
|
|
new_uid = request_dict.get("new_uid", None)
|
|
nowTime = int(time.time())
|
|
nowTime = int(time.time())
|
|
@@ -116,36 +119,51 @@ class cloudTestView(View):
|
|
return response.json(10011)
|
|
return response.json(10011)
|
|
|
|
|
|
# 查询转出设备正在使用的套餐
|
|
# 查询转出设备正在使用的套餐
|
|
- old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id').order_by('addTime')
|
|
|
|
|
|
+ old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id', 'bucket_id', 'has_unused').order_by('addTime')
|
|
if not old_using_uid_bucket.exists():
|
|
if not old_using_uid_bucket.exists():
|
|
return response.json(10013)
|
|
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)
|
|
|
|
-
|
|
|
|
- # 查询转入设备正在使用的套餐
|
|
|
|
|
|
+ # 免费存储桶不可转移
|
|
|
|
+ old_vod_bucket_id = old_using_uid_bucket[0]['bucket_id']
|
|
|
|
+ is_free = VodBucketModel.objects.get(id=old_vod_bucket_id).is_free
|
|
|
|
+ if is_free == 1:
|
|
|
|
+ return response.json(10012)
|
|
|
|
+
|
|
|
|
+ # 查询转入设备是否存在正在使用的套餐和未使用的套餐
|
|
new_using_uid_bucket = UID_Bucket.objects.filter(uid=new_uid, endTime__gte=nowTime)
|
|
new_using_uid_bucket = UID_Bucket.objects.filter(uid=new_uid, endTime__gte=nowTime)
|
|
new_unused_uid_bucket = Unused_Uid_Meal.objects.filter(uid=new_uid)
|
|
new_unused_uid_bucket = Unused_Uid_Meal.objects.filter(uid=new_uid)
|
|
- new_unused_id_list = new_unused_uid_bucket.values_list("id", flat=True)
|
|
|
|
if new_using_uid_bucket.exists() or new_unused_uid_bucket.exists():
|
|
if new_using_uid_bucket.exists() or new_unused_uid_bucket.exists():
|
|
return response.json(10014)
|
|
return response.json(10014)
|
|
|
|
|
|
|
|
+ # 如果转出设备有未使用套餐,更改第一个未使用套餐为正在使用
|
|
|
|
+ if old_using_uid_bucket[0]['has_unused'] == 1:
|
|
|
|
+ old_unused_uid_bucket = Unused_Uid_Meal.objects.filter(uid=old_uid).values('id', 'channel', 'bucket_id', 'addTime', 'expire', 'num')
|
|
|
|
+ count = old_unused_uid_bucket.count()
|
|
|
|
+ unused = old_unused_uid_bucket[0]
|
|
|
|
+ has_unused = 1 if count>1 else 0 # 如果存在不止一个未使用套餐,has_unused=1
|
|
|
|
+ endTime = CommonService.calcMonthLater(unused['expire'] * unused['num'])
|
|
|
|
+ data_dict = {
|
|
|
|
+ 'uid': old_uid,
|
|
|
|
+ 'channel': unused['channel'],
|
|
|
|
+ 'bucket_id': unused['bucket_id'],
|
|
|
|
+ 'addTime': unused['addTime'],
|
|
|
|
+ 'endTime': endTime,
|
|
|
|
+ 'updateTime': unused['nowTime'],
|
|
|
|
+ 'status': 1,
|
|
|
|
+ 'use_status': 1,
|
|
|
|
+ 'has_unused': has_unused
|
|
|
|
+ }
|
|
|
|
+ UID_Bucket.objects.create(**data_dict) # 正在使用套餐表添加数据
|
|
|
|
+ Unused_Uid_Meal.objects.filter(uid=old_uid).first().delete() # 删除未使用套餐表中的数据
|
|
|
|
+
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
- # 更新所有设备主用户信息
|
|
|
|
|
|
+ # 更新转入设备的主用户信息
|
|
Device_Info.objects.filter(UID=new_uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
|
|
Device_Info.objects.filter(UID=new_uid).update(vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
|
|
- # vod_uid_bucket表更新uid
|
|
|
|
|
|
+ # 更新正在使用套餐的uid,重置拥有未使用套餐
|
|
old_using_uid_bucket_id = old_using_uid_bucket[0]['id']
|
|
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)
|
|
|
|
- Unused_Uid_Meal.objects.filter(id__in=list(new_unused_id_list)).update(uid=new_uid) # 更新过期云存关联套餐状态
|
|
|
|
- # 删除转出设备stscrd表关联数据
|
|
|
|
- StsCrdModel.objects.filter(uid=old_uid).delete()
|
|
|
|
|
|
+ UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid,has_unused=0)
|
|
|
|
+ StsCrdModel.objects.filter(uid=old_uid).delete() # 删除转出设备stscrd表关联数据
|
|
|
|
+
|
|
except Exception as e:
|
|
except Exception as e:
|
|
# print(e)
|
|
# print(e)
|
|
return response.json(500, repr(e))
|
|
return response.json(500, repr(e))
|