Эх сурвалжийг харах

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into ming

zhangdongming 2 жил өмнө
parent
commit
dbcb09d3b2

+ 1 - 51
Controller/CloudVod.py

@@ -1,4 +1,3 @@
-import datetime
 import json
 import math
 import time
@@ -15,8 +14,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD
-from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
-    VodHlsSummary
+from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel
 from Object.AliPayObject import AliPayObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -43,7 +41,6 @@ class CloudVodView(View):
 
     def validation(self, request_dict, request, operation):
         response = ResponseObject()
-        # operation => cloudVod/path
         if operation is None:
             return response.json(444, 'error path')
         if operation == 'getSts':
@@ -53,8 +50,6 @@ class CloudVodView(View):
         # 付款完成
         elif operation == 'payExecute':
             return self.do_paypal_execute(request_dict, response)
-        elif operation == 'storeplaylist':
-            return self.do_store_palylist(request_dict, response)
         elif operation == 'payOK':
             return self.do_pay_ok()
         elif operation == 'payError':
@@ -485,51 +480,6 @@ class CloudVodView(View):
             format(uidToken=utko.token, SERVER_DOMAIN=SERVER_DOMAIN)
         return response.json(0, {'uidTkUrl': uidTkUrl, 'storeHlsUrl': storeHlsUrl})
 
-    def do_store_palylist(self, request_dict, response):
-        uidToken = request_dict.get('uidToken', None)
-        storeTime = request_dict.get('time', None)
-        sec = request_dict.get('sec', None)
-        utko = UidTokenObject(uidToken)
-        if utko.flag is False:
-            return response.json(444, 'uidToken')
-        if not uidToken or not storeTime or not sec:
-            return response.json(444, 'uidToken,time,sec')
-        sec = int(sec)
-        UID = utko.UID
-        channel = utko.channel
-        print(channel)
-        print(UID)
-        nowTime = int(time.time())
-        if not OssCrdModel.objects.filter(uid=UID, channel=channel).exists():
-            res = {'code': 404, 'msg': '设备未购买'}
-            return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
-        qs = UID_Bucket.objects.filter(uid=UID, channel=channel, status=1, endTime__gte=nowTime). \
-            values("channel", "bucket__storeDay", "bucket_id")
-        if not qs.exists():
-            res = {'code': 404, 'msg': '设备未购买'}
-            return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
-        storeDay = qs[0]['bucket__storeDay']
-        bucketID = qs[0]['bucket_id']
-        endTime = int(storeTime) + storeDay * 86400
-        VodHlsModel.objects.create(uid=UID, channel=channel, time=storeTime,
-                                   endTime=endTime, bucket_id=bucketID, sec=sec)
-
-        end_time_stamp = datetime.datetime.fromtimestamp(int(storeTime))
-        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'))
-        vod_hls_qs = VodHlsSummary.objects.filter(uid=UID, time=end_time_stamp)
-        if vod_hls_qs.exists():
-            vod_hls = vod_hls_qs.first()
-            vod_hls.upload_frequency += 1
-            vod_hls.upload_duration += sec
-            vod_hls.updated_time = nowTime
-            vod_hls.save()
-        else:
-            VodHlsSummary.objects.create(uid=UID, time=end_time_stamp, created_time=nowTime, updated_time=nowTime,
-                                         upload_duration=sec, upload_frequency=1)
-
-        return response.json(0)
-
     def do_filter_playlist(self, request_dict, userID, response):
         startTime = int(request_dict.get('startTime', None))
         endTime = int(request_dict.get('endTime', None))

+ 8 - 7
Controller/Cron/CronTaskController.py

@@ -21,7 +21,7 @@ from Ansjer.config import USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST
 from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
     VodHlsModel, ExperienceContextModel, AiService, VodHlsSummary, VideoPlaybackTimeModel, DeviceUserSummary, \
     CountryModel, DeviceTypeModel, OrdersSummary, DeviceInfoSummary, CompanySerialModel, \
-    CloudLogModel, UidCloudStorageCount
+    CloudLogModel, UidCloudStorageCount, UserExModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
@@ -443,11 +443,13 @@ class CronCollectDataView(View):
             created_time = int(time.time())
             today = datetime.datetime.today()
             start_time = datetime.datetime(today.year, today.month, today.day)
+            end_time = start_time + datetime.timedelta(days=1)
             increase_user_qs = Device_User.objects.filter(data_joined__year=today.year, data_joined__month=today.month,
                                                           data_joined__day=today.day).values('region_country')
-            active_user_qs = Device_User.objects.filter(last_login__year=today.year, last_login__month=today.month,
-                                                        last_login__day=today.day).values('region_country')
             start_time = CommonService.str_to_timestamp(start_time.strftime('%Y-%m-%d %H:%M:%S'))
