Pārlūkot izejas kodu

Merge branch 'dev' into lang

# Conflicts:
#	Controller/CloudStorage.py
lang 4 gadi atpakaļ
vecāks
revīzija
9b1edd8658

+ 1 - 1
Ansjer/config_formal.py

@@ -17,7 +17,7 @@ SERVER_DOMAIN = 'http://www.dvema.com/'
 DOMAIN_HOST = 'www.dvema.com'
 SERVER_HOST = 'localhost'
 PAYPAL_CRD = {
-    "mode": "sandbox",  # sandbox or live
+    "mode": "live",  # sandbox or live
     "client_id": "AdSRd6WBn-qLl9OiQHQuNYTDFSx0ZX0RUttqa58au8bPzoGYQUrt8bc6591RmH8_pEAIPijdvVYSVXyI",
     "client_secret": "ENT-J08N3Fw0B0uAokg4RukljAwO9hFHPf8whE6-Dwd8oBWJO8AWMgpdTKpfB1pOy89t4bsFEzMWDowm"
 }

+ 10 - 8
Controller/CloudStorage.py

@@ -411,10 +411,10 @@ class CloudStorageView(View):
 
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False).values('vodPrimaryUserID',
                                                                                             'vodPrimaryMaster')
-        # if not dv_qs.exists():
-        #     return response.json(12)
-        # if dv_qs[0]['vodPrimaryUserID'] != '' and dv_qs[0]['vodPrimaryUserID'] != userID:
-        #     return response.json(10034)
+        if not dv_qs.exists():
+            return response.json(12)
+        if dv_qs[0]['vodPrimaryUserID'] != userID:
+            return response.json(10034)
         now_time = int(time.time())
         bv_qs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time).values('bucket_id').order_by('addTime')
         if not bv_qs.exists():
@@ -522,8 +522,9 @@ class CloudStorageView(View):
         channel = request_dict.get('channel', None)
         if not uid or not status or not channel:
             return response.json(444, 'uid,status,channel')
-        dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID, isShare=False)
-        if not dvqs.exists():
+        dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
+            .values('vodPrimaryUserID')
+        if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(12)
         ubqs = UID_Bucket.objects.filter(channel=channel, uid=uid).order_by('addTime')
         if not ubqs.exists():
@@ -795,8 +796,8 @@ class CloudStorageView(View):
             if not orderID:
                 red_url = "{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
                 return HttpResponseRedirect(red_url)
-            else:
-                order_qs.update(status=10)
+            # else:
+            #     order_qs.update(status=9)
             paypalrestsdk.configure(PAYPAL_CRD)
             # ID of the payment. This ID is provided when creating payment.
             payment = paypalrestsdk.Payment.find(paymentId)
@@ -853,6 +854,7 @@ class CloudStorageView(View):
             red_url = "{SERVER_DOMAIN}web/paid2/success.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
             return HttpResponseRedirect(red_url)
         except Exception as e:
+            print(repr(e))
             if order_qs:
                 order_qs.update(status=10)
 

+ 35 - 19
Controller/CloudTest.py

