|
@@ -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)
|