+            end_time = CommonService.str_to_timestamp(end_time.strftime('%Y-%m-%d %H:%M:%S'))
+            active_user_qs = UserExModel.objects.filter(updTime__gte=start_time, updTime__lt=end_time).values(
+                'userID__region_country')
             country_qs = CountryModel.objects.all().values('id', 'region__name', 'country_name')
             country_dict = {}
             continent_dict = {}
@@ -473,13 +475,12 @@ class CronCollectDataView(View):
                                                      continent=increase_user_continent_dict)
                 if active_user_qs.exists():
                     active_user_count = active_user_qs.count()
-                    active_user_country_list = active_user_qs.values('region_country').annotate(
-                        count=Count('region_country')).order_by(
-                        'count')
+                    active_user_country_list = active_user_qs.values('userID__region_country').annotate(
+                        count=Count('userID__region_country')).order_by('count')
                     active_user_country_dict = {}
                     active_user_continent_dict = {}
                     for item in active_user_country_list:
-                        country_name = country_dict.get(item['region_country'], '未知国家')
+                        country_name = country_dict.get(item['userID__region_country'], '未知国家')
                         continent_name = continent_dict.get(country_name, '未知大洲')
                         active_user_country_dict[country_name] = item['count']
                         if continent_name not in active_user_continent_dict:

+ 4 - 0
Controller/UserManger.py

@@ -100,8 +100,12 @@ class showUserMoreView(TemplateView):
                             app_name = app_inf_qs[0]['appName']
                             if 'Zosi' in app_name:
                                 sqlDict['datas'][k]['fields']['api'] = country_qs[0]['country__region__zosi_api']
+                                if region_country == 1:
+                                    sqlDict['datas'][k]['fields']['api'] = 'https://api.zositech2.com/'
                             elif 'Loocam' in app_name:
                                 sqlDict['datas'][k]['fields']['api'] = country_qs[0]['country__region__loocam_api']
+                                if region_country == 1:
+                                    sqlDict['datas'][k]['fields']['api'] = 'https://api.loocam2.com/'
 
                     # region数据
                     region_country = sqlDict['datas'][k]['fields']['region_country']

+ 133 - 0
Model/models.py

@@ -1072,6 +1072,139 @@ class VodHlsModel(models.Model):
         ordering = ('-id',)
 
 
+class VodHlsMon(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_mon'
+        verbose_name = '星期一云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsTues(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_tues'
+        verbose_name = '星期二云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsWed(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_wed'
+        verbose_name = '星期三云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsThur(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_thur'
+        verbose_name = '星期四云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsFri(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_fri'
+        verbose_name = '星期五云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsSat(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_sat'
+        verbose_name = '星期六云存回放信息表'
+        ordering = ('-id',)
+
+
+class VodHlsSun(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(max_length=20, verbose_name='ts文件信息数据')
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_hls_sun'
+        verbose_name = '星期天云存回放信息表'
+        ordering = ('-id',)
+
+
 class OssCrdModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='主键')
     uid = models.CharField(max_length=20, verbose_name='设备UID')

+ 40 - 0
Service/VodHlsService.py

@@ -0,0 +1,40 @@
+# @Author    : Rocky
+# @File      : VodHlsService.py
+# @Time      : 2023/2/1 15:57
+from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun
+from Object.utils import LocalDateTimeUtil
+from Service.CommonService import CommonService
+
+
+class SplitVodHlsObject:
+    # VodHls分表功能类
+
+    def creat_vod_hls_data(self, **kwargs):
+        """
+        分表保存云存信息数据
+        @return: None
+        """
+        vod_hls_obj = self.get_vod_hls_obj(**kwargs)
+        vod_hls_obj.save()
+
+    @staticmethod
+    def get_vod_hls_obj(**kwargs):
+        start_time = kwargs.get('start_time')
+        str_date = CommonService.get_now_time_str(n_time=start_time, tz='0', lang='cn')[:10]
+        week = LocalDateTimeUtil.date_to_week(str_date)
+        vod_hls = None
+        if week == 1:
+            vod_hls = VodHlsMon(**kwargs)
+        elif week == 2:
+            vod_hls = VodHlsTues(**kwargs)
+        elif week == 3:
+            vod_hls = VodHlsWed(**kwargs)
+        elif week == 4:
+            vod_hls = VodHlsThur(**kwargs)
+        elif week == 5:
+            vod_hls = VodHlsFri(**kwargs)
+        elif week == 6:
+            vod_hls = VodHlsSat(**kwargs)
+        elif week == 7:
+            vod_hls = VodHlsSun(**kwargs)
+        return vod_hls