Prechádzať zdrojové kódy

云存回放信息回调新增关联标签

zhangdongming 2 rokov pred
rodič
commit
ad9a65e1dd
3 zmenil súbory, kde vykonal 65 pridanie a 23 odobranie
  1. 5 4
      Controller/CloudStorage.py
  2. 1 0
      Model/models.py
  3. 59 19
      Service/VodHlsService.py

+ 5 - 4
Controller/CloudStorage.py

@@ -27,7 +27,7 @@ from Controller.CloudPhoto.CloudServiceController import CloudServiceController
 from Controller.PaymentCycle import Paypal
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, UID_Bucket, StsCrdModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMsgModel, Unused_Uid_Meal, PromotionRuleModel, \
-    VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary
+    VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary, VodHlsTag
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.AWS.S3Email import S3Email
 from Object.AliPayObject import AliPayObject
@@ -402,7 +402,7 @@ class CloudStorageView(View):
                         "Effect": "Allow",
                         "Action": "s3:*",
                         "Resource": ["{aws_arn}:::{bucket_name}/{uid_channel}*".
-                                     format(aws_arn=aws_arn, bucket_name=bucket_name, uid_channel=storage)]
+                                         format(aws_arn=aws_arn, bucket_name=bucket_name, uid_channel=storage)]
                     }
                 ]
             }
@@ -623,9 +623,10 @@ class CloudStorageView(View):
             )
             # 创建分表数据
             split_vod_hls_obj = SplitVodHlsObject()
-            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, 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)
 
+            split_vod_hls_obj.cloud_vod_hls_tag(vod_vo.id, week, uid, start_time)
             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'))

+ 1 - 0
Model/models.py

@@ -3340,6 +3340,7 @@ class VodHlsTag(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
     uid = models.CharField(blank=True, db_index=True, max_length=32, verbose_name=u'设备UID')
     vod_hls_id = models.IntegerField(default=0, db_index=True, verbose_name='云存hlsId')
+    tab_num = models.SmallIntegerField(default=0, verbose_name='所在表编号')
     ai_event_time = models.IntegerField(default=0, db_index=True, verbose_name='ai事件事件')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
 

+ 59 - 19
Service/VodHlsService.py

@@ -2,33 +2,45 @@
 # @File      : VodHlsService.py
 # @Time      : 2023/2/1 15:57
 import datetime
-from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun
-from Service.CommonService import CommonService
+
 from django.db.models import Count
 
+from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun, VodHlsTag, \
+    AiService
+from Service.CommonService import CommonService
+
+
 class SplitVodHlsObject:
     # VodHls分表功能类
 
-    def creat_vod_hls_data(self, **kwargs):
+    @classmethod
+    def creat_vod_hls_data(cls, **kwargs):
         """
         分表保存云存信息数据
         """
         start_time = kwargs.get('start_time')
         week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
         if week == 1:
-            VodHlsMon.objects.create(**kwargs)
+            vod_hls_mon = VodHlsMon.objects.create(**kwargs)
+            return vod_hls_mon, week
         elif week == 2:
-            VodHlsTues.objects.create(**kwargs)
+            vod_hls_tues = VodHlsTues.objects.create(**kwargs)
+            return vod_hls_tues, week
         elif week == 3:
-            VodHlsWed.objects.create(**kwargs)
+            vod_hls_wed = VodHlsWed.objects.create(**kwargs)
+            return vod_hls_wed, week
         elif week == 4:
-            VodHlsThur.objects.create(**kwargs)
+            vod_hls_thur = VodHlsThur.objects.create(**kwargs)
+            return vod_hls_thur, week
         elif week == 5:
-            VodHlsFri.objects.create(**kwargs)
+            vod_hls_fri = VodHlsFri.objects.create(**kwargs)
+            return vod_hls_fri, week
         elif week == 6:
-            VodHlsSat.objects.create(**kwargs)
+            vod_hls_sat = VodHlsSat.objects.create(**kwargs)
+            return vod_hls_sat, week
         elif week == 7:
-            VodHlsSun.objects.create(**kwargs)
+            vod_hls_sun = VodHlsSun.objects.create(**kwargs)
+            return vod_hls_sun, week
 
     def del_vod_hls_data(self, **kwargs):
         """
@@ -109,7 +121,8 @@ class SplitVodHlsObject:
         vod_hls_sat = VodHlsSat.objects.filter(**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)
+        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):
@@ -119,19 +132,46 @@ class SplitVodHlsObject:
         """
 
         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')
+            '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')
+            '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')
+            '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')
+            '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')
+            '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')
+            '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')
+            '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
+        return vod_hls
+
+    @classmethod
+    def cloud_vod_hls_tag(cls, vod_id, num, uid, start_time):
+        """
+        云存回调信息关联标签
+        @param vod_id: 云存回放信息id
+        @param num: 所在表编号
+        @param uid: 设备UID
+        @param start_time: 云存开始时间
+        @return: True | False
+        """
+        try:
+            # 查询设备是否有使用中的ai服务
+            # ai_service_qs = AiService.objects \
+            #     .filter(uid=uid, detect_status=1, use_status=1, endTime__gt=start_time) \
+            #     .values('detect_group')
+            # if not ai_service_qs.exists():
+            #     return False
+            end_time = start_time + 3
+            vod_tag_qs = VodHlsTag.objects.filter(ai_event_time__range=(start_time, end_time), uid=uid)
+            if not vod_tag_qs.exists():
+                return False
+            vod_tag_qs.update(vod_hls_id=vod_id, tab_num=num)
+            return True
+        except Exception as e:
+            print('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return False