浏览代码

uidset表添加地区字段、设备数据逻辑

peng 3 年之前
父节点
当前提交
efbf7fed08

+ 14 - 13
AdminController/dataSystemManagement/DeviceDataController.py

@@ -14,7 +14,7 @@ from django.db.models import Count
 from django.views.generic.base import View
 
 from Ansjer.config import DEVICE_TYPE
-from Model.models import Device_Info, CountryModel, Order_Model, VodHlsModel
+from Model.models import Device_Info, CountryModel, Order_Model, VodHlsModel, UidSetModel
 from Service.CommonService import CommonService
 
 
@@ -385,19 +385,17 @@ class DeviceDataView(View):
         if not all([start_time, end_time, unit_time, order_type]):
             return response.json(444, {'error param': 'startTime or endTime or timeUnit or order_type'})
         order_type = int(order_type)
-        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, unit_time)
+
         try:
-            device_info_qs = Device_Info.objects.filter(data_joined__range=(start_time, end_time))
-            device_test_qs = Device_Info.objects.filter(data_joined__lt=start_time)
-            device_test = list(device_test_qs.values('UID').order_by('UID').distinct())
-            device_info = list(device_info_qs.values('UID').order_by('UID').distinct())
-            test_list = [item[key] for item in device_test for key in item]
-            device_info_list = [item[key] for item in device_info for key in item]
-            part_only_list = list(set(device_info_list) - set(test_list))
-            count_all = len(part_only_list)
-            count_all = int(count_all)
+            device_info_qs = UidSetModel.objects.filter(addTime__range=(start_time, end_time))
+            # device_info_qs = Device_Info.objects.filter(data_joined__range=(start_time, end_time))
+            # device_test_qs = Device_Info.objects.filter(data_joined__lt=start_time)
+            # device_test = list(device_test_qs.values('UID').order_by('UID').distinct())
+            # device_info = list(device_info_qs.values('UID').order_by('UID').distinct())
+            # test_list = [item[key] for item in device_test for key in item]
+            # device_info_list = [item[key] for item in device_info for key in item]
+            # part_only_list = list(set(device_info_list) - set(test_list))
+            count_all = device_info_qs.count()
             # 统计该时间段的设备数量(已去重)
             res = {
                 'addDevice': '',
@@ -409,6 +407,9 @@ class DeviceDataView(View):
             region_list = []
             type_list = []
             version_list = []
+            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, unit_time)
             for item in time_list:
                 start_time = datetime.datetime.fromtimestamp(int(item[0]))
                 end_time = datetime.datetime.fromtimestamp(int(item[1]))

+ 9 - 10
AdminController/dataSystemManagement/ServiceDataController.py

@@ -9,7 +9,6 @@
 
 from django.db.models import Q, Count, Sum
 from django.views.generic.base import View
-from Ansjer.config import DEVICE_TYPE
 import datetime
 import requests
 
@@ -126,8 +125,8 @@ class ServiceDataView(View):
             # device_qs = Device_Info.objects.filter(UID__in=uid_list).values('Type').annotate(
             #     count=Count('Type', distinct=True)).order_by('-count')
             for k, v in uid_type_dict.items():
-                type_name = DEVICE_TYPE.get(k, '未知类型')
-                type_name = type_name if type_name != 'UNKOWN' else '未知类型'
+                type_qs = DeviceTypeModel.objects.filter(type=k).values('name')
+                type_name = type_qs[0]['name'] if type_qs.exists() else '未知类型'
                 device_count = order_qs.filter(UID__in=v).count()
                 if count:
                     type_rate = round(device_count / count * 100, 2)
@@ -227,7 +226,7 @@ class ServiceDataView(View):
             time_list = CommonService.cutting_time(start_time, end_time, time_unit)
             # 转化率
             if store_meal_type == 0:
