Pārlūkot izejas kodu

封装用户反馈信息导出数据

guanhailong 2 gadi atpakaļ
vecāks
revīzija
a5ec2ecf77
1 mainītis faili ar 57 papildinājumiem un 7 dzēšanām
  1. 57 7
      AdminController/UserManageController.py

+ 57 - 7
AdminController/UserManageController.py

@@ -477,21 +477,21 @@ class UserManagement(View):
         fileType = request_dict.get('fileType', None)  # 导出参数
         pageNo = request_dict.get('pageNo', None)
         pageSize = request_dict.get('pageSize', None)
-
         if not all([pageNo, pageSize]):
             return response.json(444)
-
         page = int(pageNo)
         line = int(pageSize)
         try:
             filter_data = {}
-            if status or username or collect_status:
+            if status or username or collect_status or fileType:
                 if status:
                     filter_data['status'] = int(status)
                 if username:
                     filter_data['userID_id'] = ModelService.get_userID_byname(username)
                 if collect_status:
                     filter_data['collect_status'] = int(collect_status)
+                if fileType:  # 判断是否导出
+                    return self.download(status, collect_status, response)
             feed_back_qs = FeedBackModel.objects.filter()
             if filter_data:
                 feed_back_qs = feed_back_qs.filter(**filter_data).values()
@@ -514,10 +514,7 @@ class UserManagement(View):
                 'score',
                 'collect_status'
             )
-            if fileType:  # 判断是否导出
-                feed_backs = feed_backs
-            else:
-                feed_backs = feed_backs[(page - 1) * line: page * line]
+            feed_backs = feed_backs[(page - 1) * line: page * line]
             feed_back_id_list = [feed_back['id'] for feed_back in feed_backs]
             stat_res_qs = StatResModel.objects.filter(
                 feedbackmodel__id__in=feed_back_id_list).values(
@@ -693,3 +690,56 @@ class UserManagement(View):
         else:
             FeedBackModel.objects.filter(id=feedBackID).update(collect_status=collect_status)
         return response.json(0)
+
+    def download(self, status, collect_status, response):
+        try:
+            with transaction.atomic():
+                filter_data = {}
+                if status or collect_status:
+                    if status:
+                        filter_data['status'] = int(status)
+                    if collect_status:
+                        filter_data['collect_status'] = int(collect_status)
+                feed_back_qs = FeedBackModel.objects.filter()
+                if filter_data:
+                    feed_back_qs = feed_back_qs.filter(**filter_data)
+                feed_backs = feed_back_qs.values(
+                    'id',
+                    'userID__username',
+                    'userID__phone',
+                    'userID__userEmail',
+                    'content',
+                    'addTime',
+                    'status',
+                    'type',
+                    'app',
+                    'app_version',
+                    'phone_model',
+                    'os_version',
+                    'uid',
+                    'appBundleId',
+                    'score',
+                    'collect_status'
+                )
+                feed_back_id_list = [feed_back['id'] for feed_back in feed_backs]
+                stat_res_qs = StatResModel.objects.filter(
+                    feedbackmodel__id__in=feed_back_id_list).values(
+                    'name', 'feedbackmodel__id')
+                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+                bucket = oss2.Bucket(
+                    auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
+                feed_back_list = []
+                for feed_back in feed_backs:
+                    feed_back['img_url'] = []
+                    for stat_res in stat_res_qs:
+                        if stat_res['feedbackmodel__id'] == feed_back['id']:
+                            obj = 'feedback/' + stat_res['name']
+                            img_url = bucket.sign_url('GET', obj, 3600)
+                            feed_back['img_url'].append(img_url)
+                            if not feed_back['userID__username']:
+                                feed_back['userID__username'] = feed_back['userID__userEmail'] if feed_back[
+                                    'userID__userEmail'] else feed_back['userID__phone']
+                    feed_back_list.append(feed_back)
+            return response.json(0, {'list': feed_back_list})
+        except Exception as e:
+            print(e)