| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 | 
							- #!/usr/bin/python3.6
 
- # -*- coding: utf-8 -*-
 
- #
 
- # Copyright (C) 2022 #
 
- # @Time    : 2022/3/9 9:20
 
- # @Author  : ming
 
- # @Email   : zhangdongming@asj6.wecom.work
 
- # @File    : SurveysManageController.py
 
- # @Software: PyCharm
 
- import json
 
- import time
 
- from django.db import connection
 
- from django.utils.decorators import method_decorator
 
- from django.views.decorators.csrf import csrf_exempt
 
- from django.views.generic.base import View
 
- from Model.models import Surveys, SurveysTitle, CloudVodSurveysAnswer, Device_User, SurveysUserLog
 
- from Object.ResponseObject import ResponseObject
 
- from Object.TokenObject import TokenObject
 
- 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):
 
-         token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
 
-         response = ResponseObject()
 
-         if token.code != 0:
 
-             return response.json(token.code)
 
-         ''' 后台管理'''
 
-         response = ResponseObject(returntype='pc')
 
-         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)
 
-         if operation == 'cloud/storage/log/page':
 
-             return self.cloud_storage_user_log_page(request_dict, response)
 
-         return response.json(0)
 
-     @classmethod
 
-     def get_page(cls, 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))
 
-     @classmethod
 
-     def save(cls, 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)
 
-     @classmethod
 
-     def edit(cls, 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('dateTime[0]', None)
 
-         endTime = request_dict.get('dateTime[1]', None)
 
-         isShow = request_dict.get('isShow', None)
 
-         isShow = 1 if isShow == 'true' else 0
 
-         print(endTime)
 
-         Surveys.objects.filter(id=int(sur_id)).update(user_type=int(userType), start_time=int(startTime),
 
-                                                       end_time=int(endTime),
 
-                                                       is_show=int(isShow))
 
-         return response.json(0)
 
-     @classmethod
 
-     def delete(cls, 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)
 
-     @classmethod
 
-     def title_save(cls, request_dict, response):
 
-         surveyId = request_dict.get('surveyId', None)
 
-         if not surveyId:
 
-             return response(10, 'surveyId is null')
 
-         t_id = request_dict.get('id', None)
 
-         content = request_dict.get('content', None)
 
-         createdTime = int(time.time())
 
-         try:
 
-             title = SurveysTitle.objects.filter(id=t_id)
 
-             if title.exists():
 
-                 title.update(title_content=content)
 
-             else:
 
-                 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))
 
-     @classmethod
 
-     def get_title_list(cls, request_dict, response):
 
-         surveyId = request_dict.get('surveyId', None)
 
-         info = request_dict.get('info', None)
 
-         if not surveyId:
 
-             return response.json(10, '问卷id不存在')
 
-         title_list = SurveysTitle.objects.filter(surveys_id=surveyId).order_by('-created_time')
 
-         if not title_list.exists():
 
-             if info:
 
-                 return response.json(0, {'id': None, 'content': None})
 
-             return response.json(173)
 
-         content = title_list[0]
 
-         if info:
 
-             return response.json(0, {'id': content.id, 'content': content.title_content})
 
-         data = json.loads(content.title_content)
 
-         return response.json(0, {'answers': data})
 
-     @classmethod
 
-     def title_edit(cls, 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)
 
-     @classmethod
 
-     def title_del(cls, 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)
 
-     @classmethod
 
-     def cloud_surveys_answer_page(cls, 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)
 
-         page = int(pageNo)
 
-         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.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.answer1,
 
-                     'answer2': answer.answer2,
 
-                     'answer3': answer.answer3,
 
-                     'answer4': answer.answer4,
 
-                     'answer5': answer.answer5,
 
-                     'answer6': answer.answer6,
 
-                     'country': answer.country_name,
 
-                     '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))
 
-     ''' 云存用户问卷调查统计 '''
 
-     @classmethod
 
-     def cloud_storage_user_log_page(cls, request_dict, response):
 
-         pageNo = request_dict.get('pageNo', None)
 
-         pageSize = request_dict.get('pageSize', None)
 
-         if not all([pageNo, pageSize]):
 
-             return response.json(444)
 
-         try:
 
-             page = int(pageNo)
 
-             size = int(pageSize)
 
-             cursor = connection.cursor()
 
-             sql = 'SELECT o.orderID,o.userID_id,ca.id,ca.country_name as countryName '
 
-             sql += 'FROM orders o LEFT JOIN cloud_vod_surveys_answer ca ON o.userID_id = ca.user_id '
 
-             sql += ' WHERE o.status = %s AND o.order_type = %s GROUP BY o.userID_id '
 
-             cursor.execute(sql, [1, 0, ])
 
-             cloud_count = cursor.fetchall()
 
-             total = len(cloud_count)
 
-             sql += 'order by ca.created_time DESC,orderID DESC LIMIT %s,%s '
 
-             cursor.execute(sql, [1, 0, ((page - 1) * size), size, ])
 
-             data_obj = cursor.fetchall()
 
-             cursor.close()  # 执行完,关闭
 
-             connection.close()
 
-             result_list = []
 
-             col_names = [desc[0] for desc in cursor.description]
 
-             for item in data_obj:
 
-                 tMap = dict(zip(col_names, item))
 
-                 user_id = tMap['userID_id']
 
-                 d_user = Device_User.objects.filter(userID=user_id)
 
-                 tMap['uName'] = d_user[0].username
 
-                 tMap['nickName'] = d_user[0].NickName
 
-                 tMap.update({"type": 1})
 
-                 survey_log_qs = SurveysUserLog.objects.filter(user_id=user_id)
 
-                 if survey_log_qs.exists():
 
-                     survey_log = survey_log_qs[0]
 
-                     created_time = time.localtime(survey_log.created_time)
 
-                     tMap.update({"type": survey_log.type})
 
-                     tMap.update({"isFilled": survey_log.is_filled})
 
-                     tMap['createdTime'] = time.strftime("%Y-%m-%d %H:%M:%S", created_time),
 
-                     tMap.update({"isUpgrade": 1})
 
-                 else:
 
-                     tMap.update({"isFilled": 0})
 
-                     tMap.update({"createdTime": ''})
 
-                     tMap.update({"isUpgrade": 0})
 
-                 result_list.append(tMap)
 
-             return response.json(0, {'list': result_list, 'total': total})
 
-         except Exception as e:
 
-             print(e)
 
-             return response.json(500, repr(e))
 
 
  |