Browse Source

云存分表

peng 8 months ago
parent
commit
553c31e122
4 changed files with 703 additions and 270 deletions
  1. 112 110
      Controller/CloudStorage.py
  2. 3 2
      Controller/CloudVod.py
  3. 263 0
      Model/models.py
  4. 325 158
      Service/VodHlsService.py

+ 112 - 110
Controller/CloudStorage.py

@@ -557,128 +557,130 @@ class CloudStorageView(View):
             logger.info({
                 "intoTime": into_time,
             })
+        try:
+            device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False).values(
+                'vodPrimaryUserID', 'Type', 'vodPrimaryMaster')
+            if not device_info_qs.exists():
+                return response.json(12)
+            device_type = device_info_qs[0]['Type']
+            device_info_qs_time_over = int(time.time())
+            if uid == 'UWE2ZJ52SE4FX75U111A':
+                logger.info({
+                    "intoTime": into_time,
+                    "dvQsModelOverTime": device_info_qs_time_over,
+                })
 
-        device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False).values(
-            'vodPrimaryUserID', 'Type', 'vodPrimaryMaster')
-        if not device_info_qs.exists():
-            return response.json(12)
-        device_type = device_info_qs[0]['Type']
-        device_info_qs_time_over = int(time.time())
-        if uid == 'UWE2ZJ52SE4FX75U111A':
+            if device_info_qs[0]['vodPrimaryUserID'] != user_id:
+                return response.json(10034)
+            now_time = int(time.time())
+            if device_type in BINOCULAR_DEVICE_TYPE:  # 枪球设备开通云存不区分通道
+                uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time)
+            else:
+                uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel)
+            if not uid_bucket_qs.exists():
+                return response.json(10030)
+
+            uid_bucket_qs_time_over = int(time.time())
             logger.info({
                 "intoTime": into_time,
                 "dvQsModelOverTime": device_info_qs_time_over,
+                "UidBucketModelOverTime": uid_bucket_qs_time_over,
             })
-
-        if device_info_qs[0]['vodPrimaryUserID'] != user_id:
-            return response.json(10034)
-        now_time = int(time.time())
-        if device_type in BINOCULAR_DEVICE_TYPE:  # 枪球设备开通云存不区分通道
-            uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time)
-        else:
-            uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel)
-        if not uid_bucket_qs.exists():
-            return response.json(10030)
-
-        uid_bucket_qs_time_over = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-        })
-        type_list = []
-        if event_types:
-            if ',' in event_types:
-                type_list = event_types.split(',')
-                type_list = [int(i.strip()) for i in type_list]
+            type_list = []
+            if event_types:
+                if ',' in event_types:
+                    type_list = event_types.split(',')
+                    type_list = [int(i.strip()) for i in type_list]
+                else:
+                    type_list = [int(event_types)]
+            split_vod_hls_obj = SplitVodHlsObject()
+            if device_type in BINOCULAR_DEVICE_TYPE:
+                vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid,
+                                                                end_time__gte=now_time,
+                                                                start_time__range=(start_time, end_time),
+                                                                type_list=type_list) \
+                    .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
             else:
