Эх сурвалжийг харах

修改问卷调查问卷表,新增问卷调查类试图

zhangdongming 3 жил өмнө
parent
commit
360e252bf7

+ 8 - 1
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
@@ -360,6 +360,9 @@ urlpatterns = [
     # url(r'^deviceDebug/(?P<operation>.*)$', DeviceDebug.DeviceDebug.as_view()),
     re_path('deviceDebug/(?P<operation>.*)', DeviceDebug.DeviceDebug.as_view()),
 
+    # 问卷调查
+    url(r'^api/surveys/(?P<operation>.*)$', SurveysController.SurveysView.as_view()),
+
     # 后台界面接口 -----------------------------------------------------
     # 用户登录信息等
     url(r'^login$', UserManageController.LoginView.as_view()),
@@ -383,9 +386,13 @@ urlpatterns = [
     # 日志管理
     re_path('logManagement/(?P<operation>.*)', LogManagementController.LogManagementView.as_view()),
     # AI服务
+    # 问卷调查管理
+    url(r'surveys/(?P<operation>.*)', SurveysController.SurveysView.as_view()),
+
     re_path('aiServe/(?P<operation>.*)', AiServeController.AiServeView.as_view()),
     # 后台界面接口 -----------------------------------------------------
 
+
     re_path('(?P<path>.*)', LogManager.errorPath),
 
 ]

+ 222 - 0
Controller/SurveysController.py

@@ -0,0 +1,222 @@
+#!/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
+
+
+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)

+ 10 - 7
Model/models.py

@@ -1985,9 +1985,7 @@ class Surveys(models.Model):
 class SurveysTitle(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     surveys = models.ForeignKey(Surveys, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联问卷表ID')
-    title_content = models.CharField(max_length=255, 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:必选]')
+    title_content = models.TextField(blank=True, verbose_name='题目内容', default=0)
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
 
     class Meta:
@@ -1997,13 +1995,18 @@ class SurveysTitle(models.Model):
         ordering = ('id',)
 
 
-
 class SurveysAnswer(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
     title = models.ForeignKey(SurveysTitle, to_field='id', default='', on_delete=models.CASCADE, verbose_name='关联题目表ID')
-    user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE, verbose_name='关联用户表ID')
-    answer_content = models.TextField(blank=True, verbose_name='答案', default='')
-    user_ipAddress = models.CharField(max_length=12, verbose_name='用户IP', default=0)
+    user = models.ForeignKey(Device_User, to_field='userID', default='', on_delete=models.CASCADE,
+                             verbose_name='关联用户表ID')
+    answer_1 = models.CharField(max_length=500, blank=True, verbose_name='答案1', default='')
+    answer_2 = models.CharField(max_length=500, blank=True, verbose_name='答案2', default='')
+    answer_3 = models.CharField(max_length=500, blank=True, verbose_name='答案3', default='')
+    answer_4 = models.CharField(max_length=500, blank=True, verbose_name='答案4', default='')
+    answer_5 = models.CharField(max_length=500, blank=True, verbose_name='答案5', default='')
+    answer_6 = models.CharField(max_length=500, blank=True, verbose_name='答案6', default='')
+    ip = models.CharField(max_length=32, default='', db_index=True, blank=True, verbose_name=u'访问ip地址')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
 
     class Meta: