Selaa lähdekoodia

跟进云存机制,后台web跟进

chenjunkai 6 vuotta sitten
vanhempi
commit
2c9e4508b4
5 muutettua tiedostoa jossa 20 lisäystä ja 24 poistoa
  1. 3 2
      Ansjer/test/oss.py
  2. 12 20
      Controller/CloudVod.py
  3. 2 1
      Controller/EquipmentManager.py
  4. 1 1
      Model/models.py
  5. 2 0
      Object/UidTokenObject.py

+ 3 - 2
Ansjer/test/oss.py

@@ -29,9 +29,10 @@ auth = Auth(accessid, accesskey)
 bucket = Bucket(auth, host, bucket_name)
 ######################
 # 生成oss签名url
-
 # url = bucket.sign_url('GET', 'vod/1543902118/1543902118.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
-url = bucket.sign_url('GET', 'FTSLL8HM437Z38WU111A/vod4/2018121001/1543902118/1543902118.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
+# 缩略图
+url = bucket.sign_url('GET', 'FTSLL8HM437Z38WU111A/vod4/2018121001/1543902118/ts0.ts', 60 * 60, params={'x-oss-process': 'video/snapshot,t_10000,m_fast,w_300'})
+# url = bucket.sign_url('GET', 'FTSLL8HM437Z38WU111A/vod4/2018121001/1543902118/1543902118.m3u8', 60 * 60, params={'x-oss-process': 'hls/sign'})
 # url = urllib.parse.unquote(url, encoding='utf-8', errors='replace')
 urllst = url.split('?')
 url_start = urllib.parse.unquote(urllst[0])

+ 12 - 20
Controller/CloudVod.py

@@ -195,17 +195,16 @@ class CloudVodView(View):
         channel = utko.channel
         print(channel)
         print(UID)
-        qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel", "end_time")
+        qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("channel", "end_time","rank__bucket__bucket")
         if not qs.exists():
             res = {'code': 403}
-            return JsonResponse(status=200,data=res)
+            return JsonResponse(status=200, data=res)
             # return response.json(10, '设备未购买')
         now_time = timezone.localtime(timezone.now())
         if now_time > qs[0]['end_time']:
             res = {'code': 403}
             return JsonResponse(status=200, data=res)
 
-
         now_time_stamp = int(time.time())
         oc_qs = OssCrdModel.objects.filter(uid=UID, channel=channel).values("addTime", "data")
         if oc_qs.exists():
@@ -216,18 +215,8 @@ class CloudVodView(View):
                 res = json.loads(oc_qs[0]["data"])
                 return JsonResponse(status=200, data=res)
         # 套餐id
-        rank = qs[0]['rank']
         storage = '{uid}/vod{channel}/'.format(uid=UID, channel=channel)
-
-        # bucket_vod_list = {1: 'cloudvod1', 2: 'cloudvod2', 3: 'cloudvod3'}
-        # bucket_name = bucket_vod_list[rank]
-        # endpoint = 'oss-cn-shenzhen.aliyuncs.com'
-        # access_key_id = 'LTAIyMkGfEdogyL9'
-        # access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
-        # region_id = 'cn-shenzhen'
-        # role_arn = 'acs:ram::1901342792446414:role/stsoss'
-        bucket_vod_list = OSS_BUCKET_VOD_LIST
-        bucket_name = bucket_vod_list[rank]
+        bucket_name = qs[0]['rank__bucket__bucket']
         endpoint = OSS_BUCKET_ENDPOINT
         access_key_id = OSS_STS_ACCESS_KEY
         access_key_secret = OSS_STS_ACCESS_SECRET
@@ -299,14 +288,13 @@ class CloudVodView(View):
         if not qs.exists():
             return response.json(13)
         uid = qs[0]['UID']
-        dm_qs = Device_Meal.objects.filter(uid=uid, channel=channel).values('rank', 'end_time')
+        dm_qs = Device_Meal.objects.filter(uid=uid, channel=channel).values('rank__bucket__bucket','end_time')
         now_time = timezone.localtime(timezone.now())
         if now_time > dm_qs[0]['end_time']:
             return response.json(10, '已过期')
         if not dm_qs.exists():
             return response.json(10, '未开通云存储')
-        rank = dm_qs[0]["rank"]
-        bucket_name = OSS_BUCKET_VOD_LIST[rank]
+        bucket_name = dm_qs[0]["rank__bucket__bucket"]
         auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
         bucket = oss2.Bucket(auth, OSS_BUCKET_ENDPOINT, bucket_name)
         vod_play_list = []
@@ -405,6 +393,7 @@ class CloudVodView(View):
     def do_store_palylist(self, request_dict, response):
         uidToken = request_dict.get('uidToken', None)
         time = request_dict.get('time', None)
+        sec = request_dict.get('sec',None)
         utko = UidTokenObject(uidToken)
         if utko.flag is False:
             return response.json(444, 'uidToken')
@@ -412,12 +401,15 @@ class CloudVodView(View):
         channel = utko.channel
         print(channel)
         print(UID)
-        qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
+        qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("channel", "rank__bucket__storeDay",
+                                                                                   "rank__bucket_id")
         if not qs.exists():
             return response.json(10, '设备未购买')
         nowTime = int(time)
-        # endTime = int(time)+
-        VodHlsModel.objects.create(uid=UID, channel=channel, time=nowTime)
+        storeDay = qs[0]['rank__bucket__storeDay']
+        bucketID = qs[0]['rank__bucket_id']
+        endTime = nowTime + storeDay * 86400
+        VodHlsModel.objects.create(uid=UID, channel=channel, time=nowTime, endTime=endTime, bucket_id=bucketID,sec=sec)
         return response.json(0)
 
     def do_get_playlist(self, request_dict, userID, response):

+ 2 - 1
Controller/EquipmentManager.py

@@ -35,7 +35,8 @@ def addNewUserEquipment(userID, deviceContent, response):
                         UID = deviceData.get('UID', '')
                         re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
                         if re_uid.match(UID):
-                            is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
+                            # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
+                            is_bind=''
                             # 判断是否有已绑定用户
                             if is_bind:
                                 # return response.json(175)

+ 1 - 1
Model/models.py

@@ -483,7 +483,6 @@ class Store_Meal(models.Model):
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id',on_delete=models.CASCADE, default=1, verbose_name='存储空间')
-    # storeDay = models.IntegerField(default=0, blank=True, verbose_name=u'存储的天数')
 
     def __str__(self):
         return self.id
@@ -599,6 +598,7 @@ class VodHlsModel(models.Model):
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0)
     endTime = models.IntegerField(verbose_name='删除时间', default=0)
+    sec = models.IntegerField(verbose_name='秒数', default=0)
     bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id',on_delete=models.CASCADE, default=1, verbose_name='存储空间')
 
     def __str__(self):

+ 2 - 0
Object/UidTokenObject.py

@@ -18,6 +18,8 @@ import jwt
 class UidTokenObject:
 
     def __init__(self, token=None):
+        if token == 'local':
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJGVFNMTDhITTQzN1ozOFdVMTExQSIsImNoYW5uZWwiOiI0In0.HO-PzoRwhQ4CFNkjthqOitf48c-XOvHjtNGCeUmBe9g'
         self.token = token
         self.UID = ''
         self.channel = ''