SearchToolController.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: langer
  7. @software: PyCharm
  8. @DATE: 2020/8/21 15:44
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. """
  12. from var_dump import var_dump
  13. import json
  14. from django.http import HttpResponse
  15. from django.views.generic import TemplateView
  16. from django.views.decorators.csrf import csrf_exempt
  17. from django.utils.decorators import method_decorator
  18. from object.ResponseObject import ResponseObject
  19. from django.contrib.auth.hashers import make_password, check_password
  20. from model.models import UserModel, LangSetModel, LangAreaModel, LangKeyModel, LangValModel, LangPermModel, \
  21. SearchToolBlock, SearchToolMessage
  22. import time
  23. from object.TokenObject import TokenObject
  24. from django.db.models import Q
  25. class SearchToolView(TemplateView):
  26. def post(self, request, *args, **kwargs):
  27. request.encoding = 'utf-8'
  28. operation = kwargs.get('operation', None)
  29. request_dict = json.loads(request.body.decode('utf-8'))
  30. return self.validate(request_dict, operation)
  31. def get(self, request, *args, **kwargs):
  32. request.encoding = 'utf-8'
  33. request_dict = request.GET
  34. operation = kwargs.get('operation', None)
  35. return self.validate(request_dict, operation)
  36. def validate(self, request_dict, operation):
  37. response = ResponseObject()
  38. token = request_dict.get('token', None)
  39. tko = TokenObject(token)
  40. if tko.code == 0:
  41. userID = tko.userID
  42. if operation == 'add':
  43. return self.do_add(request_dict, response)
  44. elif operation == 'update':
  45. return self.do_update(request_dict, response, userID)
  46. elif operation == 'delete':
  47. return self.do_delete(request_dict, response)
  48. # search index table
  49. elif operation == 'query':
  50. return self.do_query(request_dict, response, userID)
  51. elif operation == 'query_message':
  52. return self.do_query_message(request_dict, response, userID)
  53. elif operation == 'query_saveOrEditMessage':
  54. return self.do_query_saveOrEditMessage(request_dict, response)
  55. elif operation == 'saveOrExitMsg':
  56. return self.do_saveOrExitMsg(request_dict, response)
  57. elif operation == 'deletemessage':
  58. return self.do_deletemessage(request_dict, response)
  59. elif operation == 'reset':
  60. return self.do_reset(request_dict, response, userID)
  61. else:
  62. return response.json(414)
  63. else:
  64. return response.json(tko.code)
  65. def do_add(self, request_dict, response):
  66. mokuainame = request_dict.get('name', None)
  67. type = request_dict.get('type', None)
  68. if not type:
  69. return response.json(444, 'type')
  70. lk = SearchToolBlock.objects.filter(name=mokuainame)
  71. if lk.exists():
  72. return response.json(404, repr("已存在模块名"))
  73. nowTime = int(time.time())
  74. try:
  75. SearchToolBlock.objects.create(name=mokuainame,type=type, addTime=nowTime, updTime=nowTime)
  76. except Exception as e:
  77. print(repr(e))
  78. return response.json(404, repr(e))
  79. else:
  80. return response.json(0)
  81. '''
  82. post_data = {
  83. word_key_id:1,
  84. word_key:xxx,
  85. word_arr:[
  86. {'lang':'','val':''},
  87. {'lang':'','val':''},
  88. {'lang':'','val':''}
  89. ]
  90. }
  91. '''
  92. def do_update(self, request_dict, response, userID):
  93. mokuainame = request_dict.get('name', None)
  94. mokuaitype = request_dict.get('type', None)
  95. mokuaiid = request_dict.get('id', None)
  96. mk = SearchToolBlock.objects.filter(name=mokuainame)
  97. if mk.exists():
  98. return response.json(404, repr("已存在模块名"))
  99. lk = SearchToolBlock.objects.filter(id=mokuaiid)
  100. nowTime = int(time.time())
  101. if lk.exists():
  102. lk.update(updTime=nowTime,name=mokuainame)
  103. return response.json(0)
  104. else:
  105. return response.json(404)
  106. def do_delete(self, request_dict, response):
  107. print('delete')
  108. mokuaiid = request_dict.get('id', None)
  109. try:
  110. SearchToolBlock.objects.get(id=mokuaiid).delete()
  111. except Exception as e:
  112. return response.json(404, repr(e))
  113. else:
  114. return response.json(0)
  115. def do_query(self, request_dict, response, userID):
  116. page = int(request_dict.get('page', None))
  117. line = int(request_dict.get('line', None))
  118. searchKey = request_dict.get('searchKey', None)
  119. searchVal = request_dict.get('searchVal', None)
  120. type = request_dict.get('type', None)
  121. if searchKey:
  122. searchKey = searchKey.strip()
  123. if searchVal:
  124. searchKey = searchKey.strip()
  125. orderByupdate = request_dict.get('orderByupdate', 0)
  126. if page and line:
  127. search_qs = SearchToolBlock.objects.filter(type__contains=type).values('name', 'type', 'id','updTime')
  128. if type == 0:
  129. search_qs = SearchToolBlock.objects.filter(type__in=(0))
  130. elif type == 1:
  131. search_qs = SearchToolBlock.objects.filter(type__in=(1))
  132. if searchKey and searchVal:
  133. search_qs = search_qs.filter(name__contains=searchVal)
  134. count = search_qs.count()
  135. if orderByupdate == 1:
  136. search_qs = search_qs.order_by('updTime')
  137. else:
  138. search_qs = search_qs.order_by('-updTime')
  139. search_qs = search_qs[(page - 1) * line:page * line]
  140. k_list = []
  141. lw_dict = {}
  142. for lk in search_qs:
  143. k_list.append(lk['name'])
  144. lw_dict[lk['name']] = {'updTime': lk['updTime']}
  145. res = {
  146. 'la_list': list(search_qs),
  147. 'lw_dict': lw_dict,
  148. # 'lk_list': list(lk_qs),
  149. # 'lv_list': list(lv_qs)
  150. 'count': count
  151. }
  152. return response.json(0, res)
  153. else:
  154. return response.json(444, 'page,line')
  155. def do_query_message(self, request_dict, response, userID):
  156. page = int(request_dict.get('page', None))
  157. line = int(request_dict.get('line', None))
  158. searchKey = request_dict.get('searchKey', None)
  159. searchVal = request_dict.get('searchVal', None)
  160. type = request_dict.get('type', None)
  161. if searchKey:
  162. searchKey = searchKey.strip()
  163. if searchVal:
  164. searchKey = searchKey.strip()
  165. orderByupdate = request_dict.get('orderByupdate', 0)
  166. if page and line:
  167. block_qs = SearchToolBlock.objects.filter(type__contains=type).values('id','name')
  168. k_list = []
  169. for bk in block_qs:
  170. k_list.append(bk['id'])
  171. search_qs = SearchToolMessage.objects.filter(type__contains=type,bk__id__in=k_list).values('location','line','source','translation','type','updTime','id','bk__id','bk__name')
  172. if type == 0:
  173. search_qs = SearchToolBlock.objects.filter(type__in=(0))
  174. elif type == 1:
  175. search_qs = SearchToolBlock.objects.filter(type__in=(1))
  176. if searchKey and searchVal:
  177. if searchKey == 'bk_name':
  178. search_qs = search_qs.filter(bk__name__contains=searchVal)
  179. if searchKey == 'location':
  180. search_qs = search_qs.filter(location__contains=searchVal)
  181. if searchKey == 'line':
  182. search_qs = search_qs.filter(line__contains=searchVal)
  183. if searchKey == 'source':
  184. search_qs = search_qs.filter(source__contains=searchVal)
  185. if searchKey == 'translation':
  186. search_qs = search_qs.filter(translation__contains=searchVal)
  187. count = search_qs.count()
  188. if orderByupdate == 1:
  189. search_qs = search_qs.order_by('updTime')
  190. else:
  191. search_qs = search_qs.order_by('-updTime')
  192. search_qs = search_qs[(page - 1) * line:page * line]
  193. lw_dict = {}
  194. for lk in search_qs:
  195. lw_dict[lk['id']] = {'location': lk['location'], 'line': lk['line'], 'source': lk['source'],'translation': lk['translation'], 'updTime': lk['updTime'], 'bk_id': lk['bk__id'],'name': lk['bk__name']}
  196. res = {
  197. 'la_list': lw_dict,
  198. 'count': count
  199. }
  200. return response.json(0, res)
  201. else:
  202. return response.json(444, 'page,line')
  203. def do_query_saveOrEditMessage(self, request_dict, response):
  204. messageid = request_dict.get('messageid', None)
  205. type = request_dict.get('type', None)
  206. block_qs = SearchToolBlock.objects.filter(type=type).values('id', 'name')
  207. if messageid:
  208. search_qs = SearchToolMessage.objects.filter(id=messageid).values('location','line','source','translation','type','updTime','id','bk__id','bk__name')
  209. search_qs = search_qs.order_by('-updTime')
  210. lw_dict = {}
  211. for lk in search_qs:
  212. lw_dict[lk['id']] = {'location': lk['location'], 'line': lk['line'], 'source': lk['source'],
  213. 'translation': lk['translation'], 'updTime': lk['updTime'], 'bk_id': lk['bk__id'],
  214. 'name': lk['bk__name']}
  215. res = {
  216. 'la_list': lw_dict,
  217. 'lw_dict': list(block_qs)
  218. }
  219. return response.json(0, res)
  220. else:
  221. res = {
  222. 'lw_dict': list(block_qs)
  223. }
  224. return response.json(0, res)
  225. def do_saveOrExitMsg(self, request_dict, response):
  226. id = request_dict.get('id', None)
  227. bk_id = request_dict.get('bk_id', None)
  228. location = request_dict.get('location', None)
  229. line = request_dict.get('line', None)
  230. source = request_dict.get('source', None)
  231. translation = request_dict.get('translation', None)
  232. type = request_dict.get('type', None)
  233. if not type:
  234. return response.json(444, 'type')
  235. nowTime = int(time.time())
  236. try:
  237. if id:
  238. nowTime = int(time.time())
  239. update_dict = {
  240. 'bk_id': bk_id,
  241. 'location': location,
  242. 'line': line,
  243. 'source': source,
  244. 'translation': translation,
  245. 'type': type,
  246. 'updTime': nowTime
  247. }
  248. SearchToolMessage.objects.filter(id=id).update(**update_dict)
  249. else:
  250. SearchToolMessage.objects.create(location=location, line=line, source=source, translation=translation, type=type, bk_id=bk_id, addTime=nowTime, updTime=nowTime)
  251. except Exception as e:
  252. print(repr(e))
  253. return response.json(404, repr(e))
  254. else:
  255. return response.json(0)
  256. def do_deletemessage(self, request_dict, response):
  257. print('delete')
  258. messageid = request_dict.get('id', None)
  259. try:
  260. SearchToolMessage.objects.get(id=messageid).delete()
  261. except Exception as e:
  262. return response.json(404, repr(e))
  263. else:
  264. return response.json(0)
  265. def do_reset(self, request_dict, response, userID):
  266. return response.json(10,"数据已重置")