-                type_list = [int(event_types)]
-        split_vod_hls_obj = SplitVodHlsObject()
-        if device_type in BINOCULAR_DEVICE_TYPE:
-            vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid,
-                                                            end_time__gte=now_time,
-                                                            start_time__range=(start_time, end_time),
-                                                            type_list=type_list) \
-                .values("id", "start_time", "sec", "fg", "bucket_id", "channel")
-        else:
-            vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid, channel=channel,
-                                                            end_time__gte=now_time,
-                                                            start_time__range=(start_time, end_time),
-                                                            type_list=type_list) \
-                .values("id", "start_time", "sec", "fg", "bucket_id", "channel")
-
-        vod_play_list = []
-        if not vod_hls_qs.exists():
-            return response.json(0, vod_play_list)
-
-        # 不用关联外键查询,因为会查询非常慢
-        vod_bucket_qs = VodBucketModel.objects.values()
-        regroup_bucket_qs = {}
-        for bucket_dict in vod_bucket_qs:
-            regroup_bucket_qs[bucket_dict['id']] = bucket_dict
-
-        vod_hls_qs_time_over = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-            "vodHlsModelOverTime": vod_hls_qs_time_over,
-        })
-        bucket_mold = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['mold']
-        bucket_region = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['region']
-        aws_access_key_id = AWS_ACCESS_KEY_ID[bucket_mold]
-        aws_secret_access_key = AWS_SECRET_ACCESS_KEY[bucket_mold]
-        s3_obj = AmazonS3Util(aws_access_key_id, aws_secret_access_key, bucket_region)
-        uid_token = TokenObject().encryption(data={'uid': uid})
-
-        aws_object_over_time = int(time.time())
-        logger.info({
-            "intoTime": into_time,
-            "dvQsModelOverTime": device_info_qs_time_over,
-            "UidBucketModelOverTime": uid_bucket_qs_time_over,
-            "vodHlsModelOverTime": vod_hls_qs_time_over,
-            "awsObjectOverTime": aws_object_over_time,
-        })
-
-        ids = [val['id'] for val in vod_hls_qs]
-        tag_type_list = SplitVodHlsObject.query_tag_type_list(start_time, ids)
-        for vod in vod_hls_qs:
-            bucket_name = regroup_bucket_qs[vod['bucket_id']]['bucket']
-            thumbs_png = '{uid}/vod{channel}/{time}/Thumb.jpeg'.format(uid=uid, channel=vod['channel'],
-                                                                       time=vod['start_time'])
-            response_url = s3_obj.generate_file_obj_url(bucket_name, thumbs_png)
-            vod_url = '{server_domain}cloudstorage/signplaym3u8?' \
-                      'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
-                format(server_domain=SERVER_DOMAIN_SSL, uid=uid_token, channel=vod['channel'], time=vod['start_time'])
-            ts_num = int(vod['fg']) & 0xf
-            # dict_item = [item for item in tag_type_list if item['vod_hls_id'] == vod['id']]
-            types = []
-            # if dict_item:
-            #     tag_qs = VodHlsTagType.objects.filter(tag_id=dict_item[0]['id']).values('type')
-            #     types = [val['type'] for val in tag_qs]
-
-            vod_play_list.append({
-                'start_time': vod['start_time'],
-                'sign_url': vod_url,
-                'thumb': response_url,
-                'sec': vod['sec'],
-                'ts_num': ts_num,
-                'vod_id': vod['id'],
-                'types': types
+                vod_hls_qs = split_vod_hls_obj.get_vod_hls_data(uid=uid, channel=channel,
+                                                                end_time__gte=now_time,
+                                                                start_time__range=(start_time, end_time),
+                                                                type_list=type_list) \
+                    .values("id", "start_time", "sec", "fg", "bucket_id", "channel", "tab_val")
+
+            vod_play_list = []
+            if not vod_hls_qs.exists():
+                return response.json(0, vod_play_list)
+
+            # 不用关联外键查询,因为会查询非常慢
+            vod_bucket_qs = VodBucketModel.objects.values()
+            regroup_bucket_qs = {}
+            for bucket_dict in vod_bucket_qs:
+                regroup_bucket_qs[bucket_dict['id']] = bucket_dict
+
+            vod_hls_qs_time_over = int(time.time())
+            logger.info({
+                "intoTime": into_time,
+                "dvQsModelOverTime": device_info_qs_time_over,
+                "UidBucketModelOverTime": uid_bucket_qs_time_over,
+                "vodHlsModelOverTime": vod_hls_qs_time_over,
             })
-        vod_play_list = sorted(vod_play_list, key=lambda item: -item['start_time'])
-        generate_presigned_over_time = int(time.time())
-        if uid == 'UWE2ZJ52SE4FX75U111A':
+            bucket_mold = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['mold']
+            bucket_region = regroup_bucket_qs[vod_hls_qs[0]['bucket_id']]['region']
+            aws_access_key_id = AWS_ACCESS_KEY_ID[bucket_mold]
+            aws_secret_access_key = AWS_SECRET_ACCESS_KEY[bucket_mold]
+            s3_obj = AmazonS3Util(aws_access_key_id, aws_secret_access_key, bucket_region)
+            uid_token = TokenObject().encryption(data={'uid': uid})
+
+            aws_object_over_time = int(time.time())
             logger.info({
                 "intoTime": into_time,
                 "dvQsModelOverTime": device_info_qs_time_over,
                 "UidBucketModelOverTime": uid_bucket_qs_time_over,
                 "vodHlsModelOverTime": vod_hls_qs_time_over,
                 "awsObjectOverTime": aws_object_over_time,
-                "generatePresignedOverTime": generate_presigned_over_time,
             })
 
-        return response.json(0, vod_play_list)
+            ids = [val['tab_val'] + str(val['id']) for val in vod_hls_qs]
+            tag_type_list = SplitVodHlsObject.query_tag_type_list(ids)
+            for vod in vod_hls_qs:
+                bucket_name = regroup_bucket_qs[vod['bucket_id']]['bucket']
+                thumbs_png = '{uid}/vod{channel}/{time}/Thumb.jpeg'.format(uid=uid, channel=vod['channel'],
+                                                                           time=vod['start_time'])
+                response_url = s3_obj.generate_file_obj_url(bucket_name, thumbs_png)
+                vod_url = '{server_domain}cloudstorage/signplaym3u8?' \
+                          'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
+                    format(server_domain=SERVER_DOMAIN_SSL, uid=uid_token, channel=vod['channel'], time=vod['start_time'])
+                ts_num = int(vod['fg']) & 0xf
+                # dict_item = [item for item in tag_type_list if item['vod_hls_id'] == vod['id']]
+                types = []
+                # if dict_item:
+                #     tag_qs = VodHlsTagType.objects.filter(tag_id=dict_item[0]['id']).values('type')
+                #     types = [val['type'] for val in tag_qs]
+
+                vod_play_list.append({
+                    'start_time': vod['start_time'],
+                    'sign_url': vod_url,
+                    'thumb': response_url,
+                    'sec': vod['sec'],
+                    'ts_num': ts_num,
+                    'vod_id': vod['tab_val'] + str(vod['id']),
+                    'types': types
+                })
+            vod_play_list = sorted(vod_play_list, key=lambda item: -item['start_time'])
+            generate_presigned_over_time = int(time.time())
+            if uid == 'UWE2ZJ52SE4FX75U111A':
+                logger.info({
+                    "intoTime": into_time,
+                    "dvQsModelOverTime": device_info_qs_time_over,
+                    "UidBucketModelOverTime": uid_bucket_qs_time_over,
+                    "vodHlsModelOverTime": vod_hls_qs_time_over,
+                    "awsObjectOverTime": aws_object_over_time,
+                    "generatePresignedOverTime": generate_presigned_over_time,
+                })
+
+            return response.json(0, vod_play_list)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
     def do_store_playlist(request_dict, response):
@@ -731,10 +733,10 @@ class CloudStorageView(View):
             # 保存云存信息数据
             # 创建分表数据
             split_vod_hls_obj = SplitVodHlsObject()
-            vod_vo, week = split_vod_hls_obj.creat_vod_hls_data(uid=uid, channel=channel, start_time=start_time,
-                                                                end_time=end_time, bucket_id=bucket_id, fg=fg, sec=sec)
+            vod_vo, num = split_vod_hls_obj.creat_vod_hls_data(uid=uid, channel=channel, start_time=start_time,
+                                                               end_time=end_time, bucket_id=bucket_id, fg=fg, sec=sec)
 
-            split_vod_hls_obj.cloud_vod_hls_tag(vod_vo.id, week, uid, start_time, sec)  # 云存关联AI标签
+            split_vod_hls_obj.cloud_vod_hls_tag(vod_vo.id, num, uid, start_time, sec)  # 云存关联AI标签
             end_time_stamp = datetime.datetime.fromtimestamp(int(start_time))
             end_time_str = datetime.datetime(end_time_stamp.year, end_time_stamp.month, 1)
             end_time_stamp = CommonService.str_to_timestamp(end_time_str.strftime('%Y-%m-%d %H:%M:%S'))

+ 3 - 2
Controller/CloudVod.py

@@ -549,7 +549,8 @@ class CloudVodView(View):
         nowTime = int(time.time())
         split_vod_hls_obj = SplitVodHlsObject()
         vodqs = split_vod_hls_obj.get_vod_hls_data(uid=UID, channel=channel, start_time__range=(startTime, endTime),
-                                                   end_time__gte=nowTime).values("start_time", "sec", "bucket_id", "id")
+                                                   end_time__gte=nowTime).values("start_time", "sec", "bucket_id", "id",
+                                                                                 "tab_val")
         if not vodqs.exists():
             return response.json(173)
         vod_bucket_qs = VodBucketModel.objects.filter(id=vodqs[0]['bucket_id']).values('bucket', 'endpoint')
@@ -576,7 +577,7 @@ class CloudVodView(View):
                                     params={'x-oss-process': 'video/snapshot,t_1000,m_fast,w_300'})
             vod_play_list.append(
                 {'name': vod['start_time'], 'sign_url': vod_play_url, 'thumb': thumb, 'sec': vod['sec'],
-                 'id': vod['id']})
+                 'id': vod['tab_val'] + str(vod['id'])})
         vod_play_list = sorted(vod_play_list, key=lambda item: -item['name'])
         return response.json(0, vod_play_list)
 

