فهرست منبع

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

zhangdongming 3 سال پیش
والد
کامیت
999f46eb79
3فایلهای تغییر یافته به همراه152 افزوده شده و 73 حذف شده
  1. 24 16
      AdminController/ServeManagementController.py
  2. 43 44
      Controller/AiController.py
  3. 85 13
      Model/models.py

+ 24 - 16
AdminController/ServeManagementController.py

@@ -788,11 +788,31 @@ class serveManagement(View):
                 uid_bucket_qs = uid_bucket_qs.filter(
                     addTime__gte=endStartTime,
                     addTime__lte=endEndTime)
+
+            uid_list = []
+            uid_set_dict = {}
+            if ucode and ucode != ['']:
+                uid_set_qs = UidSetModel.objects.filter(ucode__in=ucode).values('uid', 'ucode', 'version').distinct()
+                for uid_set in uid_set_qs:
+                    uid_list.append(uid_set['uid'])
+                    uid_set_dict[uid_set['uid']] = {
+                        'ucode': uid_set['ucode'],
+                        'version': uid_set['version']
+                    }
+                uid_bucket_qs = uid_bucket_qs.filter(uid__in=uid_list)
+            else:
+                uid_set_qs = UidSetModel.objects.filter().values('uid', 'ucode', 'version').distinct()
+                for uid_set in uid_set_qs:
+                    uid_list.append(uid_set['uid'])
+                    uid_set_dict[uid_set['uid']] = {
+                        'ucode': uid_set['ucode'],
+                        'version': uid_set['version']
+                    }
+
             if not uid_bucket_qs.exists():
                 return response.json(0, [])
 
-            order_qs = Order_Model.objects.filter(
-                uid_bucket_id__in=uid_bucket_qs.values('id'))
+            order_qs = Order_Model.objects.filter(uid_bucket_id__in=uid_bucket_qs.values('id'))
             if username or phone or userEmail or payType:
                 if username:
                     order_qs = order_qs.filter(userID__username=username)
@@ -808,14 +828,6 @@ class serveManagement(View):
                     id__in=order_qs.values_list(
                         'uid_bucket_id', flat=True))
 
-            uidset_qs = UidSetModel.objects.filter(
-                uid__in=uid_bucket_qs.values('uid'))
-            if ucode or version:
-                if ucode:
-                    uidset_qs = uidset_qs.filter(ucode=ucode)
-                if version:
-                    uidset_qs = uidset_qs.filter(version=version)
-
             cg_qs = CloudLogModel.objects.filter(
                 operation='cloudstorage/queryvodlist')
             if logTimeRange:
@@ -872,12 +884,8 @@ class serveManagement(View):
                     data['playcount'] = cg_qs.filter(
                         operation='cloudstorage/queryvodlist', uid=order['UID']).count()
 
