Browse Source

新增问卷调查功能接口

zhangdongming 3 years ago
parent
commit
16b6dd9280
2 changed files with 294 additions and 224 deletions
  1. 3 3
      Ansjer/urls.py
  2. 291 221
      Controller/SurveysController.py

+ 3 - 3
Ansjer/urls.py

@@ -19,7 +19,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     OrderTaskController, HistoryUIDController, UIDManageUserController, SerialNumberController, CompanyController, \
     RegionController, VPGController, LanguageController, TestController, DeviceConfirmRegion, S3GetStsController, \
     DetectControllerV2, ShadowController, TestDetectController, PcInfo, PctestController, DeviceDebug, PaymentCycle, \
-    DeviceLogController, CouponController, AiController
+    DeviceLogController, CouponController, AiController, SurveysController
 from AdminController import UserManageController, RoleController, MenuController, TestServeController, \
     ServeManagementController, LogManagementController, DeviceManagementController, VersionManagementController, \
     AiServeController
@@ -362,7 +362,7 @@ urlpatterns = [
     re_path('deviceDebug/(?P<operation>.*)', DeviceDebug.DeviceDebug.as_view()),
 
     # 问卷调查
-    # url(r'^api/surveys/(?P<operation>.*)$', SurveysController.SurveysView.as_view()),
+    url(r'^api/cloud/surveys/(?P<operation>.*)$', SurveysController.SurveysView.as_view()),
 
     # 后台界面接口 -----------------------------------------------------
     # 用户登录信息等
@@ -389,7 +389,7 @@ urlpatterns = [
     # AI服务
     re_path('aiServe/(?P<operation>.*)', AiServeController.AiServeView.as_view()),
     # 问卷调查管理
-    # url(r'surveys/(?P<operation>.*)', SurveysController.SurveysView.as_view()),
+    url(r'surveys/(?P<operation>.*)', SurveysController.SurveysView.as_view()),
     # 后台界面接口 -----------------------------------------------------
 
 

+ 291 - 221
Controller/SurveysController.py

@@ -1,222 +1,292 @@
-# #!/usr/bin/python3.6
-# # -*- coding: utf-8 -*-
-# #
-# # Copyright (C) 2022 #
-# # @Time    : 2022/3/9 9:20
-# # @Author  : ming
-# # @Email   : zhangdongming@asj6.wecom.work
-# # @File    : SurveysController.py
-# # @Software: PyCharm
-# import time
-# import json
-# from django.utils.decorators import method_decorator
-# from django.views.decorators.csrf import csrf_exempt
-# from django.views.generic.base import View
-# from Object.TokenObject import TokenObject
-# from Object.ResponseObject import ResponseObject
-# from Model.models import Surveys, SurveysTitle, Order_Model, SurveysAnswer
-# from Service.CommonService import CommonService
+#!/usr/bin/python3.6
+# -*- coding: utf-8 -*-
 #
-#
-# class SurveysView(View):
-#     @method_decorator(csrf_exempt)
-#     def dispatch(self, *args, **kwargs):
-#         return super(SurveysView, self).dispatch(*args, **kwargs)
-#
-#     def get(self, request, *args, **kwargs):
-#         request.encoding = 'utf-8'
-#         operation = kwargs.get('operation')
-#         return self.validation(request.GET, request, operation)
-#
-#     def post(self, request, *args, **kwargs):
-#         request.encoding = 'utf-8'
-#         operation = kwargs.get('operation')
-#         return self.validation(request.POST, request, operation)
-#
-#     def validation(self, request_dict, request, operation):
-#         response = ResponseObject(request_dict.get('language', 'en'), 'pc')
-#         tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'), returntpye='pc')
-#         if not tko:
-#             return response.json(309)
-#         if operation == 'get/info':
-#             token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
-#             response = ResponseObject()
-#             if token.code != 0:
-#                 return response.json(token.code)
-#             userID = token.userID
-#             return self.check_stock_user(userID, request_dict, response)
-#         if operation == 'answer/save':
-#             token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
-#             response = ResponseObject()
-#             if token.code != 0:
-#                 return response.json(token.code)
-#             ip = CommonService.get_ip_address(request)
-#             userID = token.userID
-#             return self.answer_save(userID, ip, request_dict, response)
-#         if operation == 'save':
-#             return self.save(request_dict, response)
-#         if operation == 'edit':
-#             return self.edit(request_dict, response)
-#         if operation == 'list':
-#             return self.get_list(request_dict, response)
-#         if operation == 'title/save':
-#             return self.title_save(request_dict, response)
-#         if operation == 'title/edit':
-#             return self.title_edit(request_dict, response)
-#         if operation == 'title/del':
-#             return self.title_del(request_dict, response)
-#         return response.json(0)
-#
-#     def check_stock_user(self, user_id, request_dict, response):
-#         order = Order_Model.objects.filter(userID=user_id, status=1, order_type=0)
-#         if order.count() == 0:
-#             return response.json(10030)
-#         try:
-#             surveys = Surveys.objects.filter(user_type=1)
-#             if not all(surveys):
-#                 return response.json(173)
-#             result = surveys[0]
-#             startTime = time.localtime(result.start_time)
-#             endTime = time.localtime(result.end_time)
-#             data = {
-#                 'no': result.no,
-#                 'userType': result.user_type,
-#                 'startTime': time.strftime("%Y-%m-%d %H:%M:%S", startTime),
-#                 'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endTime),
-#                 'isHide': result.is_hide,
-#                 'page': 'http://192.168.136.198/surveys?token=' if result.is_hide == 1 else ''
-#             }
-#             return response.json(0, data)
-#         except Exception as e:
-#             print(e)
-#             return response.json(500, repr(e))
-#
-#     def answer_save(self, userId, ip, request_dict, response):
-#         no = request_dict.get('no', None)
-#         if not no:
-#             return response.json(10, 'no is null')
-#         survey = Surveys.objects.filter(id=1)
-#         if survey.exists():
-#             s_id = survey.id
-#             survey_title = SurveysTitle.objects.filter(survey=s_id)
-#             if survey_title.exists():
-#                 score = request_dict.get('score', None)
-#                 topicA = request_dict.get('topicA', None)
-#                 topicB = request_dict.get('topicB', None)
-#                 topicC = request_dict.get('topicC', None)
-#                 topicD = request_dict.get('topicD', None)
-#                 topicF = request_dict.get('topicF', None)
-#                 answer = SurveysAnswer(title=survey_title.id, user=userId, ip=ip, answer_1=score, answer_2=topicA,
-#                                        answer_3=topicB, answer_4=topicC, answer_5=topicD, answer_6=topicF)
-#                 result = answer.save()
-#                 print(result)
-#         return response.json(0)
-#
-#     def get_list(self, request_dict, response):
-#         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:
-#             request_qs = Surveys.objects.all()
-#             total = request_qs.count()
-#             surveys_list = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
-#             result_list = []
-#             for surveys in surveys_list:
-#                 start_time = time.localtime(surveys.start_time)
-#                 endT_time = time.localtime(surveys.end_time)
-#                 created_time = time.localtime(surveys.created_time)
-#                 result_list.append({
-#                     'id': surveys.id,
-#                     'no': surveys.no,
-#                     'userType': surveys.user_type,
-#                     'startTime': time.strftime("%Y-%m-%d %H:%M:%S", start_time),
-#                     'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endT_time),
-#                     'isHide': surveys.is_hide,
-#                     'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
-#                 })
-#             return response.json(0, {'list': result_list, 'total': total})
-#         except Exception as e:
-#             print(e)
-#             return response.json(500, repr(e))
-#
-#     def save(self, request_dict, response):
-#         no = request_dict.get('no', None)
-#         if no:
-#             if Surveys.objects.filter(no=no).exists():
-#                 return response.json(10, '已存在')
-#             no = request_dict.get('no', None)
-#             userType = request_dict.get('userType', None)
-#             startTime = request_dict.get('dateTime[0]', None)
-#             endTime = request_dict.get('dateTime[1]', None)
-#             isHide = request_dict.get('isHide', None)
-#             isHide = 1 if isHide == 'true' else 0
-#             createdTime = int(time.time())
-#             try:
-#                 surveys = Surveys(no=no, user_type=userType, start_time=int(startTime),
-#                                   end_time=endTime, is_hide=isHide, created_time=int(createdTime))
-#                 surveys.save()
-#                 return response.json(0)
-#             except Exception as e:
-#                 print(e)
-#                 return response.json(500, repr(e))
-#         return response.json(0)
-#
-#     def edit(self, request_dict, response):
-#         sur_id = request_dict.get('id', None)
-#         if not sur_id:
-#             return response.json(10, 'id不存在')
-#
-#         userType = request_dict.get('userType', None)
-#         startTime = request_dict.get('startTime', None)
-#         endTime = request_dict.get('endTime', None)
-#         isHide = request_dict.get('isHide', None)
-#         surveys = Surveys.objects.filter(id=sur_id)
-#         surveys.update(user_type=int(userType), start_time=int(startTime), end_time=int(endTime), is_hide=int(isHide))
-#         return response.json(0)
-#
-#     def delete(self, request_dict, response):
-#         sId = request_dict.get('id', None)
-#         if not sId:
-#             return response.json(10, 'id不存在')
-#         Surveys.objects.filter(id=sId).delete()
-#         response.json(0)
-#
-#     def title_save(self, request_dict, response):
-#         surveyId = request_dict.get('surveyId', None)
-#         if not surveyId:
-#             return response(10, 'id不存在')
-#         content = request_dict.get('content', None)
-#         titleType = request_dict.get('titleType', None)
-#         isRequired = request_dict.get('isRequired', None)
-#         createdTime = int(time.time())
-#         try:
-#             surveys_title = SurveysTitle(surveys_id=surveyId, title_content=content, title_type=titleType,
-#                                          is_required=isRequired, created_time=createdTime)
-#             surveys_title.save()
-#             return response.json(0)
-#         except Exception as e:
-#             print(e)
-#             return response.json(500, repr(e))
-#
-#     def title_edit(self, request_dict, response):
-#         title_id = request_dict.get('id', None)
-#         if not title_id:
-#             return response.json(10, 'id不存在')
-#
-#         content = request_dict.get('content', None)
-#         titleType = request_dict.get('titleType', None)
-#         isRequired = request_dict.get('isRequired', None)
-#         surveys_title = SurveysTitle.objects.filter(id=title_id)
-#         surveys_title.update(title_content=content, title_type=int(titleType), is_required=int(isRequired))
-#         return response.json(0)
-#
-#     def title_del(self, request_dict, response):
-#         title_id = request_dict.get('id', None)
-#         if not title_id:
-#             return response.json(10, 'id不存在')
-#         SurveysTitle.objects.filter(id=title_id).delete()
-#         return response.json(0)
+# Copyright (C) 2022 #
+# @Time    : 2022/3/9 9:20
+# @Author  : ming
+# @Email   : zhangdongming@asj6.wecom.work
+# @File    : SurveysController.py
+# @Software: PyCharm
+import time
+import json
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+from django.views.generic.base import View
+from Object.TokenObject import TokenObject
+from Object.ResponseObject import ResponseObject
+from Model.models import Surveys, SurveysTitle, Order_Model, CloudVodSurveysAnswer, Device_User
+from Service.CommonService import CommonService
+
+
+class SurveysView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(SurveysView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        response = ResponseObject(request_dict.get('language', 'en'), 'pc')
+        tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'), returntpye='pc')
+        if not tko:
+            return response.json(309)
+
+        ''' API '''
+        if operation == 'get/info':
+            token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+            response = ResponseObject()
+            if token.code != 0:
+                return response.json(token.code)
+            userID = token.userID
+            return self.check_stock_user(userID, request_dict, response)
+        if operation == 'answer/save':
+            token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+            response = ResponseObject()
+            if token.code != 0:
+                return response.json(token.code)
+            ip = CommonService.get_ip_address(request)
+            userID = token.userID
+            return self.answer_save(userID, ip, request_dict, response)
+
+        ''' 后台管理'''
+        if operation == 'save':
+            return self.save(request_dict, response)
+        if operation == 'edit':
+            return self.edit(request_dict, response)
+        if operation == 'list':
+            return self.get_page(request_dict, response)
+        if operation == 'title/list':
+            return self.get_title_list(request_dict, response)
+        if operation == 'title/save':
+            return self.title_save(request_dict, response)
+        if operation == 'title/edit':
+            return self.title_edit(request_dict, response)
+        if operation == 'title/del':
+            return self.title_del(request_dict, response)
+        if operation == 'cloud/vod/answer/page':
+            return self.cloud_surveys_answer_page(request_dict, response)
+        return response.json(0)
+
+    def check_stock_user(self, user_id, request_dict, response):
+        order = Order_Model.objects.filter(userID=user_id, status=1, order_type=0)
+        if order.count() == 0:
+            return response.json(10030)
+        try:
+            no = '01'
+            surveys = Surveys.objects.filter(no=no, user_type=1)
+            if not all(surveys):
+                return response.json(173)
+            result = surveys[0]
+            surveys_title = SurveysTitle.objects.filter(surveys_id=result.id).order_by('-created_time')
+            submit = 0
+            if surveys_title.exists():
+                surveys_title = surveys_title[0]
+                cloud_vod = CloudVodSurveysAnswer.objects.filter(title_id=surveys_title.id, user_id=user_id)
+                if cloud_vod.exists():
+                    submit = 1
+            startTime = time.localtime(result.start_time)
+            endTime = time.localtime(result.end_time)
+            data = {
+                'no': result.no,
+                'userType': result.user_type,
+                'startTime': time.strftime("%Y-%m-%d %H:%M:%S", startTime),
+                'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endTime),
+                'isShow': result.is_show,
+                'isSubmit': submit,
+                'page': 'http://192.168.136.192/surveys?token=' if result.is_show == 1 else ''
+            }
+            return response.json(0, data)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def answer_save(self, userId, ip, request_dict, response):
+        try:
+            no = request_dict.get('no', None)
+            if not no:
+                return response.json(10, 'no is null')
+            survey = Surveys.objects.filter(no=no)
+            if survey.exists():
+                survey = survey[0]
+                survey_title = SurveysTitle.objects.filter(surveys=survey.id)
+                if survey_title.exists():
+                    survey_title = survey_title[0]
+                    cloud_vod = CloudVodSurveysAnswer.objects.filter(title_id=survey_title.id, user_id=userId)
+                    if cloud_vod.exists():
+                        return response.json(10, "Do not submit twice")
+                    score = request_dict.get('score', None)
+                    topicA = request_dict.get('topicA', None)
+                    topicB = request_dict.get('topicB', None)
+                    topicC = request_dict.get('topicC', None)
+                    topicD = request_dict.get('topicD', None)
+                    topicF = request_dict.get('topicF', None)
+                    createdTime = int(time.time())
+                    answer = CloudVodSurveysAnswer(title_id=survey_title.id, user_id=userId, ip=ip, answer_1=score,
+                                                   answer_2=topicA,
+                                                   answer_3=topicB, answer_4=topicC, answer_5=topicD, answer_6=topicF,
+                                                   created_time=createdTime)
+                    answer.save()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def get_page(self, request_dict, response):
+        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:
+            request_qs = Surveys.objects.all()
+            total = request_qs.count()
+            surveys_list = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
+            result_list = []
+            for surveys in surveys_list:
+                start_time = time.localtime(surveys.start_time)
+                endT_time = time.localtime(surveys.end_time)
+                created_time = time.localtime(surveys.created_time)
+                result_list.append({
+                    'id': surveys.id,
+                    'no': surveys.no,
+                    'userType': surveys.user_type,
+                    'startTime': time.strftime("%Y-%m-%d %H:%M:%S", start_time),
+                    'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endT_time),
+                    'isShow': surveys.is_show,
+                    'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
+                })
+            return response.json(0, {'list': result_list, 'total': total})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def save(self, request_dict, response):
+        no = request_dict.get('no', None)
+        if no:
+            if Surveys.objects.filter(no=no).exists():
+                return response.json(10, '已存在')
+            no = request_dict.get('no', None)
+            userType = request_dict.get('userType', None)
+            startTime = request_dict.get('dateTime[0]', None)
+            endTime = request_dict.get('dateTime[1]', None)
+            isShow = request_dict.get('isShow', None)
+            isShow = 1 if isShow == 'true' else 0
+            createdTime = int(time.time())
+            try:
+                surveys = Surveys(no=no, user_type=userType, start_time=int(startTime),
+                                  end_time=endTime, is_show=isShow, created_time=int(createdTime))
+                surveys.save()
+                return response.json(0)
+            except Exception as e:
+                print(e)
+                return response.json(500, repr(e))
+        return response.json(0)
+
+    def edit(self, request_dict, response):
+        sur_id = request_dict.get('id', None)
+        if not sur_id:
+            return response.json(10, 'id不存在')
+
+        userType = request_dict.get('userType', None)
+        startTime = request_dict.get('startTime', None)
+        endTime = request_dict.get('endTime', None)
+        isShow = request_dict.get('isShow', None)
+        surveys = Surveys.objects.filter(id=sur_id)
+        surveys.update(user_type=int(userType), start_time=int(startTime), end_time=int(endTime), is_show=int(isShow))
+        return response.json(0)
+
+    def delete(self, request_dict, response):
+        sId = request_dict.get('id', None)
+        if not sId:
+            return response.json(10, 'id不存在')
+        Surveys.objects.filter(id=sId).delete()
+        response.json(0)
+
+    def title_save(self, request_dict, response):
+        surveyId = request_dict.get('surveyId', None)
+        if not surveyId:
+            return response(10, 'id is null')
+        content = request_dict.get('content', None)
+        createdTime = int(time.time())
+        try:
+            surveys_title = SurveysTitle(surveys_id=surveyId, title_content=content
+                                         , created_time=createdTime)
+            surveys_title.save()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def get_title_list(self, request_dict, response):
+        surveyId = request_dict.get('surveyId', None)
+        if not surveyId:
+            return response.json(10, '问卷id不存在')
+        title_list = SurveysTitle.objects.filter(surveys_id=surveyId).order_by('-created_time')
+        if not all(title_list):
+            return response.json(173)
+        content = title_list[0]
+        data = json.loads(content.title_content)
+        return response.json(0, {'answers': data})
+
+    def title_edit(self, request_dict, response):
+        title_id = request_dict.get('id', None)
+        if not title_id:
+            return response.json(10, 'id不存在')
+        content = request_dict.get('content', None)
+        surveys_title = SurveysTitle.objects.filter(surveys_id=title_id)
+        surveys_title.update(title_content=content)
+        return response.json(0)
+
+    def title_del(self, request_dict, response):
+        title_id = request_dict.get('id', None)
+        if not title_id:
+            return response.json(10, 'id不存在')
+        SurveysTitle.objects.filter(id=title_id).delete()
+        return response.json(0)
+
+    def cloud_surveys_answer_page(self, request_dict, response):
+        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:
+            request_qs = CloudVodSurveysAnswer.objects.all()
+            total = request_qs.count()
+            answer_page = request_qs.filter().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)
+                if not all(d_user):
+                    return response.json(173)
+                d_user = d_user[0]
+                created_time = time.localtime(answer.created_time)
+                result_list.append({
+                    'id': answer.id,
+                    'uId': d_user.userID,
+                    'uName': d_user.username,
+                    'nickName': d_user.NickName,
+                    'answer1': answer.answer_1,
+                    'answer2': answer.answer_2,
+                    'answer3': answer.answer_3,
+                    'answer4': answer.answer_4,
+                    'answer5': answer.answer_5,
+                    'answer6': answer.answer_6,
+                    'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
+                })
+            return response.json(0, {'list': result_list, 'total': total})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))