浏览代码

Merge branch 'pzb' of http://192.168.136.45:3000/SERVER/AnsjerServer into pzb

pzb 6 年之前
父节点
当前提交
dbf4e1aae0
共有 3 个文件被更改,包括 54 次插入12 次删除
  1. 53 10
      Controller/DeviceShare.py
  2. 0 1
      Model/models.py
  3. 1 1
      Object/TokenObject.py

+ 53 - 10
Controller/DeviceShare.py

@@ -20,6 +20,10 @@ from Object.TokenObject import TokenObject
 from Ansjer.config import SERVER_DOMAIN
 import jwt
 from Service.CommonService import CommonService
+from Model.models import UID_Bucket
+from Object.RedisObject import RedisObject
+import time
+import json
 
 
 class DeviceShareView(View):
@@ -59,20 +63,46 @@ class DeviceShareView(View):
 
     def do_generate_token_url(self, userID, request_dict, response):
         UID = request_dict.get('UID', None)
-        dvqs = Device_Info.objects.filter(UID=UID, userID_id=userID, isShare=False)
-        if dvqs.exists():
+        dvqs = Device_Info.objects.filter(UID=UID, userID_id=userID, isShare=False).values('NickName')
+        userqs = Device_User.objects.filter(userID=userID).values('username', 'userEmail', 'phone')
+        if dvqs:
             data = {'sharer': userID, 'UID': UID}
-            share_token = jwt.encode(data, 'jwt.#^^&', algorithm='HS256')
-            share_url = '{SERVER_DOMAIN}deviceShare/confirm?shareToken={shareToken}' \
-                .format(SERVER_DOMAIN=SERVER_DOMAIN, shareToken=share_token.decode('utf-8'))
-            return response.json(0, {'share_url': share_url})
+            share_token = jwt.encode(data, '.#^^&', algorithm='HS256').decode('utf-8')
+            # redisObj = RedisObject()
+            # share_token = str(int(time.time())) + CommonService.RandomStr(8)
+            # if not redisObj.set_data(key=share_token, val=json.dumps(data),expire=3600):
+            #     return response.json(10,'生成失败')
+            if userqs[0]['username']:
+                share_user = userqs[0]['username']
+            elif userqs[0]['userEmail']:
+                share_user = userqs[0]['userEmail']
+            elif userqs[0]['phone']:
+                share_user = userqs[0]['phone']
+            else:
+                share_user = ''
+            return response.json(0, {
+                'shareToken': share_token,
+                'deviceName': dvqs[0]['NickName'],
+                'shareUser': share_user,
+            })
+
         else:
             return response.json(173)
 
     def do_confirm(self, userID, request_dict, response):
         shareToken = request_dict.get('shareToken', None)
         if shareToken is not None:
-            data = jwt.decode(shareToken, 'jwt.#^^&', algorithms='HS256')
+            try:
+                data = jwt.decode(shareToken, '.#^^&', algorithms='HS256')
+            except Exception as e:
+                return response.json(10,repr(e))
+            # redisObj = RedisObject()
+            # data_str = redisObj.get_data(key=shareToken)
+            # if not data_str:
+            #     return response.json(404)
+            # else:
+            #     redisObj.del_data(key=shareToken)
+            # data = json.loads(data_str)
             # 分享者userID
             sharer = data.get('sharer', None)
             # 分享的uid
@@ -82,7 +112,8 @@ class DeviceShareView(View):
                 try:
                     sharerUser = Device_User.objects.get(userID=sharer)
                     sharerDvqs = Device_Info.objects.get(userID_id=sharer, UID=UID)
-                    sharerDvqs.id = CommonService.getUserID(getUser=False)
+                    deviceId = CommonService.getUserID(getUser=False)
+                    sharerDvqs.id = deviceId
                     sharerDvqs.userID_id = userID
                     sharerDvqs.isShare = True
                     sharerDvqs.primaryUserID = sharer
@@ -101,7 +132,19 @@ class DeviceShareView(View):
                 except Exception as e:
                     return response.json(10, repr(e))
                 else:
-                    return response.json(0)
+                    dvqs = Device_Info.objects.filter(id=deviceId).values('id', 'userID', 'NickName', 'UID',
+                                                                          'View_Account',
+                                                                          'View_Password', 'ChannelIndex', 'Type',
+                                                                          'isShare',
+                                                                          'primaryUserID', 'primaryMaster',
+                                                                          'data_joined', 'version',
+                                                                          'isVod', 'isExist')
+                    dvql = CommonService.qs_to_list(dvqs)
+                    ubqs = UID_Bucket.objects.filter(uid=UID). \
+                        values('bucket__content', 'status', 'channel', 'endTime', 'uid')
+                    res = dvql[0]
+                    res['vod'] = list(ubqs)
+                    return response.json(0, res)
             else:
                 return response.json(174)
         else:
@@ -114,7 +157,7 @@ class DeviceShareView(View):
         UID = request_dict.get('UID', None)
         if UID is not None:
             # 查询分享获得的用户
-            qs = Device_Info.objects.filter(UID=UID, isShare=True, primaryUserID=userID). \
+            qs = Device_Info.objects.filter(UID=UID, isShare=True, primaryUserID=userID, isExist=1). \
                 values('userID__NickName', 'userID__username', 'userID__userEmail', 'userID__phone', 'id')
             data = []
             # print(qs)

+ 0 - 1
Model/models.py

@@ -408,7 +408,6 @@ class Store_Meal(models.Model):
         ordering = ('id',)
 
 
-
 class Equipment_Version(models.Model):
     eid = models.CharField(blank=True, max_length=32, primary_key=True)
     ESN = models.CharField(blank=True, max_length=32, verbose_name=u'设备规格名称')

+ 1 - 1
Object/TokenObject.py

@@ -23,7 +23,7 @@ class TokenObject:
         if token == 'local':
             token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTI0NDk1MjJ9.zM8sC7aHApATqDR0U4jbxWbYlQpOzN817-dpNGVl5hc'
         if token == 'test':
-            token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJleHAiOjE1NTE5Mjc1MDQsImxhbmciOiJlbiJ9.psYrZybhAQmak3I7ryffySsfccoIg1m-ey00JgjyNoo'
+            token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJ1c2VySUQiOiIxNTE1NjQyNjIzMzc5Mzk1MTM4MDAxMzgwMDEiLCJsYW5nIjoiZW4iLCJleHAiOjE1NTI2MTIxOTF9.sO8BtSclN6B-qwqNmYWbICatHYEtyMdoqzZ0hcOSsmg'
         self.token = token
         self.lang = None
         self.userID = None