SurveysController.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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, CloudVodSurveysAnswer, Device_User
  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. ''' API '''
  37. if operation == 'get/info':
  38. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  39. response = ResponseObject()
  40. if token.code != 0:
  41. return response.json(token.code)
  42. userID = token.userID
  43. return self.check_stock_user(userID, request_dict, response)
  44. if operation == 'answer/save':
  45. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  46. response = ResponseObject()
  47. if token.code != 0:
  48. return response.json(token.code)
  49. ip = CommonService.get_ip_address(request)
  50. userID = token.userID
  51. return self.answer_save(userID, ip, request_dict, response)
  52. ''' 后台管理'''
  53. if operation == 'save':
  54. return self.save(request_dict, response)
  55. if operation == 'edit':
  56. return self.edit(request_dict, response)
  57. if operation == 'list':
  58. return self.get_page(request_dict, response)
  59. if operation == 'title/list':
  60. return self.get_title_list(request_dict, response)
  61. if operation == 'title/save':
  62. return self.title_save(request_dict, response)
  63. if operation == 'title/edit':
  64. return self.title_edit(request_dict, response)
  65. if operation == 'title/del':
  66. return self.title_del(request_dict, response)
  67. if operation == 'cloud/vod/answer/page':
  68. return self.cloud_surveys_answer_page(request_dict, response)
  69. return response.json(0)
  70. def check_stock_user(self, user_id, request_dict, response):
  71. order = Order_Model.objects.filter(userID=user_id, status=1, order_type=0)
  72. if order.count() == 0:
  73. return response.json(10030)
  74. try:
  75. no = '01'
  76. surveys = Surveys.objects.filter(no=no, user_type=1)
  77. if not all(surveys):
  78. return response.json(173)
  79. result = surveys[0]
  80. surveys_title = SurveysTitle.objects.filter(surveys_id=result.id).order_by('-created_time')
  81. submit = 0
  82. if surveys_title.exists():
  83. surveys_title = surveys_title[0]
  84. cloud_vod = CloudVodSurveysAnswer.objects.filter(title_id=surveys_title.id, user_id=user_id)
  85. if cloud_vod.exists():
  86. submit = 1
  87. startTime = time.localtime(result.start_time)
  88. endTime = time.localtime(result.end_time)
  89. data = {
  90. 'no': result.no,
  91. 'userType': result.user_type,
  92. 'startTime': time.strftime("%Y-%m-%d %H:%M:%S", startTime),
  93. 'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endTime),
  94. 'isShow': result.is_show,
  95. 'isSubmit': submit,
  96. 'page': 'http://192.168.136.192/surveys?token=' if result.is_show == 1 else ''
  97. }
  98. return response.json(0, data)
  99. except Exception as e:
  100. print(e)
  101. return response.json(500, repr(e))
  102. def answer_save(self, userId, ip, request_dict, response):
  103. try:
  104. no = request_dict.get('no', None)
  105. if not no:
  106. return response.json(10, 'no is null')
  107. survey = Surveys.objects.filter(no=no)
  108. if survey.exists():
  109. survey = survey[0]
  110. survey_title = SurveysTitle.objects.filter(surveys=survey.id)
  111. if survey_title.exists():
  112. survey_title = survey_title[0]
  113. cloud_vod = CloudVodSurveysAnswer.objects.filter(title_id=survey_title.id, user_id=userId)
  114. if cloud_vod.exists():
  115. return response.json(10, "Do not submit twice")
  116. score = request_dict.get('score', None)
  117. topicA = request_dict.get('topicA', None)
  118. topicB = request_dict.get('topicB', None)
  119. topicC = request_dict.get('topicC', None)
  120. topicD = request_dict.get('topicD', None)
  121. topicF = request_dict.get('topicF', None)
  122. createdTime = int(time.time())
  123. answer = CloudVodSurveysAnswer(title_id=survey_title.id, user_id=userId, ip=ip, answer_1=score,
  124. answer_2=topicA,
  125. answer_3=topicB, answer_4=topicC, answer_5=topicD, answer_6=topicF,
  126. created_time=createdTime)
  127. answer.save()
  128. return response.json(0)
  129. except Exception as e:
  130. print(e)
  131. return response.json(500, repr(e))
  132. def get_page(self, request_dict, response):
  133. pageNo = request_dict.get('pageNo', None)
  134. pageSize = request_dict.get('pageSize', None)
  135. if not all([pageNo, pageSize]):
  136. return response.json(444)
  137. page = int(pageNo)
  138. line = int(pageSize)
  139. try:
  140. request_qs = Surveys.objects.all()
  141. total = request_qs.count()
  142. surveys_list = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
  143. result_list = []
  144. for surveys in surveys_list:
  145. start_time = time.localtime(surveys.start_time)
  146. endT_time = time.localtime(surveys.end_time)
  147. created_time = time.localtime(surveys.created_time)
  148. result_list.append({
  149. 'id': surveys.id,
  150. 'no': surveys.no,
  151. 'userType': surveys.user_type,
  152. 'startTime': time.strftime("%Y-%m-%d %H:%M:%S", start_time),
  153. 'endTime': time.strftime("%Y-%m-%d %H:%M:%S", endT_time),
  154. 'isShow': surveys.is_show,
  155. 'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
  156. })
  157. return response.json(0, {'list': result_list, 'total': total})
  158. except Exception as e:
  159. print(e)
  160. return response.json(500, repr(e))
  161. def save(self, request_dict, response):
  162. no = request_dict.get('no', None)
  163. if no:
  164. if Surveys.objects.filter(no=no).exists():
  165. return response.json(10, '已存在')
  166. no = request_dict.get('no', None)
  167. userType = request_dict.get('userType', None)
  168. startTime = request_dict.get('dateTime[0]', None)
  169. endTime = request_dict.get('dateTime[1]', None)
  170. isShow = request_dict.get('isShow', None)
  171. isShow = 1 if isShow == 'true' else 0
  172. createdTime = int(time.time())
  173. try:
  174. surveys = Surveys(no=no, user_type=userType, start_time=int(startTime),
  175. end_time=endTime, is_show=isShow, created_time=int(createdTime))
  176. surveys.save()
  177. return response.json(0)
  178. except Exception as e:
  179. print(e)
  180. return response.json(500, repr(e))
  181. return response.json(0)
  182. def edit(self, request_dict, response):
  183. sur_id = request_dict.get('id', None)
  184. if not sur_id:
  185. return response.json(10, 'id不存在')
  186. userType = request_dict.get('userType', None)
  187. startTime = request_dict.get('startTime', None)
  188. endTime = request_dict.get('endTime', None)
  189. isShow = request_dict.get('isShow', None)
  190. surveys = Surveys.objects.filter(id=sur_id)
  191. surveys.update(user_type=int(userType), start_time=int(startTime), end_time=int(endTime), is_show=int(isShow))
  192. return response.json(0)
  193. def delete(self, request_dict, response):
  194. sId = request_dict.get('id', None)
  195. if not sId:
  196. return response.json(10, 'id不存在')
  197. Surveys.objects.filter(id=sId).delete()
  198. response.json(0)
  199. def title_save(self, request_dict, response):
  200. surveyId = request_dict.get('surveyId', None)
  201. if not surveyId:
  202. return response(10, 'id is null')
  203. content = request_dict.get('content', None)
  204. createdTime = int(time.time())
  205. try:
  206. surveys_title = SurveysTitle(surveys_id=surveyId, title_content=content
  207. , created_time=createdTime)
  208. surveys_title.save()
  209. return response.json(0)
  210. except Exception as e:
  211. print(e)
  212. return response.json(500, repr(e))
  213. def get_title_list(self, request_dict, response):
  214. surveyId = request_dict.get('surveyId', None)
  215. if not surveyId:
  216. return response.json(10, '问卷id不存在')
  217. title_list = SurveysTitle.objects.filter(surveys_id=surveyId).order_by('-created_time')
  218. if not all(title_list):
  219. return response.json(173)
  220. content = title_list[0]
  221. data = json.loads(content.title_content)
  222. return response.json(0, {'answers': data})
  223. def title_edit(self, request_dict, response):
  224. title_id = request_dict.get('id', None)
  225. if not title_id:
  226. return response.json(10, 'id不存在')
  227. content = request_dict.get('content', None)
  228. surveys_title = SurveysTitle.objects.filter(surveys_id=title_id)
  229. surveys_title.update(title_content=content)
  230. return response.json(0)
  231. def title_del(self, request_dict, response):
  232. title_id = request_dict.get('id', None)
  233. if not title_id:
  234. return response.json(10, 'id不存在')
  235. SurveysTitle.objects.filter(id=title_id).delete()
  236. return response.json(0)
  237. def cloud_surveys_answer_page(self, request_dict, response):
  238. pageNo = request_dict.get('pageNo', None)
  239. pageSize = request_dict.get('pageSize', None)
  240. if not all([pageNo, pageSize]):
  241. return response.json(444)
  242. page = int(pageNo)
  243. line = int(pageSize)
  244. try:
  245. request_qs = CloudVodSurveysAnswer.objects.all()
  246. total = request_qs.count()
  247. answer_page = request_qs.filter().order_by('-created_time')[(page - 1) * line:page * line]
  248. result_list = []
  249. for answer in answer_page:
  250. d_user = Device_User.objects.filter(userID=answer.user_id)
  251. if not all(d_user):
  252. return response.json(173)
  253. d_user = d_user[0]
  254. created_time = time.localtime(answer.created_time)
  255. result_list.append({
  256. 'id': answer.id,
  257. 'uId': d_user.userID,
  258. 'uName': d_user.username,
  259. 'nickName': d_user.NickName,
  260. 'answer1': answer.answer_1,
  261. 'answer2': answer.answer_2,
  262. 'answer3': answer.answer_3,
  263. 'answer4': answer.answer_4,
  264. 'answer5': answer.answer_5,
  265. 'answer6': answer.answer_6,
  266. 'createdTime': time.strftime("%Y-%m-%d %H:%M:%S", created_time),
  267. })
  268. return response.json(0, {'list': result_list, 'total': total})
  269. except Exception as e:
  270. print(e)
  271. return response.json(500, repr(e))