-                for uidset in uidset_qs.filter(
-                        uid=uid_bucket.uid).values(
-                        'ucode',
-                        'version'):
-                    data['ucode'] = uidset['ucode']
-                    data['version'] = uidset['version']
+                data['ucode'] = uid_set_dict[uid_bucket.uid]['ucode']
+                data['version'] = uid_set_dict[uid_bucket.uid]['version']
 
                 list_data.append(data)
             return response.json(

+ 43 - 44
Controller/AiController.py

@@ -121,8 +121,6 @@ class AiView(View):
                 return self.do_querylist(userID, request_dict, response)
             elif operation == 'getUsingPackage':  # 获取设备当前使用的ai套餐
                 return self.getUsingPackage(request_dict, userID, response)
-            elif operation == 'updateJpushTime':  # 测试ai识别app的推送时间
-                return self.update_jpush_time(userID, request_dict, response)
             else:
                 return response.json(414)
 
@@ -686,41 +684,38 @@ class AiView(View):
             file_post_one = request_dict.get('fileOne', None)
             file_post_two = request_dict.get('fileTwo', None)
             file_post_three = request_dict.get('fileThree', None)
+            file_post_four = request_dict.get('fileFour', None)
 
             file_post_one = file_post_one.replace(' ', '+')
             file_post_two = file_post_two.replace(' ', '+')
             file_post_three = file_post_three.replace(' ', '+')
+            file_post_four = file_post_four.replace(' ', '+')
 
             file_post_one = base64.b64decode(file_post_one)
             file_post_two = base64.b64decode(file_post_two)
             file_post_three = base64.b64decode(file_post_three)
+            file_post_four = base64.b64decode(file_post_four)
 
-            file_list = [file_post_one, file_post_two, file_post_three]
-            del file_post_one, file_post_two, file_post_three
+            file_list = [file_post_one, file_post_two, file_post_three, file_post_four]
+            del file_post_one, file_post_two, file_post_three, file_post_four
 
-            dir_path = os.path.join(BASE_DIR, 'static/ai/' + uid + '/' + str(receiveTime))
+            dir_path = os.path.join(BASE_DIR, 'static/ai/' + uid + '/' + str(n_time))
             if not os.path.exists(dir_path):
                 os.makedirs(dir_path)
             file_path_list = []
-            i = 1
-            for index in file_list:
-                file_path = dir_path + '/' + str(i) + '.jpg'
+            for i, val in enumerate(file_list):
+                # file_path = dir_path + '/' + str(i) + '.jpg'
+                file_path = "{dir_path}/{n_time}_{i}.jpg".format(dir_path=dir_path, n_time=n_time, i=i)
                 file_path_list.append(file_path)
                 with open(file_path, 'wb') as f:
-                    f.write(index)
+                    f.write(val)
                     f.close()
-                i += 1
 
             image_size = 500  # 每张小图片的大小
             image_colnum = 1  # 合并成一张图后,一行有几个小图
             MergePic.merge_images(dir_path, image_size, image_colnum)
             photo = open(dir_path + '.jpg', 'rb')  #打开合成图
 
-            cover = dir_path + '/' + str(i-1) + '.jpg'
-            desc = dir_path + '.jpg'
-            logger.info('----------------cover')
-            logger.info(cover)
-            logger.info(desc)
             # photo = open(r'E:\test---------------\test\snipaste20220121_215952.jpg', 'rb')
             #识别合成图片
             maxLabels = 50
@@ -758,20 +753,16 @@ class AiView(View):
             logger.info(label_list)
 
             # 上传缩略图到s3
-            upload_cover_path = "{uid}/{channel}/cover{n_time}.jpg".format(uid=uid, channel=channel,
-                                                                           n_time=n_time)  # 封面图
-            upload_desc_path = "{uid}/{channel}/desc{n_time}.jpg".format(uid=uid, channel=channel,
-                                                                         n_time=n_time)  # 详情内容图
-            #多线程上传图片
-            thread_cover = threading.Thread(target=self.upload_s3, args=(cover, upload_cover_path))
-            thread_desc = threading.Thread(target=self.upload_s3, args=(desc, upload_desc_path))
-            thread_cover.start()
-            thread_desc.start()
+            for i, val in enumerate(file_path_list):
+                upload_path = "{uid}/{channel}/{n_time}_{i}.jpg".format(uid=uid, channel=channel,
+                                                                             n_time=n_time,i=i)  # 封面图
+                thread_task = threading.Thread(target=self.upload_s3, args=(val, upload_path))
+                thread_task.start()
             #需要删除图片
-
+            # self.del_path(os.path.join(BASE_DIR, 'static/ai/' + uid))
 
             #存储消息以及推送
-            is_st = 1  #单
+            is_st = 3  #多
             # 查询推送数据
             uid_push_qs = UidPushModel.objects.filter(uid_set__uid=uid). \
                 values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id',
@@ -864,24 +855,20 @@ class AiView(View):
             }
             return response.json(500, data)
 
-    def delfile(self, path):
-
-        #   read all the files under the folder
-        fileNames = glob.glob(path + r'\*')
-
-        for fileName in fileNames:
-            try:
-                #           delete file
-                os.remove(fileName)
-            except:
-                try:
-                    #               delete empty folders
-                    os.rmdir(fileName)
-                except:
-                    #               Not empty, delete files under folders
-                    delfile(fileName)
-                    #               now, folders are empty, delete it
-                    os.rmdir(fileName)
+    def del_path(self, path):
+        if not os.path.exists(path):
+            return
+        if os.path.isfile(path):
+            os.remove(path)
+        else:
+            items = os.listdir(path)
+            for f in items:
+                c_path = os.path.join(path, f)
+                if os.path.isdir(c_path):
+                    self.del_path(c_path)
+                else:
+                    os.remove(c_path)
+            os.rmdir(path)
 
 
     ## 检查是否有符合条件的标签
@@ -1095,6 +1082,18 @@ class AiView(View):
 
             elif p['is_st'] == 2:
                 pass
