Эх сурвалжийг харах

Merge branch 'dev' into lang

# Conflicts:
#	Object/ResponseObject.py
lang 4 жил өмнө
parent
commit
6d57b87383

+ 69 - 68
Controller/CloudTest.py

@@ -7,6 +7,7 @@
 """
 """
 import time
 import time
 from django.db import transaction
 from django.db import transaction
+from django.db.models import Q
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
 from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, Store_Meal, StsCrdModel
 from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, Store_Meal, StsCrdModel
@@ -42,26 +43,33 @@ class cloudTestView(View):
                 return self.deviceTransfer(request_dict, response)
                 return self.deviceTransfer(request_dict, response)
             elif operation == 'mealTransfer':
             elif operation == 'mealTransfer':
                 return self.mealTransfer(request_dict, response, userID)
                 return self.mealTransfer(request_dict, response, userID)
+            elif operation == 'expireMeal':
+                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)
+        loginName = request_dict.get("username", None)
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
 
 
         try:
         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)
+            # 查询该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:
         except Exception as e:
             # print(e)
             # print(e)
             return response.json(500, repr(e))
             return response.json(500, repr(e))
@@ -73,81 +81,74 @@ class cloudTestView(View):
         # username = request_dict.get("username", None)
         # username = request_dict.get("username", None)
         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())
 
 
         try:
         try:
             # 查询两个UID是否在同一账号下
             # 查询两个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')
+            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')
             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)
-            
-            # 转出设备已删除或不在线才能进行转移
+            if not (old_deviceInfo_qs.exists() and new_deviceInfo_qs.exists()):
+                return response.json(10010)
+
+            # 只能转移购买的的套餐(支付类型为体验套餐和激活码不能转移,即pay_type不能为10,11)
+            old_orderModel_qs = Order_Model.objects.filter(userID_id=userID, UID=old_uid).values('payType',
+                                                                                                 'uid_bucket_id')
+            if old_orderModel_qs.exists():
+                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(10014)
+                # old_UIDbucket_qs = UID_Bucket.objects.filter(id=old_uid_bucket_id, endTime__lt=nowTime)
+                old_UIDbucket_qs = UID_Bucket.objects.filter(id=old_uid_bucket_id).values('endTime')
+                old_endTime = old_UIDbucket_qs[0]['endTime']
+                if old_endTime < nowTime:
+                    return response.json(10015)
+            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(10015)
+
+            # 转出设备套餐未过期或已删除或不在线才能进行转移
             old_isExist = old_deviceInfo_qs[0]['isExist']
             old_isExist = old_deviceInfo_qs[0]['isExist']
             old_Online = old_deviceInfo_qs[0]['Online']
             old_Online = old_deviceInfo_qs[0]['Online']
             new_isExist = new_deviceInfo_qs[0]['isExist']
             new_isExist = new_deviceInfo_qs[0]['isExist']
             if old_isExist or old_Online or not new_isExist:
             if old_isExist or old_Online or not new_isExist:
-                return response.json(10010)
+                return response.json(10011)
 
 
-            # 确认转入设备套餐是否过期,通过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_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)
+            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(10013)
 
 
-            # 只能转移购买的的套餐(支付类型为体验套餐和激活码不能转移,即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']
             with transaction.atomic():
             with transaction.atomic():
-                UID_Bucket.objects.filter(id=old_uid_bucket_id).update(endTime=0)
-
-                # 更新转入设备套餐类型和过期时间
-                new_UIDbucket_qs.update(bucket_id=old_bucket_id,endTime=old_endTime)
+                # vod_uid_bucket表更新uid
+                old_UIDbucket_qs.update(uid=new_uid)
                 # 删除转出设备stscrd表关联数据
                 # 删除转出设备stscrd表关联数据
                 stscrdModel_qs = StsCrdModel.objects.filter(uid=old_uid)
                 stscrdModel_qs = StsCrdModel.objects.filter(uid=old_uid)
                 if stscrdModel_qs:
                 if stscrdModel_qs:
                     stscrdModel_qs.delete()
                     stscrdModel_qs.delete()
 
 
         except Exception as e:
         except Exception as e:
-            # print(e)
+            print(e)
             return response.json(500, repr(e))
             return response.json(500, repr(e))
         else:
         else:
             return response.json(0)
             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)

+ 16 - 2
Controller/EquipmentManager.py

@@ -387,6 +387,20 @@ def addInterface(request):
                 # # 判断是否有已绑定用户
                 # # 判断是否有已绑定用户
                 # if is_bind:
                 # if is_bind:
                 #     return response.json(15)
                 #     return response.json(15)
