# -*- coding: utf-8 -*- """ @Time : 2020/12/16 8:44 @Auth : Locky @File :CloudTest.py @IDE :PyCharm """ import time 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) 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: # 查询设备是否存在 deviceInfo_qs = Device_Info.objects.filter(userID_id=oldUserID, UID=uid, isExist=1) if deviceInfo_qs[0]: deviceUser_qs = Device_User.objects.filter(username=username).values('userID') userID = deviceUser_qs[0]['userID'] # 判断该用户的userID是否跟转移的一样 if userID == oldUserID: return response.json(10008) # 更新设备信息 else: 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): # 云存套餐转移 username = request_dict.get("username", None) old_uid = request_dict.get("old_uid", None) new_uid = request_dict.get("new_uid", None) try: # 查询两个UID是否在同一账号下 deviceUser_qs = Device_User.objects.filter(username=username).values('userID') userID = deviceUser_qs[0]['userID'] 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(10009) # 转出设备已删除或不在线才能进行转移 old_isExist = old_deviceInfo_qs[0]['isExist'] old_Online = old_deviceInfo_qs[0]['Online'] new_isExist = new_deviceInfo_qs[0]['isExist'] if old_isExist or old_Online or not new_isExist: return response.json(10010) # 确认转入设备套餐是否过期,通过orders表的userID_id和UID确定uid_bucket_id new_orderModel_qs = Order_Model.objects.filter(userID_id=userID, UID=new_uid).values('uid_bucket_id') new_uid_bucket_id = new_orderModel_qs[0]['uid_bucket_id'] # 转入设备开通过套餐且套餐已过期才能进行转移,通过vod_uid_bucket表关联的id(关联orders表的uid_bucket_id)确定过期时间endTime new_UIDbucket_qs = UID_Bucket.objects.filter(id=new_uid_bucket_id).values('endTime') if not new_UIDbucket_qs.exists(): return response.json(10011) nowTime = int(time.time()) new_endTime = new_UIDbucket_qs[0]['endTime'] if new_endTime > nowTime: return response.json(10012) # 只能转移购买的的套餐(支付类型为体验套餐和激活码不能转移,即pay_type不能为10,11) old_orderModel_qs = Order_Model.objects.filter(userID_id=userID,UID=old_uid).values('payType','uid_bucket_id') 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(10013) # 套餐转移,转出设备服务显示过期,转入设备套餐类型和过期时间更新 # 更新转出设备套餐过期时间 old_uidBucket_qs = UID_Bucket.objects.filter(id=old_uid_bucket_id).values('bucket_id','endTime') old_bucket_id = old_uidBucket_qs[0]['bucket_id'] old_endTime = old_uidBucket_qs[0]['endTime'] UID_Bucket.objects.filter(id=old_uid_bucket_id).update(endTime=0) # 更新转入设备套餐类型和过期时间 new_UIDbucket_qs.update(bucket_id=old_bucket_id,endTime=old_endTime) # 删除转出设备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)