+            elif p['is_st'] == 3:
+                # 列表装载回放时间戳标记
+                p['img_list'] = []
+                for i in range(p['is_st']):
+                    thumbspng = '{uid}/{channel}/{time}_{st}.jpg'.format(uid=devUid, channel=p['Channel'], time=eventTime, st=i)
+                    response_url = aws_s3_client.generate_presigned_url('get_object',
+                                                                             ExpiresIn=300,
+                                                                             Params={
+                                                                                 'Bucket': 'aipush', 'Key': thumbspng
+                                                                             },
+                                                                             )
+                    p['img_list'].append(response_url)
 
             if devUid in uid_type_dict.keys():
                 p['uid_type'] = uid_type_dict[devUid]['type']

+ 85 - 13
Model/models.py

@@ -1614,19 +1614,6 @@ class OrderTaskModel(models.Model):
         verbose_name_plural = verbose_name
 
 
-class OrderUIDModel(models.Model):
-    id = models.AutoField(primary_key=True)
-    uid = models.ForeignKey(UIDModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联uid表')
-    order = models.ForeignKey(OrderTaskModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联订单任务表')
-    add_time = models.IntegerField(default=0, verbose_name='添加时间')
-    update_time = models.IntegerField(default=0, verbose_name='更新时间')
-
-    class Meta:
-        db_table = 'order_uid'
-        verbose_name = '订单与uid关联表'
-        verbose_name_plural = verbose_name
-
-
 class CountryModel(models.Model):
     id = models.AutoField(primary_key=True)
     number = models.IntegerField(unique=True, verbose_name='区号')
@@ -1817,6 +1804,19 @@ class PctestdeviceModel(models.Model):
         ordering = ('id',)
 
 
+class OrderUIDModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    uid = models.ForeignKey(UIDModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联uid表')
+    order = models.ForeignKey(OrderTaskModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联订单任务表')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'order_uid'
+        verbose_name = '订单与uid关联表'
+        verbose_name_plural = verbose_name
+
+
 class PctestfunctionModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     functionname = models.CharField(blank=True, max_length=32, verbose_name=u'职能名字')
@@ -1969,4 +1969,76 @@ class AiProcessTime(models.Model):
         db_table = 'ai_process_time'
         verbose_name = 'ai设备服务表'
         verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class SurveysModel(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    surveys_num = models.CharField(max_length=50, verbose_name='问卷调查编号', default=0)
+    user_type = models.SmallIntegerField(default=0, verbose_name='调查用户对象[1:云存储用户,2:AI用户,3:所有APP用户]')
+    start_time = models.IntegerField(default=0, verbose_name='开始显示时间')
+    end_time = models.IntegerField(default=0, verbose_name='显示结束时间')
+    is_hide = models.SmallIntegerField(default=0, verbose_name='是否显示[0:显示,1:隐藏]')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'surveys'
+        verbose_name = '问卷调查—问卷调查表'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class SurveysCollect(models.model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    surveys_id = models.ForeignKey(SurveysModel, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联问卷表ID')
+    user_id = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE, verbose_name='关联用户表ID')
+    user_sum = models.BigIntegerField(default=0, verbose_name='当前问卷调查用户总数量')
+    read_sum = models.BigIntegerField(default=0, verbose_name='已读用户总数量')
+    commit_sum = models.BigIntegerField(default=0, verbose_name='已答用户总数量')
+    user_ipAddress = models.CharField(max_length=12, verbose_name='用户IP', default=0)
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'surveys_collect'
+        verbose_name = '问卷调查—用户采集表'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class SurverysTitle(models.model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    surveys_id = models.ForeignKey(SurveysModel, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联问卷表ID')
+    title_content = models.CharField(max_length=1000, verbose_name='题目内容', default=0)
+    title_type = models.SmallIntegerField(default=0, verbose_name='题目类型[1:评分,2:选择题,3:填空题]')
+    is_required = models.SmallIntegerField(default=0, verbose_name='题目类型[0:非必选,1:必选]')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'surverys_title'
+        verbose_name = '问卷调查—题目表'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class SurveryOption(models.model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    title_id = models.ForeignKey(SurverysTitle, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联题目表ID')
+    option_content = models.CharField(max_length=1000, verbose_name='选项内容', default=0)
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'survery_option'
+        verbose_name = '问卷调查—选项表'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class SurverysAnswer(models.model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    surveys_id = models.ForeignKey(SurveysModel, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联问卷表ID')
+    title_id = models.ForeignKey(SurverysTitle, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联题目表ID')
+    option_id = models.ForeignKey(SurveryOption, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联选项表ID')
+    user_id = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE, verbose_name='关联用户表ID')
+    answer_conntent = models.CharField(max_length=1000, verbose_name='答案', default=0)
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'surverys_answer'
+        verbose_name = '问卷调查—答案表'
+        verbose_name_plural = verbose_name
         ordering = ('id',)