+
+                main_exist = Device_Info.objects.filter(UID=UID, primaryUserID='',primaryMaster__isnull='')
+                pk = CommonService.getUserID(getUser=False)
+                primaryMaster = ''
+                primaryUserID = ''
+                if not main_exist:
+
+                    duq = Device_User.objects.filter(userID=userID).values('username')
+                    if duq[0].exists():
+                        username = duq[0]['username']
+                        primaryMaster = username
+                        primaryUserID = userID
+
+
                 try:
                 try:
                     # 判断是否有用户绑定
                     # 判断是否有用户绑定
                     nowTime = int(time.time())
                     nowTime = int(time.time())
@@ -403,10 +417,10 @@ def addInterface(request):
                         UidSetModel.objects.create(**uid_set_create_dict)
                         UidSetModel.objects.create(**uid_set_create_dict)
                     else:
                     else:
                         us_qs.update(nickname=NickName)
                         us_qs.update(nickname=NickName)
-                    pk = CommonService.getUserID(getUser=False)
+
                     userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
                     userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
                                              NickName=NickName, View_Account=View_Account,
                                              NickName=NickName, View_Account=View_Account,
-                                             View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex)
+                                             View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex, primaryUserID=primaryUserID, primaryMaster=primaryMaster)
                     userDevice.save()
                     userDevice.save()
                     # redisObj = RedisObject(db=8)
                     # redisObj = RedisObject(db=8)
                     # redisObj.del_data(key='uid_qs_' + userID)
                     # redisObj.del_data(key='uid_qs_' + userID)

+ 159 - 3
Controller/EquipmentManagerV3.py

@@ -11,7 +11,8 @@ from django.db.models import Q
 from django.views.generic.base import View
 from django.views.generic.base import View
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, BASE_DIR
-from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel
+from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel, \
+    Device_User
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
@@ -46,6 +47,8 @@ class EquipmentManagerV3(View):
                 return self.do_query(userID, request_dict, response)
                 return self.do_query(userID, request_dict, response)
             elif operation == 'modify':
             elif operation == 'modify':
                 return self.do_modify(userID, request_dict, response, request)
                 return self.do_modify(userID, request_dict, response, request)
+            elif operation == 'fuzzyQuery':
+                return self.do_fuzzy_query(userID, request_dict, response)
             else:
             else:
                 return response.json(414)
                 return response.json(414)
         else:
         else:
@@ -85,6 +88,18 @@ class EquipmentManagerV3(View):
                     # # 判断是否有已绑定用户
                     # # 判断是否有已绑定用户
                     # if is_bind:
                     # if is_bind:
                     #     return response.json(15)
                     #     return response.json(15)
+
+                    main_exist = Device_Info.objects.filter(UID=UID, primaryUserID='', primaryMaster__isnull='')
+                    pk = CommonService.getUserID(getUser=False)
+                    primaryMaster = ''
+                    primaryUserID = ''
+                    if not main_exist:
+
+                        duq = Device_User.objects.filter(userID=userID).values('username')
+                        if duq[0].exists():
+                            username = duq[0]['username']
+                            primaryMaster = username
+                            primaryUserID = userID
                     try:
                     try:
                         # 判断是否有用户绑定
                         # 判断是否有用户绑定
                         nowTime = int(time.time())
                         nowTime = int(time.time())
@@ -101,10 +116,10 @@ class EquipmentManagerV3(View):
                             UidSetModel.objects.create(**uid_set_create_dict)
                             UidSetModel.objects.create(**uid_set_create_dict)
                         else:
                         else:
                             us_qs.update(nickname=NickName)
                             us_qs.update(nickname=NickName)
-                        pk = CommonService.getUserID(getUser=False)
+
                         userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
                         userDevice = Device_Info(id=pk, userID_id=userID, UID=UID,
                                                  NickName=NickName, View_Account=View_Account,
                                                  NickName=NickName, View_Account=View_Account,
-                                                 View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex)
+                                                 View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex, primaryUserID=primaryUserID, primaryMaster=primaryMaster)
                         userDevice.save()
                         userDevice.save()
 
 
                         if not us_qs.exists():
                         if not us_qs.exists():
@@ -375,6 +390,147 @@ class EquipmentManagerV3(View):
         else:
         else:
             return response.json(tko.code)
             return response.json(tko.code)
 
 
