Browse Source

使用缓存分享uid

chenjunkai 6 years ago
parent
commit
95805a9091
2 changed files with 39 additions and 26 deletions
  1. 39 25
      Controller/DeviceShare.py
  2. 0 1
      Model/models.py

+ 39 - 25
Controller/DeviceShare.py

@@ -21,6 +21,10 @@ 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):
 
@@ -60,33 +64,43 @@ 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).values('NickName')
-        userqs = Device_User.objects.filter(userID=userID).values('username','userEmail','phone')
+        userqs = Device_User.objects.filter(userID=userID).values('username', 'userEmail', 'phone')
         if dvqs:
             data = {'sharer': userID, 'UID': UID}
-            share_token = jwt.encode(data, '.#^^&', 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})
-            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']
+            # share_token = jwt.encode(data, '.#^^&', algorithm='HS256').decode('utf-8')
+            redisObj = RedisObject()
+            share_token = str(int(time.time())) + CommonService.RandomStr(8)
+            if redisObj.set_data(key=share_token, val=json.dumps(data),expire=3600):
+                # 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})
+                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:
-                share_user = ''
-            return response.json(0, {
-                'shareToken': share_token.decode('utf-8'),
-                'deviceName': dvqs[0]['NickName'],
-                'shareUser': share_user,
-            })
+                return response.json(10,'生成失败')
         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, '.#^^&', algorithms='HS256')
+            # data = jwt.decode(shareToken, '.#^^&', algorithms='HS256')
+            redisObj = RedisObject()
+            data_str = redisObj.get_data(key=shareToken)
+            if not data_str:
+                return response.json(404)
+            data = json.loads(data_str)
             # 分享者userID
             sharer = data.get('sharer', None)
             # 分享的uid
@@ -117,12 +131,12 @@ class DeviceShareView(View):
                     return response.json(10, repr(e))
                 else:
                     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')
+                                                                          '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')
@@ -141,7 +155,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,isExist=1). \
+            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'设备规格名称')