浏览代码

修复云存分表数据不全问题

peng 2 年之前
父节点
当前提交
ed491c4392
共有 2 个文件被更改,包括 73 次插入42 次删除
  1. 29 0
      Service/CommonService.py
  2. 44 42
      Service/VodHlsService.py

+ 29 - 0
Service/CommonService.py

@@ -645,6 +645,35 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
             time_list = [time_tuple]
         return time_list
 
+    @staticmethod
+    def cutting_time_stamp(start_time, end_time):
+        """
+        按天切割时间段
+        @param start_time: 开始时间
+        @param end_time: 结束时间
+        @return: time_list 切割后的时间列表
+        """
+
+        time_list = []
+        while True:
+            mid_time = datetime.datetime(start_time.year, start_time.month, start_time.day)+relativedelta(days=1)
+            if mid_time < end_time:
+                time_tuple = (CommonService.str_to_timestamp(start_time.strftime('%Y-%m-%d %H:%M:%S')),
+                              CommonService.str_to_timestamp(mid_time.strftime('%Y-%m-%d %H:%M:%S')))
+                time_list.append(time_tuple)
+                start_time = mid_time
+            else:
+                time_tuple = (CommonService.str_to_timestamp(start_time.strftime('%Y-%m-%d %H:%M:%S')),
+                              CommonService.str_to_timestamp(end_time.strftime('%Y-%m-%d %H:%M:%S')))
+                if time_tuple not in time_list:
+                    time_list.append(time_tuple)
+                break
+        if not time_list:
+            time_tuple = (CommonService.str_to_timestamp(start_time.strftime('%Y-%m-%d %H:%M:%S')),
+                          CommonService.str_to_timestamp(end_time.strftime('%Y-%m-%d %H:%M:%S')))
+            time_list = [time_tuple]
+        return time_list
+
     @staticmethod
     def get_domain_name():
         """

+ 44 - 42
Service/VodHlsService.py

@@ -79,48 +79,50 @@ class SplitVodHlsObject:
             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(start_time, end_time, 'day')
-        #     day_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:
-        #         if week == 1:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
-        #         elif week == 2:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
-        #         elif week == 3:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
-        #         elif week == 4:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
-        #         elif week == 5:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
-        #         elif week == 6:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
-        #         elif week == 7:
-        #             # kwargs = self.vod_query_param(week, **kwargs)
-        #             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
+        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)
+                    vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
+                elif week == 2:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
+                elif week == 3:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
+                elif week == 4:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
+                elif week == 5:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
+                elif week == 6:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
+                elif week == 7:
+                    # kwargs = self.vod_query_param(week, **kwargs)
+                    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)