+    def do_fuzzy_query(self, userID, request_dict, response):
+        fuzzy = request_dict.get('fuzzy', None)
+        page = request_dict.get('page', None)
+        line = request_dict.get('line', None)
+
+        if page and line:
+            page = int(page)
+            line = int(line)
+            device_qs = Device_Info.objects.filter(userID=userID)
+            device_qs = device_qs.filter(~Q(isExist=2))
+            if device_qs.exists():
+                if fuzzy:
+                    device_qs = device_qs.filter(Q(UID__contains=fuzzy) | Q(NickName__contains=fuzzy)).values('id', 'userID', 'NickName', 'UID', 'View_Account',
+                               'View_Password', 'ChannelIndex', 'Type', 'isShare',
+                               'primaryUserID', 'primaryMaster', 'data_joined',
+                               'version', 'isVod', 'isExist', 'NotificationMode')
+
+                dvls = CommonService.qs_to_list(device_qs)
+                uid_list = []
+                for dvl in dvls:
+                    uid_list.append(dvl['UID'])
+                ubqs = UID_Bucket.objects.filter(uid__in=uid_list). \
+                    values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+                upqs = UID_Preview.objects.filter(uid__in=uid_list).order_by('channel').values('id', 'uid', 'channel')
+                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
+                nowTime = int(time.time())
+                data = []
+                # 设备拓展信息表
+                us_qs = UidSetModel.objects.filter(uid__in=uid_list).values('id', 'uid', 'version', 'nickname', 'ucode',
+                                                                            'detect_status', 'detect_group',
+                                                                            'detect_interval',
+                                                                            'region_alexa', 'is_alexa', 'deviceModel',
+                                                                            'TimeZone', 'TimeStatus', 'SpaceUsable',
+                                                                            'SpaceSum', 'MirrorType', 'RecordType',
+                                                                            'OutdoorModel', 'WIFIName', 'isDetector',
+                                                                            'DetectorRank')
+                uv_dict = {}
+                for us in us_qs:
+                    uv_dict[us['uid']] = {
+                        'version': us['version'],
+                        'nickname': us['nickname'],
+                        'ucode': us['ucode'],
+                        'detect_interval': us['detect_interval'],
+                        'detect_group': us['detect_group'],
+                        'detect_status': us['detect_status'],
+                        'region_alexa': us['region_alexa'],
+                        'is_alexa': us['is_alexa'],
+                        'deviceModel': us['deviceModel'],
+                        'TimeZone': us['TimeZone'],
+                        'TimeStatus': us['TimeStatus'],
+                        'SpaceUsable': us['SpaceUsable'],
+                        'SpaceSum': us['SpaceSum'],
+                        'MirrorType': us['MirrorType'],
+                        'RecordType': us['RecordType'],
+                        'OutdoorModel': us['OutdoorModel'],
+                        'WIFIName': us['WIFIName'],
+                        'isDetector': us['isDetector'],
+                        'DetectorRank': us['DetectorRank']
+                    }
+                    # 从uid_channel里面取出通道配置信息
+                    ucs_qs = UidChannelSetModel.objects.filter(uid__id=us['id']).values()
+                    channels = []
+                    for ucs in ucs_qs:
+                        channel = {
+                            'channel': ucs['channel'],
+                            'pir_audio': ucs['pir_audio'],
+                            'mic_audio': ucs['mic_audio'],
+                            'battery_status': ucs['battery_status'],
+                            'battery_level': ucs['battery_level'],
+                            'sleep_status': ucs['sleep_status'],
+                            'sleep_time': ucs['sleep_time'],
+                            'light_night_model': ucs['light_night_model'],
+                            'light_alarm_type': ucs['light_alarm_type'],
+                            'light_alarm_level': ucs['light_alarm_level'],
+                            'light_alarm_man_en': ucs['light_alarm_man_en'],
+                            'light_alarm_vol': ucs['light_alarm_vol'],
+                            'light_long_light': ucs['light_long_light']
+                        }
+                        channels.append(channel)
+                    uv_dict[us['uid']]['channels'] = channels
+
+                for p in dvls:
+                    p['vod'] = []
+                    for dm in ubqs:
+                        if p['UID'] == dm['uid']:
+                            if dm['endTime'] > nowTime:
+                                p['vod'].append(dm)
+                    p['preview'] = []
+                    for up in upqs:
+                        if p['UID'] == up['uid']:
+                            obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=up['uid'], channel=up['channel'])
+                            img_sign = bucket.sign_url('GET', obj, 300)
+                            p['preview'].append(img_sign)
+                    p_uid = p['UID']
+                    if p_uid in uv_dict:
+                        # 设备版本号
+                        p['uid_version'] = uv_dict[p_uid]['version']
+                        p['ucode'] = uv_dict[p_uid]['ucode']
+                        p['detect_interval'] = uv_dict[p_uid]['detect_interval']
+                        p['detect_status'] = uv_dict[p_uid]['detect_status']
+                        p['detect_group'] = uv_dict[p_uid]['detect_group']
+                        p['region_alexa'] = uv_dict[p_uid]['region_alexa']
+                        p['is_alexa'] = uv_dict[p_uid]['is_alexa']
+                        p['deviceModel'] = uv_dict[p_uid]['deviceModel']
+                        p['TimeZone'] = uv_dict[p_uid]['TimeZone']
+                        p['TimeStatus'] = uv_dict[p_uid]['TimeStatus']
+                        p['SpaceUsable'] = uv_dict[p_uid]['SpaceUsable']
+                        p['SpaceSum'] = uv_dict[p_uid]['SpaceSum']
+                        p['MirrorType'] = uv_dict[p_uid]['MirrorType']
+                        p['RecordType'] = uv_dict[p_uid]['RecordType']
+                        p['OutdoorModel'] = uv_dict[p_uid]['OutdoorModel']
+                        p['WIFIName'] = uv_dict[p_uid]['WIFIName']
+                        p['isDetector'] = uv_dict[p_uid]['isDetector']
+                        p['DetectorRank'] = uv_dict[p_uid]['DetectorRank']
+                        p['channels'] = uv_dict[p_uid]['channels']
+                        # 设备昵称 调用影子信息昵称,先阶段不可
+                        if uv_dict[p_uid]['nickname']:
+                            p['NickName'] = uv_dict[p_uid]['nickname']
+                    else:
+                        # 设备版本号
+                        p['uid_version'] = ''
+                        p['ucode'] = ''
+                    data.append(p)
+                result = data
+                items = []
+                # print('缓存分页')
+                for index, item in enumerate(result):
+                    if (page - 1) * line <= index:
+                        if index < page * line:
+                            # 加密
+                            item['View_Password'] = self.encrypt_pwd(item['View_Password'])
+                            print(item)
+                            items.append(item)
+                print(items)
+                return response.json(0, items)
+            else:
+                return response.json(0, [])
+        else:
+            return response.json(444)
+
     # 加密
     # 加密
     def encrypt_pwd(self,userPwd):
     def encrypt_pwd(self,userPwd):
         for i in range(1, 4):
         for i in range(1, 4):