@@ -7,12 +7,12 @@
 """
 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, StsCrdModel, VodHlsModel
-from Object.ResponseObject import ResponseObject
 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):
@@ -49,34 +49,41 @@ class cloudTestView(View):
     def deviceTransfer(self, request_dict, response):
         # 设备转移
         oldUserID = request_dict.get("oldUserID", None)
-        loginName = request_dict.get("username", 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)
+            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)
-            # 登录方式可能为用户名,手机号或邮箱登录
-            deviceUser_qs = Device_User.objects.filter(
-                Q(username=loginName) | Q(phone=loginName) | Q(userEmail=loginName)).values('userID')
-            newUserID = deviceUser_qs[0]['userID']
             # 判断新用户的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)
-            # 分享的设备不能转移
-            isShare = Device_Info.objects.get(userID_id=oldUserID, UID=uid).isShare
-            if isShare:
-                return response.json(10015)
-            # 获取旧设备的username
-            oldUserName = Device_User.objects.get(userID=oldUserID).username
+
+            # 获取新设备的username
+            newUserName = Device_User.objects.get(userID=newUserID).username
+            vodPrimaryUserID = newUserID
+            vodPrimaryMaster = newUserName
+
             with transaction.atomic():
-                # 更新设备信息
-                old_deviceInfo_qs.update(userID=newUserID, vodPrimaryUserID=newUserID, vodPrimaryMaster=oldUserName)
+                # 更新旧设备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)
@@ -92,11 +99,18 @@ class cloudTestView(View):
 
         try:
             # 查询两个UID是否在同一账号下
-            old_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=old_uid).values('isExist')
+            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)
@@ -116,12 +130,14 @@ class cloudTestView(View):
                 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)

+ 23 - 15
Controller/EquipmentManager.py

@@ -363,6 +363,8 @@ def addInterface(request):
     View_Password = request_dict.get('View_Password', '')
     Type = request_dict.get('Type', None)
     ChannelIndex = request_dict.get('ChannelIndex', None)
+    isCheckMainUser = request_dict.get('isCheckMainUser', None)
+    isMainUserExists = False
     if all([UID, NickName, View_Account, Type, ChannelIndex]):
         tko = TokenObject(token)
         response.lang = tko.lang
@@ -383,23 +385,21 @@ def addInterface(request):
                     asy.start()
                     return response.json(10, 'illegal uid: {uid}'.format(uid=UID))
                 pass
-                # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
-                # # 判断是否有已绑定用户
-                # if is_bind:
-                #     return response.json(15)
+                is_bind = Device_Info.objects.filter(UID=UID, isShare=False).values('userID__userID')
+                # 判断是否有已绑定用户
+                if is_bind and isCheckMainUser == '1':
+                    isMainUserExists = True
+
+                userName = Device_User.objects.get(userID=userID).username
+                main_exist = Device_Info.objects.filter(UID=UID)
+                main_exist = main_exist.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID', 'vodPrimaryMaster')
+                vodPrimaryUserID = userID
+                vodPrimaryMaster = userName
+                if main_exist.exists():
+                    vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
+                    vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
 
-                main_exist = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
                 pk = CommonService.getUserID(getUser=False)
-                vodPrimaryUserID = ''
-                vodPrimaryMaster = ''
-                if not main_exist:
-
-                    duq = Device_User.objects.filter(userID=userID).values('username')
-                    if duq.exists():
-                        username = duq[0]['username']
-                        vodPrimaryUserID = username
-                        vodPrimaryMaster = userID
-
 
                 try:
                     # 判断是否有用户绑定
@@ -422,6 +422,8 @@ def addInterface(request):
                                              NickName=NickName, View_Account=View_Account,
                                              View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex, vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
                     userDevice.save()
+                    Device_Info.objects.filter(UID=UID).update(vodPrimaryUserID=vodPrimaryUserID,
+                                                               vodPrimaryMaster=vodPrimaryMaster)
                     # redisObj = RedisObject(db=8)
                     # redisObj.del_data(key='uid_qs_' + userID)
                 except Exception as e:
@@ -439,6 +441,8 @@ def addInterface(request):
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                     res = dvql[0]
                     res['vod'] = list(ubqs)
+                    if isMainUserExists:
+                        res['isMainUserExists'] = 1
                     return response.json(0, res)
 
 
@@ -771,6 +775,10 @@ def queryInterface(request):
         dvls = CommonService.qs_to_list(dvql)
         uid_list = []
         for dvl in dvls:
+            if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                dvl['isPrimaryUser'] = 1
+            else:
+                dvl['isPrimaryUser'] = 0
             uid_list.append(dvl['UID'])
             # if dvl['isShare'] is False:
             #     uid_list.append(dvl['UID'])

+ 136 - 5
Controller/EquipmentManagerV2.py

@@ -8,7 +8,7 @@ from django.db.models import Q
 from django.views.generic.base import View
 
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
-from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel
+from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel, UidChannelSetModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -152,6 +152,11 @@ class EquipmentManagerV2(View):
             dvls = CommonService.qs_to_list(dvql)
             uid_list = []
             for dvl in dvls:
+                if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                    dvl['isPrimaryUser'] = 1
+                else:
+                    dvl['isPrimaryUser'] = 0
+
                 uid_list.append(dvl['UID'])
                 # if dvl['isShare'] is False:
                 #     uid_list.append(dvl['UID'])
@@ -202,7 +207,133 @@ class EquipmentManagerV2(View):
 
     def do_query_reset(self, userID, request_dict, response):
         dvqs = Device_Info.objects.filter(userID_id=userID, isExist=2)
-        dvql = dvqs.values \
-            ('id', 'NickName', 'UID', 'ChannelIndex', 'Type', 'isShare')
-        res = CommonService.qs_to_list(dvql)
-        return response.json(0, res)
+        dvql = dvqs.values('id', 'userID', 'NickName', 'UID', 'View_Account',
+                           'View_Password', 'ChannelIndex', 'Type', 'isShare',
+                           'primaryUserID', 'primaryMaster', 'data_joined', 'vodPrimaryUserID', 'vodPrimaryMaster',
+                           'userID__userEmail',
+                           'version', 'isVod', 'isExist', 'NotificationMode')
+        dvls = CommonService.qs_to_list(dvql)
+        uid_list = []
+        for dvl in dvls:
+            if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                dvl['isPrimaryUser'] = 1
+            else:
+                dvl['isPrimaryUser'] = 0
+
+            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('channel', 'pir_audio', 'mic_audio',
+                                                                                'battery_status', 'battery_level',
+                                                                                'sleep_status', 'sleep_time',
+                                                                                'light_night_model',
+                                                                                'light_alarm_type',
+                                                                                'light_alarm_level',
+                                                                                'light_alarm_man_en',
+                                                                                'light_alarm_vol',
+                                                                                'light_long_light'
+                                                                                )
+            channels = []
+            for ucs in ucs_qs:
+                channels_dict = {
+                    '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(channels_dict)
+            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
+
+        return response.json(0, result)

+ 41 - 15
Controller/EquipmentManagerV3.py

@@ -50,6 +50,8 @@ class EquipmentManagerV3(View):
                 return self.do_modify(userID, request_dict, response, request)
             elif operation == 'fuzzyQuery':
                 return self.do_fuzzy_query(userID, request_dict, response)
+            elif operation == 'mainUserDevice':
+                return self.do_mainUserDevice( request_dict, response)
             else:
                 return response.json(414)
         else:
@@ -65,7 +67,8 @@ class EquipmentManagerV3(View):
         View_Password = self.decode_pwd(View_Password)
         Type = request_dict.get('Type', None)
         ChannelIndex = request_dict.get('ChannelIndex', None)
-
+        isCheckMainUser = request_dict.get('isCheckMainUser', None)
+        isMainUserExists = False
         if all([UID, NickName, View_Account, Type, ChannelIndex]):
             tko = TokenObject(token)
             response.lang = tko.lang
@@ -85,22 +88,23 @@ class EquipmentManagerV3(View):
                                                args=(CommonService.get_ip_address(request), userID, 'addV3'))
                         asy.start()
                         return response.json(10, 'illegal uid: {uid}'.format(uid=UID))
-                    # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
-                    # # 判断是否有已绑定用户
-                    # if is_bind:
-                    #     return response.json(15)
+                    is_bind = Device_Info.objects.filter(UID=UID, isShare=False).values('userID__userID')
+                    # 判断是否有已绑定用户
+                    if is_bind and isCheckMainUser == '1':
+                        isMainUserExists = True
+
+
+                    userName = Device_User.objects.get(userID=userID).username
+                    main_exist = Device_Info.objects.filter(UID=UID)
+                    main_exist = main_exist.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID', 'vodPrimaryMaster')
+                    vodPrimaryUserID = userID
+                    vodPrimaryMaster = userName
+                    if main_exist.exists():
+                        vodPrimaryUserID = main_exist[0]['vodPrimaryUserID']
+                        vodPrimaryMaster = main_exist[0]['vodPrimaryMaster']
 
-                    main_exist = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
                     pk = CommonService.getUserID(getUser=False)
-                    vodPrimaryUserID = ''
-                    vodPrimaryMaster = ''
-                    if not main_exist:
-
-                        duq = Device_User.objects.filter(userID=userID).values('username')
-                        if duq.exists():
-                            username = duq[0]['username']
-                            vodPrimaryUserID = userID
-                            vodPrimaryMaster = username
+
                     try:
                         # 判断是否有用户绑定
                         nowTime = int(time.time())
@@ -123,6 +127,8 @@ class EquipmentManagerV3(View):
                                                  View_Password=View_Password, Type=Type, ChannelIndex=ChannelIndex,
                                                  vodPrimaryUserID=vodPrimaryUserID, vodPrimaryMaster=vodPrimaryMaster)
                         userDevice.save()
+                        Device_Info.objects.filter(UID=UID).update(vodPrimaryUserID=vodPrimaryUserID,
+                                                                       vodPrimaryMaster=vodPrimaryMaster)
 
                         if not us_qs.exists():
                             us_qs = UidSetModel.objects.filter(uid=UID)
@@ -150,6 +156,9 @@ class EquipmentManagerV3(View):
                             values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                         res = dvql[0]
                         res['vod'] = list(ubqs)
+
+                        if isMainUserExists:
+                            res['isMainUserExists'] = 1
                         return response.json(0, res)
 
                 else:
@@ -256,7 +265,13 @@ class EquipmentManagerV3(View):
             dvls = CommonService.qs_to_list(dvql)
             uid_list = []
             for dvl in dvls:
+                if dvl['primaryUserID'] and dvl['id'] == dvl['primaryUserID']:
+                    dvl['isPrimaryUser'] = 1
+                else:
+                    dvl['isPrimaryUser'] = 0
+
                 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')
@@ -583,3 +598,14 @@ class EquipmentManagerV3(View):
                 # 去前3位,后3位
                 password = password[3:-3]
         return password
+
+    def do_mainUserDevice(self, request_dict, response):
+        UID = request_dict.get('UID')
+        dvq = Device_Info.objects.filter(UID=UID)
+        dvq = dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
+        qs = {}
+        if dvq.exists():
+            qs = Device_User.objects.filter(userID=dvq[0]['vodPrimaryUserID']).values('userID', 'NickName', 'username', 'userEmail', 'phone')
+            qs = CommonService.qs_to_list(qs)
+
+        return response.json(0, qs)

+ 6 - 2
Controller/VoicePromptController.py

@@ -145,14 +145,18 @@ class VoicePromptView(View):
                 uid = voice_qs[0].uid
                 device_qs = Device_Info.objects.filter(UID=uid, userID=userID)
                 if device_qs.exists():
+                    channel = voice_qs[0].channel
+                    filename = voice_qs[0].filename
                     voice_qs.delete()
                     auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-                    bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
-                    obj = 'voice_prompt/{uid}/{channel}/'.format(uid=uid, channel=voice_qs[0].channel) + voice_qs[0].filename
+                    bucket = oss2.Bucket(auth, 'http://oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
+                    obj = 'voice_prompt/{uid}/{channel}/'.format(uid=uid, channel=channel) + filename
                     bucket.delete_object(obj)
                     return response.json(0)
                 else:
                     return response.json(404)
+            else:
+                return response.json(173)
         else:
             return response.json(444)
 

+ 4 - 1
Object/ResponseObject.py

@@ -90,6 +90,8 @@ class ResponseObject(object):
             10034: 'Non device primary users cannot view cloud storage',
             10035: 'Non device primary users cannot experience cloud storage',
             10036: 'Non device primary users cannot exchange for cloud storage',
+            10037: 'Non device primary user cannot transfer device',
+            10038: 'Non device primary user cannot transfer packages',
         }
         data_cn = {
             0: '成功',
@@ -174,7 +176,8 @@ class ResponseObject(object):
             10034: '非设备主用户无法查看云存',
             10035: '非设备主用户无法体验云存',
             10036: '非设备主用户无法兑换云存',
-
+            10037: '非设备主用户无法转移设备',
+            10038: '非设备主用户无法转移套餐',
         }
         if self.lang == 'cn':
             msg = data_cn

+ 2 - 1
Object/WechatPayObject.py

@@ -104,7 +104,7 @@ class WechatPayObject:
         else:
             return 'failure'
 
-    def re_finall(self):
+    def re_finall(self,orderid = None):
         """得到prepay_id后再次签名,返回给终端参数.
         """
         self.get_prepay_id()
@@ -121,6 +121,7 @@ class WechatPayObject:
         self.get_sign(sign_again_params)
         sign_again_params['sign'] = sign_again_params['sign']
         sign_again_params['packageId'] = sign_again_params['package']
+        sign_again_params['out_trade_no'] = orderid
         return sign_again_params  # 返回给app
 
     def get_notifypay(self, data):