-                uidset_count = uidset_qs.filter(is_vod=1).count()
+                uidset_count = uidset_qs.filter(~Q(cloud_vod=2)).count()
             elif store_meal_type == 1:
                 uidset_count = uidset_qs.filter(is_ai=1).count()
             else:
@@ -278,8 +277,8 @@ class ServiceDataView(View):
                 uid_dict[device_type].append(item['UID'])
 
             for k, v in uid_dict.items():
-                type_name = DEVICE_TYPE.get(k, '未知类型')
-                type_name = type_name if type_name != 'UNKOWN' else '未知类型'
+                type_qs = DeviceTypeModel.objects.filter(type=k).values('name')
+                type_name = type_qs[0]['name'] if type_qs.exists() else '未知类型'
                 device_count = order_qs.filter(UID__in=v).count()
                 if count:
                     type_rate = round(device_count / count * 100, 2)
@@ -378,8 +377,8 @@ class ServiceDataView(View):
                     uid_dict[device_type] = []
                 uid_dict[device_type].append(item['UID'])
             for k, v in uid_dict.items():
-                type_name = DEVICE_TYPE.get(k, '未知类型')
-                type_name = type_name if type_name != 'UNKOWN' else '未知类型'
+                type_qs = DeviceTypeModel.objects.filter(type=k).values('name')
+                type_name = type_qs[0]['name'] if type_qs.exists() else '未知类型'
                 device_count = order_qs.filter(UID__in=v).count()
                 if count:
                     type_rate = round(device_count / count * 100, 2)
@@ -481,8 +480,8 @@ class ServiceDataView(View):
                     uid_dict[device_type] = []
                 uid_dict[device_type].append(item['UID'])
             for k, v in uid_dict.items():
-                type_name = DEVICE_TYPE.get(k, '未知类型')
-                type_name = type_name if type_name != 'UNKOWN' else '未知类型'
+                type_qs = DeviceTypeModel.objects.filter(type=k).values('name')
+                type_name = type_qs[0]['name'] if type_qs.exists() else '未知类型'
                 device_count = order_qs.filter(UID__in=v).count()
                 if count:
                     if count:

+ 2 - 2
Controller/UserController.py

@@ -690,7 +690,6 @@ class refreshTokenViewV3(TemplateView):
         lang = request_dict.get('lang', None)
         language = request_dict.get('language', None)
         password = request_dict.get('userPwd', None)
-
         response = ResponseObject(lang)
         if not token:
             return response.json(444, 'token')
@@ -727,7 +726,8 @@ class refreshTokenViewV3(TemplateView):
                     return response.json(104)
                 if not check_password(password, list(user_qs)[0]['password']):
                     return response.json(111)
-
+                now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+                user_qs.update(last_login=now_time)
             # 更新用户扩展信息语言
             user_ex_qs = UserExModel.objects.filter(userID_id=userID)
             if user_ex_qs.exists():

+ 1 - 1
Model/models.py

@@ -1187,7 +1187,7 @@ class UidSetModel(models.Model):
     isSupportFourPoint = models.SmallIntegerField(default=0, verbose_name='是否支持预置点')  # 0:不支持, 1:支持
     mobile_4g = models.IntegerField(default=0, verbose_name='是否支持4g。0:不支持,1:支持')
     is_ptz = models.IntegerField(default=0, verbose_name='是否支持云台。0:不支持,1:支持')
-    is_vod = models.IntegerField(default=0, verbose_name='是否支持云存储。0:不支持,1:支持')
+    region = models.IntegerField(blank=True, default=0, verbose_name='地区表唯一标识')
     is_ai = models.IntegerField(default=2, verbose_name='是否支持ai')  # 0,关闭,1开启,2,不支持
     is_notification = models.IntegerField(blank=True, default=1, verbose_name='新加-消息提醒开关')  # 0:关闭,1:开启
     new_detect_interval = models.IntegerField(blank=True, verbose_name='新加-消息提醒间隔', default=60)  # 秒