Bläddra i källkod

修改接口缓存

pengzhibo168 5 år sedan
förälder
incheckning
09fa7eec5a
2 ändrade filer med 75 tillägg och 61 borttagningar
  1. 72 60
      Controller/EquipmentManagerV3.py
  2. 3 1
      Controller/UIDPreview.py

+ 72 - 60
Controller/EquipmentManagerV3.py

@@ -6,14 +6,14 @@ import traceback
 import oss2
 from django.db.models import Q
 from django.views.generic.base import View
-
+from Object.RedisObject import RedisObject
 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 Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.ModelService import ModelService
-
+import time,json
 
 class EquipmentManagerV3(View):
 
@@ -129,65 +129,77 @@ class EquipmentManagerV3(View):
         if page <= 0:
             return response.json(0)
         if tko.code == 0:
-            userID = tko.userID
-            dvqs = Device_Info.objects.filter(userID_id=userID)
-            # # 过滤已重置的设备
-            dvqs = dvqs.filter(~Q(isExist=2))
+            redisObj = RedisObject(db=8)
+            redis_value = redisObj.get_data(key=userID+userID)
+            if redis_value == False:
+                print('缓存不存在就开始添加到缓存')
+                userID = tko.userID
+                dvqs = Device_Info.objects.filter(userID_id=userID)
+                # # 过滤已重置的设备
+                dvqs = dvqs.filter(~Q(isExist=2))
 
-            if NickName:
-                dvqs = dvqs.filter(NickName__icontains=NickName)
-            if uid:
-                dvqs = dvqs.filter(UID=uid)
-            dvql = dvqs[(page - 1) * line:page * line]. \
-                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(dvql)
-            uid_list = []
-            for dvl in dvls:
-                uid_list.append(dvl['UID'])
-                # if dvl['isShare'] is False:
-                #     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('uid', 'version', 'nickname','ucode')
-            uv_dict = {}
-            for us in us_qs:
-                uv_dict[us['uid']] = {'version': us['version'], 'nickname': us['nickname'],'ucode':us['ucode']}
-            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']
-                    # 设备昵称 调用影子信息昵称,先阶段不可
-                    if uv_dict[p_uid]['nickname']:
-                        p['NickName'] = uv_dict[p_uid]['nickname']
-                else:
-                    # 设备版本号
-                    p['uid_version'] = ''
-                    p['ucode'] = ''
-                data.append(p)
-            return response.json(0, data)
+                if NickName:
+                    dvqs = dvqs.filter(NickName__icontains=NickName)
+                if uid:
+                    dvqs = dvqs.filter(UID=uid)
+                dvql = dvqs[(page - 1) * line:page * line]. \
+                    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(dvql)
+                uid_list = []
+                for dvl in dvls:
+                    uid_list.append(dvl['UID'])
+                    print(dvl['isShare']);
+                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('uid', 'version', 'nickname','ucode')
+                uv_dict = {}
+                for us in us_qs:
+                    uv_dict[us['uid']] = {'version': us['version'], 'nickname': us['nickname'],'ucode':us['ucode']}
+                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']
+                        # 设备昵称 调用影子信息昵称,先阶段不可
+                        if uv_dict[p_uid]['nickname']:
+                            p['NickName'] = uv_dict[p_uid]['nickname']
+                    else:
+                        # 设备版本号
+                        p['uid_version'] = ''
+                        p['ucode'] = ''
+                    data.append(p)
+                # 缓存时间为一个钟
+                redisObj.set_data(key=userID+userID, val=data, expire=3600)
+                return response.json(0, data)
+            else:
+                print('去缓存找数据')
+                redis_value = redis_value.replace("'", '"')
+                redis_value = redis_value.replace("True", 'true')
+                redis_value = redis_value.replace("False", 'false')
+                # 返回固定值
+                return response.json(0, json.loads(redis_value))
         else:
             return response.json(tko.code)
 

+ 3 - 1
Controller/UIDPreview.py

@@ -28,7 +28,7 @@ import time
 
 import oss2
 from django.views.generic.base import View
-
+from Object.RedisObject import RedisObject
 from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
 from Model.models import UID_Preview, Device_Info
 from Object.ResponseObject import ResponseObject
@@ -79,6 +79,8 @@ class UIDPreview(View):
             bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
 
             dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID)
+            redisObj = RedisObject(db=8)
+            redisObj.del_data(key=userID+userID)
             upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
             if dvqs.exists():
                 if upqs.exists():