123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # -*- 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.db.models import Q
- from django.views.generic.base import View
- from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, Store_Meal, StsCrdModel
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- 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)
- 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')
- userID = deviceUser_qs[0]['userID']
- # 判断该用户的userID是否跟转移的一样
- if userID == oldUserID:
- return response.json(10009)
- # 判断该用户是否已有此设备UID
- new_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isExist=1)
- if new_deviceInfo_qs:
- return response.json(10009)
- # 更新设备信息
- old_deviceInfo_qs.update(userID=userID)
- 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', 'Online')
- 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_orderModel_qs = Order_Model.objects.filter(userID_id=userID, UID=old_uid).values('payType',
- 'uid_bucket_id')
- if old_orderModel_qs.exists():
- # 首次转移,只能转移购买的的套餐(支付类型为体验套餐和激活码不能转移,即pay_type不能为10,11)
- payType = old_orderModel_qs[0]['payType']
- old_uid_bucket_id = old_orderModel_qs[0]['uid_bucket_id']
- if payType == 10 or payType == 11:
- return response.json(10012)
- old_UIDbucket_qs = UID_Bucket.objects.filter(id=old_uid_bucket_id, endTime__gt=nowTime)
- else:
- # 多次转移,根据vod_uid_bucket的uid和endTime查找是否有未过期套餐
- old_UIDbucket_qs = UID_Bucket.objects.filter(uid=old_uid, endTime__gt=nowTime)
- if not old_UIDbucket_qs.exists():
- return response.json(10013)
- # 确认转入设备套餐是否开通过套餐和套餐已过期
- new_orderModel_qs = Order_Model.objects.filter(userID_id=userID, UID=new_uid).values('uid_bucket_id')
- if new_orderModel_qs.exists():
- new_uid_bucket_id = new_orderModel_qs[0]['uid_bucket_id']
- new_UIDbucket_qs = UID_Bucket.objects.filter(id=new_uid_bucket_id, endTime__gt=nowTime).values(
- 'endTime')
- if new_UIDbucket_qs.exists():
- return response.json(10014)
- with transaction.atomic():
- # vod_uid_bucket表更新uid
- old_UIDbucket_qs.update(uid=new_uid)
- # 删除转出设备stscrd表关联数据
- stscrdModel_qs = StsCrdModel.objects.filter(uid=old_uid)
- if stscrdModel_qs:
- stscrdModel_qs.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)
|