Ver código fonte

新增后台问卷答案条件查询

zhangdongming 3 anos atrás
pai
commit
b6c323eb83
1 arquivos alterados com 33 adições e 1 exclusões
  1. 33 1
      Controller/SurveysController.py

+ 33 - 1
Controller/SurveysController.py

@@ -9,6 +9,7 @@
 # @Software: PyCharm
 import time
 import json
+from django.db.models import Count
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
@@ -285,6 +286,12 @@ class SurveysView(View):
     def cloud_surveys_answer_page(self, request_dict, response):
         pageNo = request_dict.get('pageNo', None)
         pageSize = request_dict.get('pageSize', None)
+        userName = request_dict.get('userName', None)
+        countryName = request_dict.get('countryName', None)
+        timeRange = request_dict.getlist('timeRange[]', None)
+        num = request_dict.get('num', 0)
+        num = int(num)
+        optVal = request_dict.getlist('optVal', None)
         if not all([pageNo, pageSize]):
             return response.json(444)
 
@@ -292,8 +299,33 @@ class SurveysView(View):
         line = int(pageSize)
         try:
             request_qs = CloudVodSurveysAnswer.objects.all()
+            if userName:
+                request_qs = request_qs.filter(user__username__contains=userName)
+            if countryName:
+                request_qs = request_qs.filter(country_name=countryName)
+            if num >= 0 and len(optVal) > 0:
+                condition = int(optVal[0])
+                if condition == 1:
+                    request_qs = request_qs.filter(answer1__gt=num)
+                elif condition == 2:
+                    request_qs = request_qs.filter(answer1__lt=num)
+                elif condition == 3:
+                    request_qs = request_qs.filter(answer1=num)
+                elif condition == 4:
+                    request_qs = request_qs.filter(answer1__gte=num)
+                elif condition == 5:
+                    request_qs = request_qs.filter(answer1__lte=num)
+
+            if timeRange:
+                startTime, endTime = int(
+                    timeRange[0][:-3]), int(timeRange[1][:-3])
+                request_qs = request_qs.filter(
+                    created_time__gte=startTime,
+                    created_time__lte=endTime)
+            if not request_qs.exists():
+                return response.json(0, [])
             total = request_qs.count()
-            answer_page = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
+            answer_page = request_qs.order_by('-created_time')[(page - 1) * line:page * line]
             result_list = []
             for answer in answer_page:
                 d_user = Device_User.objects.filter(userID=answer.user_id)