SurveysController.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. #!/usr/bin/python3.6
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright (C) 2022 #
  5. # @Time : 2022/3/9 9:20
  6. # @Author : ming
  7. # @Email : zhangdongming@asj6.wecom.work
  8. # @File : SurveysController.py
  9. # @Software: PyCharm
  10. import time
  11. import json
  12. from django.utils.decorators import method_decorator
  13. from django.views.decorators.csrf import csrf_exempt
  14. from django.views.generic.base import View
  15. from Object.TokenObject import TokenObject
  16. from Object.ResponseObject import ResponseObject
  17. from Model.models import Surveys, SurveysTitle, Order_Model, SurveysAnswer
  18. from Service.CommonService import CommonService
  19. class SurveysView(View):
  20. @method_decorator(csrf_exempt)
  21. def dispatch(self, *args, **kwargs):
  22. return super(SurveysView, self).dispatch(*args, **kwargs)
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. operation = kwargs.get('operation')
  26. return self.validation(request.GET, request, operation)
  27. def post(self, request, *args, **kwargs):
  28. request.encoding = 'utf-8'
  29. operation = kwargs.get('operation')
  30. return self.validation(request.POST, request, operation)
  31. def validation(self, request_dict, request, operation):
  32. response = ResponseObject(request_dict.get('language', 'en'), 'pc')
  33. tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'), returntpye='pc')
  34. if not tko:
  35. return response.json(309)
  36. if operation == 'get/info':
  37. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  38. response = ResponseObject()
  39. if token.code != 0:
  40. return response.json(token.code)
  41. userID = token.userID
  42. return self.check_stock_user(userID, request_dict, response)
  43. if operation == 'answer/save':
  44. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  45. response = ResponseObject()
  46. if token.code != 0:
  47. return response.json(token.code)
  48. ip = CommonService.get_ip_address(request)
  49. userID = token.userID
  50. return self.answer_save(userID, ip, request_dict, response)
  51. if operation == 'save':
  52. return self.save(request_dict, response)
  53. if operation == 'edit':
  54. return self.edit(request_dict, response)
  55. if operation == 'list':
  56. return self.get_list(request_dict, response)
  57. if operation == 'title/save':
  58. return self.title_save(request_dict, response)
  59. if operation == 'title/edit':
  60. return self.title_edit(request_dict, response)
  61. if operation == 'title/del':
  62. return self.title_del(request_dict, response)
  63. return response.json(0)
  64. def check_stock_user(self, user_id, request_dict, response):
  65. order = Order_Model.objects.filter(userID=user_id, status=1, order_type=0)
  66. if order.count() == 0:
  67. return response.json(10030)
  68. try:
  69. surveys = Surveys.objects.filter(user_type=1)
  70. if not all(surveys):
  71. return response.json(173)
  72. result = surveys[0]
  73. startTime = time.localtime(result.start_time)
  74. endTime = time.localtime(result.end_time)
  75. data = {
  76. 'no': result.no,
  77. 'userType': result.user_type,
  78. 'startTime': time.strftime("%Y-%m-%d %H:%M:%S", startTime),
  79. 'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endTime),
  80. 'isHide': result.is_hide,
  81. 'page': 'http://192.168.136.198/surveys?token=' if result.is_hide == 1 else ''
  82. }
  83. return response.json(0, data)
  84. except Exception as e:
  85. print(e)
  86. return response.json(500, repr(e))
  87. def answer_save(self, userId, ip, request_dict, response):
  88. no = request_dict.get('no', None)
  89. if not no:
  90. return response.json(10, 'no is null')
  91. survey = Surveys.objects.filter(id=1)
  92. if survey.exists():
  93. s_id = survey.id
  94. survey_title = SurveysTitle.objects.filter(survey=s_id)
  95. if survey_title.exists():
  96. score = request_dict.get('score', None)
  97. topicA = request_dict.get('topicA', None)
  98. topicB = request_dict.get('topicB', None)
  99. topicC = request_dict.get('topicC', None)
  100. topicD = request_dict.get('topicD', None)
  101. topicF = request_dict.get('topicF', None)
  102. answer = SurveysAnswer(title=survey_title.id, user=userId, ip=ip, answer_1=score, answer_2=topicA,
  103. answer_3=topicB, answer_4=topicC, answer_5=topicD, answer_6=topicF)
  104. result = answer.save()
  105. print(result)
  106. return response.json(0)
  107. def get_list(self, request_dict, response):
  108. pageNo = request_dict.get('pageNo', None)
  109. pageSize = request_dict.get('pageSize', None)
  110. if not all([pageNo, pageSize]):
  111. return response.json(444)
  112. page = int(pageNo)
  113. line = int(pageSize)
  114. try:
  115. request_qs = Surveys.objects.all()
  116. total = request_qs.count()
  117. surveys_list = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
  118. result_list = []
  119. for surveys in surveys_list:
  120. start_time = time.localtime(surveys.start_time)
  121. endT_time = time.localtime(surveys.end_time)
  122. created_time = time.localtime(surveys.created_time)
  123. result_list.append({
  124. 'id': surveys.id,
  125. 'no': surveys.no,
  126. 'userType': surveys.user_type,
  127. 'startTime': time.strftime("%Y-%m-%d %H:%M:%S", start_time),
  128. 'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endT_time),
  129. 'isHide': surveys.is_hide,
  130. 'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
  131. })
  132. return response.json(0, {'list': result_list, 'total': total})
  133. except Exception as e:
  134. print(e)
  135. return response.json(500, repr(e))
  136. def save(self, request_dict, response):
  137. no = request_dict.get('no', None)
  138. if no:
  139. if Surveys.objects.filter(no=no).exists():
  140. return response.json(10, '已存在')
  141. no = request_dict.get('no', None)
  142. userType = request_dict.get('userType', None)
  143. startTime = request_dict.get('dateTime[0]', None)
  144. endTime = request_dict.get('dateTime[1]', None)
  145. isHide = request_dict.get('isHide', None)
  146. isHide = 1 if isHide == 'true' else 0
  147. createdTime = int(time.time())
  148. try:
  149. surveys = Surveys(no=no, user_type=userType, start_time=int(startTime),
  150. end_time=endTime, is_hide=isHide, created_time=int(createdTime))
  151. surveys.save()
  152. return response.json(0)
  153. except Exception as e:
  154. print(e)
  155. return response.json(500, repr(e))
  156. return response.json(0)
  157. def edit(self, request_dict, response):
  158. sur_id = request_dict.get('id', None)
  159. if not sur_id:
  160. return response.json(10, 'id不存在')
  161. userType = request_dict.get('userType', None)
  162. startTime = request_dict.get('startTime', None)
  163. endTime = request_dict.get('endTime', None)
  164. isHide = request_dict.get('isHide', None)
  165. surveys = Surveys.objects.filter(id=sur_id)
  166. surveys.update(user_type=int(userType), start_time=int(startTime), end_time=int(endTime), is_hide=int(isHide))
  167. return response.json(0)
  168. def delete(self, request_dict, response):
  169. sId = request_dict.get('id', None)
  170. if not sId:
  171. return response.json(10, 'id不存在')
  172. Surveys.objects.filter(id=sId).delete()
  173. response.json(0)
  174. def title_save(self, request_dict, response):
  175. surveyId = request_dict.get('surveyId', None)
  176. if not surveyId:
  177. return response(10, 'id不存在')
  178. content = request_dict.get('content', None)
  179. titleType = request_dict.get('titleType', None)
  180. isRequired = request_dict.get('isRequired', None)
  181. createdTime = int(time.time())
  182. try:
  183. surveys_title = SurveysTitle(surveys_id=surveyId, title_content=content, title_type=titleType,
  184. is_required=isRequired, created_time=createdTime)
  185. surveys_title.save()
  186. return response.json(0)
  187. except Exception as e:
  188. print(e)
  189. return response.json(500, repr(e))
  190. def title_edit(self, request_dict, response):
  191. title_id = request_dict.get('id', None)
  192. if not title_id:
  193. return response.json(10, 'id不存在')
  194. content = request_dict.get('content', None)
  195. titleType = request_dict.get('titleType', None)
  196. isRequired = request_dict.get('isRequired', None)
  197. surveys_title = SurveysTitle.objects.filter(id=title_id)
  198. surveys_title.update(title_content=content, title_type=int(titleType), is_required=int(isRequired))
  199. return response.json(0)
  200. def title_del(self, request_dict, response):
  201. title_id = request_dict.get('id', None)
  202. if not title_id:
  203. return response.json(10, 'id不存在')
  204. SurveysTitle.objects.filter(id=title_id).delete()
  205. return response.json(0)