+ 263 - 0
Model/models.py

@@ -5187,3 +5187,266 @@ class InAppRefund(models.Model):
     class Meta:
         db_table = 'in_app_refund'
         verbose_name = '退款状态'
+
+
+class VodHlsBase(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    uid = models.CharField(max_length=20, db_index=True, verbose_name='uid')
+    channel = models.SmallIntegerField(default=0, verbose_name='通道')
+    start_time = models.IntegerField(default=0, db_index=True, verbose_name='开始时间')
+    end_time = models.IntegerField(default=0, db_index=True, verbose_name='结束时间')
+    sec = models.IntegerField(default=0, verbose_name='秒数')
+    bucket_id = models.SmallIntegerField(default=1, blank=True, verbose_name='关联vod_bucket表id')
+    fg = models.CharField(default='', max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_base'
+        verbose_name = '云存回放信息表'
+        ordering = ('-id',)
+        abstract = True
+
+
+class VodHls01(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_01'
+        verbose_name = '云存回放信息表01'
+
+
+class VodHls02(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_02'
+        verbose_name = '云存回放信息表02'
+
+
+class VodHls03(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_03'
+        verbose_name = '云存回放信息表03'
+
+
+class VodHls04(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_04'
+        verbose_name = '云存回放信息表04'
+
+
+class VodHls05(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_05'
+        verbose_name = '云存回放信息表05'
+
+
+class VodHls06(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_06'
+        verbose_name = '云存回放信息表06'
+
+
+class VodHls07(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_07'
+        verbose_name = '云存回放信息表07'
+
+
+class VodHls08(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_08'
+        verbose_name = '云存回放信息表08'
+
+
+class VodHls09(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_09'
+        verbose_name = '云存回放信息表09'
+
+
+class VodHls10(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_10'
+        verbose_name = '云存回放信息表10'
+
+
+class VodHls11(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_11'
+        verbose_name = '云存回放信息表11'
+
+
+class VodHls12(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_12'
+        verbose_name = '云存回放信息表12'
+
+
+class VodHls13(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_13'
+        verbose_name = '云存回放信息表13'
+
+
+class VodHls14(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_14'
+        verbose_name = '云存回放信息表14'
+
+
+class VodHls15(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_15'
+        verbose_name = '云存回放信息表15'
+
+
+class VodHls16(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_16'
+        verbose_name = '云存回放信息表16'
+
+
+class VodHls17(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_17'
+        verbose_name = '云存回放信息表17'
+
+
+class VodHls18(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_18'
+        verbose_name = '云存回放信息表18'
+
+
+class VodHls19(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_19'
+        verbose_name = '云存回放信息表19'
+
+
+class VodHls20(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_20'
+        verbose_name = '云存回放信息表20'
+
+
+class VodHls21(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_21'
+        verbose_name = '云存回放信息表21'
+
+
+class VodHls22(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_22'
+        verbose_name = '云存回放信息表22'
+
+
+class VodHls23(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_23'
+        verbose_name = '云存回放信息表23'
+
+
+class VodHls24(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_24'
+        verbose_name = '云存回放信息表24'
+
+
+class VodHls25(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_25'
+        verbose_name = '云存回放信息表25'
+
+
+class VodHls26(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_26'
+        verbose_name = '云存回放信息表26'
+
+
+class VodHls27(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_27'
+        verbose_name = '云存回放信息表27'
+
+
+class VodHls28(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_28'
+        verbose_name = '云存回放信息表28'
+
+
+class VodHls29(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_29'
+        verbose_name = '云存回放信息表29'
+
+
+class VodHls30(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_30'
+        verbose_name = '云存回放信息表30'
+
+
+class VodHls31(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_31'
+        verbose_name = '云存回放信息表31'
+
+
+class VodHls32(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_32'
+        verbose_name = '云存回放信息表32'
+
+
+class VodHls33(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_33'
+        verbose_name = '云存回放信息表33'
+
+
+class VodHls34(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_34'
+        verbose_name = '云存回放信息表34'
+
+
+class VodHls35(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_35'
+        verbose_name = '云存回放信息表35'
+
+
+class VodHls36(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_36'
+        verbose_name = '云存回放信息表36'
+
+
+class VodHls37(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_37'
+        verbose_name = '云存回放信息表37'
+
+
+class VodHls38(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_38'
+        verbose_name = '云存回放信息表38'
+
+
+class VodHls39(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_39'
+        verbose_name = '云存回放信息表39'
+
+
+class VodHls40(VodHlsBase):
+    class Meta:
+        db_table = 'vod_hls_40'
+        verbose_name = '云存回放信息表40'
+
+
+

+ 325 - 158
Service/VodHlsService.py

@@ -1,14 +1,19 @@
 # @Author    : Rocky
 # @File      : VodHlsService.py
 # @Time      : 2023/2/1 15:57
-import datetime
-
+import random
+from Ansjer.config import LOGGER
 from django.db import connection
-from django.db.models import Count
+from django.db.models import Value, CharField, Count
+from Model.models import VodHls01, VodHls02, VodHls03, VodHls04, VodHls05, VodHls06, VodHls07, VodHls08, VodHls09, \
+    VodHls10, VodHls11, VodHls12, VodHls13, VodHls14, VodHls15, VodHls16, VodHls17, VodHls18, VodHls19, VodHls20, \
+    VodHls21, VodHls22, VodHls23, VodHls24, VodHls25, VodHls26, VodHls27, VodHls28, VodHls29, VodHls30, VodHls31, \
+    VodHls32, VodHls33, VodHls34, VodHls35, VodHls36, VodHls37, VodHls38, VodHls39, VodHls40, VodHlsTag
 
-from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun, VodHlsTag, \
-    AiService, VodHlsTagType
-from Service.CommonService import CommonService
+Vod_Hls_List = [VodHls01, VodHls02, VodHls03, VodHls04, VodHls05, VodHls06, VodHls07, VodHls08, VodHls09, VodHls10,
+                VodHls11, VodHls12, VodHls13, VodHls14, VodHls15, VodHls16, VodHls17, VodHls18, VodHls19, VodHls20,
+                VodHls21, VodHls22, VodHls23, VodHls24, VodHls25, VodHls26, VodHls27, VodHls28, VodHls29, VodHls30,
+                VodHls31, VodHls32, VodHls33, VodHls34, VodHls35, VodHls36, VodHls37, VodHls38, VodHls39, VodHls40]
 
 
 class SplitVodHlsObject:
@@ -19,159 +24,317 @@ class SplitVodHlsObject:
         """
         分表保存云存信息数据
         """
-        start_time = kwargs.get('start_time')
-        week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
-        if week == 1:
-            vod_hls_mon = VodHlsMon.objects.create(**kwargs)
-            return vod_hls_mon, week
-        elif week == 2:
-            vod_hls_tues = VodHlsTues.objects.create(**kwargs)
-            return vod_hls_tues, week
-        elif week == 3:
-            vod_hls_wed = VodHlsWed.objects.create(**kwargs)
-            return vod_hls_wed, week
-        elif week == 4:
-            vod_hls_thur = VodHlsThur.objects.create(**kwargs)
-            return vod_hls_thur, week
-        elif week == 5:
-            vod_hls_fri = VodHlsFri.objects.create(**kwargs)
-            return vod_hls_fri, week
-        elif week == 6:
-            vod_hls_sat = VodHlsSat.objects.create(**kwargs)
-            return vod_hls_sat, week
-        elif week == 7:
-            vod_hls_sun = VodHlsSun.objects.create(**kwargs)
-            return vod_hls_sun, week
+        vod_hls_model = random.choice(Vod_Hls_List)
+        tal_num = Vod_Hls_List.index(vod_hls_model) + 1
+        vod_hls_obj = vod_hls_model.objects.create(**kwargs)
+        return vod_hls_obj, tal_num
 
     def del_vod_hls_data(self, **kwargs):
         """
         分表删除云存信息数据
         """
-        VodHlsMon.objects.filter(**kwargs).delete()
-        VodHlsTues.objects.filter(**kwargs).delete()
-        VodHlsWed.objects.filter(**kwargs).delete()
-        VodHlsThur.objects.filter(**kwargs).delete()
-        VodHlsFri.objects.filter(**kwargs).delete()
-        VodHlsSat.objects.filter(**kwargs).delete()
-        VodHlsSun.objects.filter(**kwargs).delete()
+        if 'id__in' in kwargs:
+            for vod_id in kwargs['id__in']:
+                tal_index = int(vod_id[:2]) - 11
+                temp_id = vod_id[2:]
+                Vod_Hls_List[tal_index].objects.filter(id=temp_id).delete()
+        else:
+            for model in Vod_Hls_List:
+                model.objects.filter(**kwargs).delete()
 
     def get_vod_hls_data(self, **kwargs):
         """
         分表获取云存信息数据
         @return: vod_hls
         """
-        vod_hls = VodHlsMon.objects.filter(pk=-1)
-        if 'start_time' in kwargs:
-            start_time = kwargs.get('start_time')
-            week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
-            if week == 1:
-                vod_hls = VodHlsMon.objects.filter(**kwargs)
-            elif week == 2:
-                vod_hls = VodHlsTues.objects.filter(**kwargs)
-            elif week == 3:
-                vod_hls = VodHlsWed.objects.filter(**kwargs)
-            elif week == 4:
-                vod_hls = VodHlsThur.objects.filter(**kwargs)
-            elif week == 5:
-                vod_hls = VodHlsFri.objects.filter(**kwargs)
-            elif week == 6:
-                vod_hls = VodHlsSat.objects.filter(**kwargs)
-            elif week == 7:
-                vod_hls = VodHlsSun.objects.filter(**kwargs)
-            return vod_hls
-        if 'start_time__range' in kwargs:
-            start_time, end_time = kwargs.get('start_time__range')
-            vod_hls_mon = VodHlsMon.objects.filter(pk=-1)
-            vod_hls_tus = VodHlsTues.objects.filter(pk=-1)
-            vod_hls_wed = VodHlsWed.objects.filter(pk=-1)
-            vod_hls_thur = VodHlsThur.objects.filter(pk=-1)
-            vod_hls_fri = VodHlsFri.objects.filter(pk=-1)
-            vod_hls_sat = VodHlsSat.objects.filter(pk=-1)
-            vod_hls_sun = VodHlsSun.objects.filter(pk=-1)
-            start_time = datetime.datetime.fromtimestamp(int(start_time))
-            end_time = datetime.datetime.fromtimestamp(int(end_time))
-            time_list = CommonService.cutting_time_stamp(start_time, end_time)
-            day_list = []
-            type_list = kwargs.get('type_list')
-            for time_item in time_list:
-                week = datetime.datetime.fromtimestamp(int(time_item[0])).isoweekday()
-                if week not in day_list:
-                    day_list.append(week)
-            for week in day_list:
-                kwargs['type_list'] = type_list
-                if week == 1:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_mon
-                    vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
-                elif week == 2:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_tus
-                    vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
-                elif week == 3:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_wed
-                    vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
-                elif week == 4:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_thur
-                    vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
-                elif week == 5:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_fri
-                    vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
-                elif week == 6:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_sat
-                    vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
-                elif week == 7:
-                    kwargs = self.vod_query_param(week, **kwargs)
-                    if not kwargs:
-                        return vod_hls_sun
-                    vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
-            vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat,
-                                    vod_hls_sun)
-            return vod_hls
-        vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
-        vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
-        vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
-        vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
-        vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
-        vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
-        vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
+        if 'type_list' in kwargs and kwargs['type_list']:
+            kwargs = self.vod_query_param(**kwargs)
+            if 'id__in' in kwargs:
+                if 1 in kwargs['id__in']:
+                    vod_hls_01 = VodHls01.objects.filter(id__in=kwargs['id__in'][1]).annotate(
+                        tab_val=Value('11', output_field=CharField()))
+                else:
+                    vod_hls_01 = VodHls01.objects.none().annotate(tab_val=Value('11', output_field=CharField()))
+                if 2 in kwargs['id__in']:
+                    vod_hls_02 = VodHls02.objects.filter(id__in=kwargs['id__in'][2]).annotate(
+                        tab_val=Value('12', output_field=CharField()))
+                else:
+                    vod_hls_02 = VodHls02.objects.none().annotate(tab_val=Value('12', output_field=CharField()))
+                if 3 in kwargs['id__in']:
+                    vod_hls_03 = VodHls03.objects.filter(id__in=kwargs['id__in'][3]).annotate(
+                        tab_val=Value('13', output_field=CharField()))
+                else:
+                    vod_hls_03 = VodHls03.objects.none().annotate(tab_val=Value('13', output_field=CharField()))
+                if 4 in kwargs['id__in']:
+                    vod_hls_04 = VodHls04.objects.filter(id__in=kwargs['id__in'][4]).annotate(
+                        tab_val=Value('14', output_field=CharField()))
+                else:
+                    vod_hls_04 = VodHls04.objects.none().annotate(tab_val=Value('14', output_field=CharField()))
+                if 5 in kwargs['id__in']:
+                    vod_hls_05 = VodHls05.objects.filter(id__in=kwargs['id__in'][5]).annotate(
+                        tab_val=Value('15', output_field=CharField()))
+                else:
+                    vod_hls_05 = VodHls05.objects.none().annotate(tab_val=Value('15', output_field=CharField()))
+                if 6 in kwargs['id__in']:
+                    vod_hls_06 = VodHls06.objects.filter(id__in=kwargs['id__in'][6]).annotate(
+                        tab_val=Value('16', output_field=CharField()))
+                else:
+                    vod_hls_06 = VodHls06.objects.none().annotate(tab_val=Value('16', output_field=CharField()))
+                if 7 in kwargs['id__in']:
+                    vod_hls_07 = VodHls07.objects.filter(id__in=kwargs['id__in'][7]).annotate(
+                        tab_val=Value('17', output_field=CharField()))
+                else:
+                    vod_hls_07 = VodHls07.objects.none().annotate(tab_val=Value('17', output_field=CharField()))
+                if 8 in kwargs['id__in']:
+                    vod_hls_08 = VodHls08.objects.filter(id__in=kwargs['id__in'][8]).annotate(
+                        tab_val=Value('18', output_field=CharField()))
+                else:
+                    vod_hls_08 = VodHls08.objects.none().annotate(tab_val=Value('18', output_field=CharField()))
+                if 9 in kwargs['id__in']:
+                    vod_hls_09 = VodHls09.objects.filter(id__in=kwargs['id__in'][9]).annotate(
+                        tab_val=Value('19', output_field=CharField()))
+                else:
+                    vod_hls_09 = VodHls09.objects.none().annotate(tab_val=Value('19', output_field=CharField()))
+                if 10 in kwargs['id__in']:
+                    vod_hls_10 = VodHls10.objects.filter(id__in=kwargs['id__in'][10]).annotate(
+                        tab_val=Value('20', output_field=CharField()))
+                else:
+                    vod_hls_10 = VodHls10.objects.none().annotate(tab_val=Value('20', output_field=CharField()))
+                if 11 in kwargs['id__in']:
+                    vod_hls_11 = VodHls11.objects.filter(id__in=kwargs['id__in'][11]).annotate(
+                        tab_val=Value('21', output_field=CharField()))
+                else:
+                    vod_hls_11 = VodHls11.objects.none().annotate(tab_val=Value('21', output_field=CharField()))
+                if 12 in kwargs['id__in']:
+                    vod_hls_12 = VodHls12.objects.filter(id__in=kwargs['id__in'][12]).annotate(
+                        tab_val=Value('22', output_field=CharField()))
+                else:
+                    vod_hls_12 = VodHls12.objects.none().annotate(tab_val=Value('22', output_field=CharField()))
+                if 13 in kwargs['id__in']:
+                    vod_hls_13 = VodHls13.objects.filter(id__in=kwargs['id__in'][13]).annotate(
+                        tab_val=Value('23', output_field=CharField()))
+                else:
+                    vod_hls_13 = VodHls13.objects.none().annotate(tab_val=Value('23', output_field=CharField()))
+                if 14 in kwargs['id__in']:
+                    vod_hls_14 = VodHls14.objects.filter(id__in=kwargs['id__in'][14]).annotate(
+                        tab_val=Value('24', output_field=CharField()))
+                else:
+                    vod_hls_14 = VodHls14.objects.none().annotate(tab_val=Value('24', output_field=CharField()))
+                if 15 in kwargs['id__in']:
+                    vod_hls_15 = VodHls15.objects.filter(id__in=kwargs['id__in'][15]).annotate(
+                        tab_val=Value('25', output_field=CharField()))
+                else:
+                    vod_hls_15 = VodHls15.objects.none().annotate(tab_val=Value('25', output_field=CharField()))
+                if 16 in kwargs['id__in']:
+                    vod_hls_16 = VodHls16.objects.filter(id__in=kwargs['id__in'][16]).annotate(
+                        tab_val=Value('26', output_field=CharField()))
+                else:
+                    vod_hls_16 = VodHls16.objects.none().annotate(tab_val=Value('26', output_field=CharField()))
+                if 17 in kwargs['id__in']:
+                    vod_hls_17 = VodHls17.objects.filter(id__in=kwargs['id__in'][17]).annotate(
+                        tab_val=Value('27', output_field=CharField()))
+                else:
+                    vod_hls_17 = VodHls17.objects.none().annotate(tab_val=Value('27', output_field=CharField()))
+                if 18 in kwargs['id__in']:
+                    vod_hls_18 = VodHls18.objects.filter(id__in=kwargs['id__in'][18]).annotate(
+                        tab_val=Value('28', output_field=CharField()))
+                else:
+                    vod_hls_18 = VodHls18.objects.none().annotate(tab_val=Value('28', output_field=CharField()))
+                if 19 in kwargs['id__in']:
+                    vod_hls_19 = VodHls19.objects.filter(id__in=kwargs['id__in'][19]).annotate(
+                        tab_val=Value('29', output_field=CharField()))
+                else:
+                    vod_hls_19 = VodHls19.objects.none().annotate(tab_val=Value('29', output_field=CharField()))
+                if 20 in kwargs['id__in']:
+                    vod_hls_20 = VodHls20.objects.filter(id__in=kwargs['id__in'][20]).annotate(
+                        tab_val=Value('30', output_field=CharField()))
+                else:
+                    vod_hls_20 = VodHls20.objects.none().annotate(tab_val=Value('30', output_field=CharField()))
+                if 21 in kwargs['id__in']:
+                    vod_hls_21 = VodHls21.objects.filter(id__in=kwargs['id__in'][21]).annotate(
+                        tab_val=Value('31', output_field=CharField()))
+                else:
+                    vod_hls_21 = VodHls21.objects.none().annotate(tab_val=Value('31', output_field=CharField()))
+                if 22 in kwargs['id__in']:
+                    vod_hls_22 = VodHls22.objects.filter(id__in=kwargs['id__in'][22]).annotate(
+                        tab_val=Value('32', output_field=CharField()))
+                else:
+                    vod_hls_22 = VodHls22.objects.none().annotate(tab_val=Value('32', output_field=CharField()))
+                if 23 in kwargs['id__in']:
+                    vod_hls_23 = VodHls23.objects.filter(id__in=kwargs['id__in'][23]).annotate(
+                        tab_val=Value('33', output_field=CharField()))
+                else:
+                    vod_hls_23 = VodHls23.objects.none().annotate(tab_val=Value('33', output_field=CharField()))
+                if 24 in kwargs['id__in']:
+                    vod_hls_24 = VodHls24.objects.filter(id__in=kwargs['id__in'][24]).annotate(
+                        tab_val=Value('34', output_field=CharField()))
+                else:
+                    vod_hls_24 = VodHls24.objects.none().annotate(tab_val=Value('34', output_field=CharField()))
+                if 25 in kwargs['id__in']:
+                    vod_hls_25 = VodHls25.objects.filter(id__in=kwargs['id__in'][25]).annotate(
+                        tab_val=Value('35', output_field=CharField()))
+                else:
+                    vod_hls_25 = VodHls25.objects.none().annotate(tab_val=Value('35', output_field=CharField()))
+                if 26 in kwargs['id__in']:
+                    vod_hls_26 = VodHls26.objects.filter(id__in=kwargs['id__in'][26]).annotate(
+                        tab_val=Value('36', output_field=CharField()))
+                else:
+                    vod_hls_26 = VodHls26.objects.none().annotate(tab_val=Value('36', output_field=CharField()))
+                if 27 in kwargs['id__in']:
+                    vod_hls_27 = VodHls27.objects.filter(id__in=kwargs['id__in'][27]).annotate(
+                        tab_val=Value('37', output_field=CharField()))
+                else:
+                    vod_hls_27 = VodHls27.objects.none().annotate(tab_val=Value('37', output_field=CharField()))
+                if 28 in kwargs['id__in']:
+                    vod_hls_28 = VodHls28.objects.filter(id__in=kwargs['id__in'][28]).annotate(
+                        tab_val=Value('38', output_field=CharField()))
+                else:
+                    vod_hls_28 = VodHls28.objects.none().annotate(tab_val=Value('38', output_field=CharField()))
+                if 29 in kwargs['id__in']:
+                    vod_hls_29 = VodHls29.objects.filter(id__in=kwargs['id__in'][29]).annotate(
+                        tab_val=Value('39', output_field=CharField()))
+                else:
+                    vod_hls_29 = VodHls29.objects.none().annotate(tab_val=Value('39', output_field=CharField()))
+                if 30 in kwargs['id__in']:
+                    vod_hls_30 = VodHls30.objects.filter(id__in=kwargs['id__in'][30]).annotate(
+                        tab_val=Value('40', output_field=CharField()))
+                else:
+                    vod_hls_30 = VodHls30.objects.none().annotate(tab_val=Value('40', output_field=CharField()))
+                if 31 in kwargs['id__in']:
+                    vod_hls_31 = VodHls31.objects.filter(id__in=kwargs['id__in'][31]).annotate(
+                        tab_val=Value('41', output_field=CharField()))
+                else:
+                    vod_hls_31 = VodHls31.objects.none().annotate(tab_val=Value('41', output_field=CharField()))
+                if 32 in kwargs['id__in']:
+                    vod_hls_32 = VodHls32.objects.filter(id__in=kwargs['id__in'][32]).annotate(
+                        tab_val=Value('42', output_field=CharField()))
+                else:
+                    vod_hls_32 = VodHls32.objects.none().annotate(tab_val=Value('42', output_field=CharField()))
+                if 33 in kwargs['id__in']:
+                    vod_hls_33 = VodHls33.objects.filter(id__in=kwargs['id__in'][33]).annotate(
+                        tab_val=Value('43', output_field=CharField()))
+                else:
+                    vod_hls_33 = VodHls33.objects.none().annotate(tab_val=Value('43', output_field=CharField()))
+                if 34 in kwargs['id__in']:
+                    vod_hls_34 = VodHls34.objects.filter(id__in=kwargs['id__in'][34]).annotate(
+                        tab_val=Value('44', output_field=CharField()))
+                else:
+                    vod_hls_34 = VodHls34.objects.none().annotate(tab_val=Value('44', output_field=CharField()))
+                if 35 in kwargs['id__in']:
+                    vod_hls_35 = VodHls35.objects.filter(id__in=kwargs['id__in'][35]).annotate(
+                        tab_val=Value('45', output_field=CharField()))
+                else:
+                    vod_hls_35 = VodHls35.objects.none().annotate(tab_val=Value('45', output_field=CharField()))
+                if 36 in kwargs['id__in']:
+                    vod_hls_36 = VodHls36.objects.filter(id__in=kwargs['id__in'][36]).annotate(
+                        tab_val=Value('46', output_field=CharField()))
+                else:
+                    vod_hls_36 = VodHls36.objects.none().annotate(tab_val=Value('46', output_field=CharField()))
+                if 37 in kwargs['id__in']:
+                    vod_hls_37 = VodHls37.objects.filter(id__in=kwargs['id__in'][37]).annotate(
+                        tab_val=Value('47', output_field=CharField()))
+                else:
+                    vod_hls_37 = VodHls37.objects.none().annotate(tab_val=Value('47', output_field=CharField()))
+                if 38 in kwargs['id__in']:
+                    vod_hls_38 = VodHls38.objects.filter(id__in=kwargs['id__in'][38]).annotate(
+                        tab_val=Value('48', output_field=CharField()))
+                else:
+                    vod_hls_38 = VodHls38.objects.none().annotate(tab_val=Value('48', output_field=CharField()))
+                if 39 in kwargs['id__in']:
+                    vod_hls_39 = VodHls39.objects.filter(id__in=kwargs['id__in'][39]).annotate(
+                        tab_val=Value('49', output_field=CharField()))
+                else:
+                    vod_hls_39 = VodHls39.objects.none().annotate(tab_val=Value('49', output_field=CharField()))
+                if 40 in kwargs['id__in']:
+                    vod_hls_40 = VodHls40.objects.filter(id__in=kwargs['id__in'][40]).annotate(
+                        tab_val=Value('50', output_field=CharField()))
+                else:
+                    vod_hls_40 = VodHls40.objects.none().annotate(tab_val=Value('50', output_field=CharField()))
+                vod_hls_union = vod_hls_01.union(vod_hls_02, vod_hls_03, vod_hls_04, vod_hls_05, vod_hls_06, vod_hls_07,
+                                                 vod_hls_08, vod_hls_09, vod_hls_10, vod_hls_11, vod_hls_12, vod_hls_13,
+                                                 vod_hls_14, vod_hls_15, vod_hls_16, vod_hls_17, vod_hls_18, vod_hls_19,
+                                                 vod_hls_20, vod_hls_21, vod_hls_22, vod_hls_23, vod_hls_24, vod_hls_25,
+                                                 vod_hls_26, vod_hls_27, vod_hls_28, vod_hls_29, vod_hls_30, vod_hls_31,
+                                                 vod_hls_32, vod_hls_33, vod_hls_34, vod_hls_35, vod_hls_36, vod_hls_37,
+                                                 vod_hls_38, vod_hls_39, vod_hls_40, all=True)
+            else:
+                vod_hls_union = VodHls01.objects.none().annotate(tab_val=Value('11', output_field=CharField()))
+        else:
+            if 'type_list' in kwargs:
+                kwargs.pop('type_list')
+            vod_hls_01 = VodHls01.objects.filter(**kwargs).annotate(tab_val=Value('11', output_field=CharField()))
+            vod_hls_02 = VodHls02.objects.filter(**kwargs).annotate(tab_val=Value('12', output_field=CharField()))
+            vod_hls_03 = VodHls03.objects.filter(**kwargs).annotate(tab_val=Value('13', output_field=CharField()))
+            vod_hls_04 = VodHls04.objects.filter(**kwargs).annotate(tab_val=Value('14', output_field=CharField()))
+            vod_hls_05 = VodHls05.objects.filter(**kwargs).annotate(tab_val=Value('15', output_field=CharField()))
+            vod_hls_06 = VodHls06.objects.filter(**kwargs).annotate(tab_val=Value('16', output_field=CharField()))
+            vod_hls_07 = VodHls07.objects.filter(**kwargs).annotate(tab_val=Value('17', output_field=CharField()))
+            vod_hls_08 = VodHls08.objects.filter(**kwargs).annotate(tab_val=Value('18', output_field=CharField()))
+            vod_hls_09 = VodHls09.objects.filter(**kwargs).annotate(tab_val=Value('19', output_field=CharField()))
+            vod_hls_10 = VodHls10.objects.filter(**kwargs).annotate(tab_val=Value('20', output_field=CharField()))
+            vod_hls_11 = VodHls11.objects.filter(**kwargs).annotate(tab_val=Value('21', output_field=CharField()))
+            vod_hls_12 = VodHls12.objects.filter(**kwargs).annotate(tab_val=Value('22', output_field=CharField()))
+            vod_hls_13 = VodHls13.objects.filter(**kwargs).annotate(tab_val=Value('23', output_field=CharField()))
+            vod_hls_14 = VodHls14.objects.filter(**kwargs).annotate(tab_val=Value('24', output_field=CharField()))
+            vod_hls_15 = VodHls15.objects.filter(**kwargs).annotate(tab_val=Value('25', output_field=CharField()))
+            vod_hls_16 = VodHls16.objects.filter(**kwargs).annotate(tab_val=Value('26', output_field=CharField()))
+            vod_hls_17 = VodHls17.objects.filter(**kwargs).annotate(tab_val=Value('27', output_field=CharField()))
+            vod_hls_18 = VodHls18.objects.filter(**kwargs).annotate(tab_val=Value('28', output_field=CharField()))
+            vod_hls_19 = VodHls19.objects.filter(**kwargs).annotate(tab_val=Value('29', output_field=CharField()))
+            vod_hls_20 = VodHls20.objects.filter(**kwargs).annotate(tab_val=Value('30', output_field=CharField()))
+            vod_hls_21 = VodHls21.objects.filter(**kwargs).annotate(tab_val=Value('31', output_field=CharField()))
+            vod_hls_22 = VodHls22.objects.filter(**kwargs).annotate(tab_val=Value('32', output_field=CharField()))
+            vod_hls_23 = VodHls23.objects.filter(**kwargs).annotate(tab_val=Value('33', output_field=CharField()))
+            vod_hls_24 = VodHls24.objects.filter(**kwargs).annotate(tab_val=Value('34', output_field=CharField()))
+            vod_hls_25 = VodHls25.objects.filter(**kwargs).annotate(tab_val=Value('35', output_field=CharField()))
+            vod_hls_26 = VodHls26.objects.filter(**kwargs).annotate(tab_val=Value('36', output_field=CharField()))
+            vod_hls_27 = VodHls27.objects.filter(**kwargs).annotate(tab_val=Value('37', output_field=CharField()))
+            vod_hls_28 = VodHls28.objects.filter(**kwargs).annotate(tab_val=Value('38', output_field=CharField()))
+            vod_hls_29 = VodHls29.objects.filter(**kwargs).annotate(tab_val=Value('39', output_field=CharField()))
+            vod_hls_30 = VodHls30.objects.filter(**kwargs).annotate(tab_val=Value('40', output_field=CharField()))
+            vod_hls_31 = VodHls31.objects.filter(**kwargs).annotate(tab_val=Value('41', output_field=CharField()))
+            vod_hls_32 = VodHls32.objects.filter(**kwargs).annotate(tab_val=Value('42', output_field=CharField()))
+            vod_hls_33 = VodHls33.objects.filter(**kwargs).annotate(tab_val=Value('43', output_field=CharField()))
+            vod_hls_34 = VodHls34.objects.filter(**kwargs).annotate(tab_val=Value('44', output_field=CharField()))
+            vod_hls_35 = VodHls35.objects.filter(**kwargs).annotate(tab_val=Value('45', output_field=CharField()))
+            vod_hls_36 = VodHls36.objects.filter(**kwargs).annotate(tab_val=Value('46', output_field=CharField()))
+            vod_hls_37 = VodHls37.objects.filter(**kwargs).annotate(tab_val=Value('47', output_field=CharField()))
+            vod_hls_38 = VodHls38.objects.filter(**kwargs).annotate(tab_val=Value('48', output_field=CharField()))
+            vod_hls_39 = VodHls39.objects.filter(**kwargs).annotate(tab_val=Value('49', output_field=CharField()))
+            vod_hls_40 = VodHls40.objects.filter(**kwargs).annotate(tab_val=Value('50', output_field=CharField()))
+            vod_hls_union = vod_hls_01.union(vod_hls_02, vod_hls_03, vod_hls_04, vod_hls_05, vod_hls_06, vod_hls_07,
+                                             vod_hls_08, vod_hls_09, vod_hls_10, vod_hls_11, vod_hls_12, vod_hls_13,
+                                             vod_hls_14, vod_hls_15, vod_hls_16, vod_hls_17, vod_hls_18, vod_hls_19,
+                                             vod_hls_20, vod_hls_21, vod_hls_22, vod_hls_23, vod_hls_24, vod_hls_25,
+                                             vod_hls_26, vod_hls_27, vod_hls_28, vod_hls_29, vod_hls_30, vod_hls_31,
+                                             vod_hls_32, vod_hls_33, vod_hls_34, vod_hls_35, vod_hls_36, vod_hls_37,
+                                             vod_hls_38, vod_hls_39, vod_hls_40, all=True)
+
+        LOGGER.info('vod_hls_union结果:{},kwargs:{}'.format(vod_hls_union.values(), kwargs))
+        return vod_hls_union
 
-        vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat,
-                                vod_hls_sun)
-        return vod_hls
 
     def get_vod_hls_date(self, **kwargs):
         """
         分表获取云存日期信息数据
         @return: vod_hls
         """
-
-        vod_hls_mon = VodHlsMon.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_tus = VodHlsTues.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_wed = VodHlsWed.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_thur = VodHlsThur.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_fri = VodHlsFri.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_sat = VodHlsSat.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-        vod_hls_sun = VodHlsSun.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
-            'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
-
-        vod_hls = vod_hls_mon.union(vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat, vod_hls_sun)
-        return vod_hls
+        vod_hls_union = VodHls01.objects.none()
+        for vod_hls_model in Vod_Hls_List:
+            vod_hls_union = vod_hls_union.union(vod_hls_model.objects.extra(
+                select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values('date', 'start_time').filter(
+                **kwargs).annotate(
+                count=Count('start_time')).order_by('-date'))
+        result = {}
+        for item in vod_hls_union:
+            if item['date'] not in result:
+                result[item['date']] = item['count']
+            else:
+                result[item['date']] += item['count']
+        res = []
+        for key, value in result.items():
+            res.append({'date': key, 'count': value})
+        return res
 
     @classmethod
     def cloud_vod_hls_tag(cls, vod_id, num, uid, start_time, sec):
@@ -193,62 +356,66 @@ class SplitVodHlsObject:
             vod_tag_qs.update(vod_hls_id=vod_id, tab_num=num)
             return True
         except Exception as e:
-            print('cloud_vod_hls_tag异常详情,uid:{},errLine:{},errMsg:{}'.format(uid, e.__traceback__.tb_lineno, repr(e)))
+            print(
+                'cloud_vod_hls_tag异常详情,uid:{},errLine:{},errMsg:{}'.format(uid, e.__traceback__.tb_lineno, repr(e)))
             return False
 
     @classmethod
-    def vod_query_param(cls, week, **kwargs):
-        types = kwargs.get('type_list')
+    def vod_query_param(cls, **kwargs):
         vod_ids = cls.query_tag_by_types(kwargs.get('uid'),
                                          kwargs.get('start_time__range'),
-                                         kwargs.get('type_list'), week)
+                                         kwargs.get('type_list'))
         if vod_ids:
             kwargs['id__in'] = vod_ids
-        if types and not vod_ids:
-            return []
         kwargs.pop('type_list')
         return kwargs
 
     @classmethod
-    def query_tag_by_types(cls, uid, time, types, num):
+    def query_tag_by_types(cls, uid, time, types):
         """
         根据类型查询云存标签关联ID
         @return:
         """
         try:
             if not types or len(types) == 0:
-                return []
+                return {}
             cursor = connection.cursor()
-            param_list = [int(time[0]), int(time[1]), uid, num]
-            sql = 'SELECT vod_hls_id FROM '
+            param_list = [int(time[0]), int(time[1]), uid]
+            sql = 'SELECT vod_hls_id, tab_num FROM '
             sql += 'vod_hls_tag vht INNER JOIN vod_hls_tag_type vhtt ON vht.id = vhtt.tag_id '
             sql += 'WHERE vht.ai_event_time >= %s AND vht.ai_event_time <= %s '
             sql += 'AND vht.uid = %s '
-            sql += 'AND tab_num = %s '
             if types:
                 sql += 'AND vhtt.type IN %s '
                 param_list.append(types)
-            sql += 'GROUP BY vht.vod_hls_id '
 
             cursor.execute(sql, param_list)
             data_list = cursor.fetchall()
             cursor.close()  # 执行完,关闭
             connection.close()
-            data_list = [val[0] for val in data_list]
-            return data_list
+            data_dict = {}
+            for item in data_list:
+                if item[1] not in data_dict:
+                    data_dict[item[1]] = [item[0]]
+                else:
+                    data_dict[item[1]].append(item[0])
+            return data_dict
         except Exception as e:
             print('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return False
 
     @classmethod
-    def query_tag_type_list(cls, start_time, vod_ids):
+    def query_tag_type_list(cls, vod_ids):
         """
         根据云存ID获取AI类型
         @return:
         """
         try:
-            week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
-            qs = VodHlsTag.objects.filter(vod_hls_id__in=vod_ids, tab_num=int(week)).values('id', 'vod_hls_id')
+            qs = VodHlsTag.objects.none()
+            for vod_id in vod_ids:
+                tab_val = int(vod_id[:2]) - 10
+                temp_id = vod_id[2:]
+                qs = qs.union(VodHlsTag.objects.filter(vod_hls_id=temp_id, tab_num=tab_val).values('id', 'vod_hls_id'))
             if not qs:
                 return []
             return list(qs)