+ 8 - 14
Object/ResponseObject.py

@@ -74,10 +74,6 @@ class ResponseObject(object):
             10004: 'The request method is incorrect. Please contact the developer',
             10004: 'The request method is incorrect. Please contact the developer',
             10005: 'Wrong configuration, wrong customer number',
             10005: 'Wrong configuration, wrong customer number',
             10006: 'Configuration error. The path value is incorrect',
             10006: 'Configuration error. The path value is incorrect',
-            10014: 'Cloud storage not purchased',
-            10015: 'The cloud storage has expired',
-            10016: 'Cloud storage package does not exist',
-            10017: 'The switched cloud storage package ID cannot be the same as the one in use',
         }
         }
         data_cn = {
         data_cn = {
             0: '成功',
             0: '成功',
@@ -147,16 +143,14 @@ class ResponseObject(object):
             10005: '配置错误,客户编号这个值是错误的',
             10005: '配置错误,客户编号这个值是错误的',
             10006: '配置错误,路径这个值是错误的',
             10006: '配置错误,路径这个值是错误的',
             10007: '此设备不是体验套餐,无法重置',
             10007: '此设备不是体验套餐,无法重置',
-            10008: '用户已拥有此设备,无法转移',
-            10009: '不是同一账户下的设备,无法转移',
-            10010: '原设备正在正常使用云存储服务,无法转移',
-            10011: '接受转移设备未开通过云存储服务,无法转移',
-            10012: '接受转移设备套餐未过期,无法转移',
-            10013: '体验套餐无法转移',
-            10014: '云存未购买',
-            10015: '云存已过期',
-            10016: '云存套餐不存在',
-            10017: '切换的云存套餐ID不能与正在使用中的相同',
+            10008: '用户没有此设备,无法转移',
+            10009: '用户已拥有此设备,无法转移',
+            10010: '不是同一账户下的设备,无法转移',
+            10011: '原设备正在正常使用云存储服务,无法转移',
+            # 10012: '接受转移设备未开通过云存储服务,无法转移',
+            10013: '接受转移设备套餐未过期,无法转移',
+            10014: '体验套餐无法转移',
+            10015: '原设备套餐已过期,无法转移',
         }
         }
         if self.lang == 'cn':
         if self.lang == 'cn':
             msg = data_cn
             msg = data_cn