RegionController.py 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import time
  5. from django.views import View
  6. from Model.models import RegionModel, CountryModel, LanguageModel, CountryLanguageModel
  7. from Object.uidManageResponseObject import uidManageResponseObject
  8. from Object.TokenObject import TokenObject
  9. from Service.CommonService import CommonService
  10. from Service.ModelService import ModelService
  11. class RegionView(View):
  12. def get(self, request, *args, **kwargs):
  13. request.encoding = 'utf-8'
  14. operation = kwargs.get('operation', None)
  15. request_dict = request.GET
  16. return self.validate(request_dict, operation)
  17. def post(self, request, *arg, **kwargs):
  18. request.encoding = 'utf-8'
  19. operation = kwargs.get('operation', None)
  20. request_dict = request.POST
  21. return self.validate(request_dict, operation)
  22. def validate(self, request_dict, operation):
  23. token = TokenObject(request_dict.get('token', None))
  24. response = uidManageResponseObject()
  25. if operation == 'getCountry':
  26. return self.get_country(request_dict, response)
  27. else:
  28. if token.code != 0:
  29. return response.json(token.code)
  30. if operation == 'add':
  31. return self.do_add(token.userID, request_dict, response)
  32. elif operation == 'update':
  33. return self.do_update(token.userID, request_dict, response)
  34. elif operation == 'delete':
  35. return self.do_delete(token.userID, request_dict, response)
  36. elif operation == 'list':
  37. return self.do_list(token.userID, request_dict, response)
  38. elif operation == 'addCountry':
  39. return self.do_add_country(token.userID, request_dict, response)
  40. elif operation == 'updateCountry':
  41. return self.do_update_country(token.userID, request_dict, response)
  42. elif operation == 'deleteCountry':
  43. return self.do_delete_country(token.userID, request_dict, response)
  44. elif operation == 'listCountry':
  45. return self.do_list_country(token.userID, request_dict, response)
  46. else:
  47. return response.json(404)
  48. def do_add(self, userID, request_dict, response):
  49. perm = ModelService.check_perm_uid_manage(userID, 0)
  50. if not perm:
  51. return response.json(309)
  52. name = request_dict.get('region', None)
  53. if name:
  54. region = RegionModel(name=name)
  55. region.save()
  56. return response.json(0)
  57. else:
  58. return response.json(444)
  59. def do_update(self, userID, request_dict, response):
  60. perm = ModelService.check_perm_uid_manage(userID, 0)
  61. if not perm:
  62. return response.json(309)
  63. id = request_dict.get('id', None)
  64. name = request_dict.get('region', None)
  65. if id and name:
  66. region_qs = RegionModel.objects.filter(id=id)
  67. if region_qs.exists():
  68. region = region_qs[0]
  69. region.name = name
  70. region.save()
  71. return response.json(0)
  72. else:
  73. return response.json(173)
  74. else:
  75. return response.json(444)
  76. def do_delete(self, userID, request_dict, response):
  77. perm = ModelService.check_perm_uid_manage(userID, 0)
  78. if not perm:
  79. return response.json(309)
  80. id = request_dict.get('id', None)
  81. if id:
  82. region_qs = RegionModel.objects.filter(id=id)
  83. if region_qs.exists():
  84. region_qs.delete()
  85. return response.json(0)
  86. else:
  87. return response.json(173)
  88. else:
  89. return response.json(444)
  90. def do_list(self, userID, request_dict, response):
  91. perm = ModelService.check_perm_uid_manage(userID, 0)
  92. if not perm:
  93. return response.json(309)
  94. page = request_dict.get('page', None)
  95. line = request_dict.get('limit', None)
  96. if page and line:
  97. page = int(page)
  98. line = int(line)
  99. start = (page - 1) * line
  100. end = start + line
  101. region_qs = RegionModel.objects.filter()
  102. count = region_qs.count()
  103. region_qs = region_qs[start: end].values()
  104. res = {
  105. 'count': count,
  106. 'data': list(region_qs)
  107. }
  108. return response.json(0, res)
  109. else:
  110. return response.json(444)
  111. def do_add_country(self, userID, request_dict, response):
  112. perm = ModelService.check_perm_uid_manage(userID, 0)
  113. if not perm:
  114. return response.json(309)
  115. number = request_dict.get('number', None)
  116. region_id = request_dict.get('region_id', None)
  117. countries = request_dict.get('countries', None)
  118. if number and region_id and countries:
  119. now_time = int(time.time())
  120. countries = json.loads(countries)
  121. country_qs =CountryModel.objects.filter(number=number)
  122. if not country_qs.exists():
  123. country = CountryModel(number=number, region_id=region_id, add_time=now_time, update_time=now_time)
  124. country.save()
  125. else:
  126. country = country_qs[0]
  127. for item in countries:
  128. country_language_qs = CountryLanguageModel.objects.filter(language_id=item, country_id=country.id)
  129. if not country_language_qs.exists():
  130. countryLanguage = CountryLanguageModel(
  131. country_name=countries[item], language_id=item, country_id=country.id, add_time=now_time, update_time=now_time)
  132. countryLanguage.save()
  133. return response.json(0)
  134. else:
  135. return response.json(444)
  136. def do_update_country(self, userID, request_dict, response):
  137. perm = ModelService.check_perm_uid_manage(userID, 0)
  138. if not perm:
  139. return response.json(309)
  140. id = request_dict.get('country_id', None)
  141. number = request_dict.get('number', None)
  142. region_id = request_dict.get('region_id', None)
  143. countries = request_dict.get('countries', None)
  144. if id and number and region_id and countries:
  145. country_qs = CountryModel.objects.filter(id=id)
  146. if not country_qs.exists():
  147. return response.json(173)
  148. now_time = int(time.time())
  149. countries = json.loads(countries)
  150. country = {
  151. 'number': number,
  152. 'region_id': region_id,
  153. 'update_time': now_time,
  154. }
  155. country_qs.update(**country)
  156. return response.json(0)
  157. else:
  158. return response.json(444)
  159. def do_delete_country(self, userID, request_dict, response):
  160. perm = ModelService.check_perm_uid_manage(userID, 0)
  161. if not perm:
  162. return response.json(309)
  163. id = request_dict.get('id', None)
  164. if id:
  165. country_qs = CountryModel.objects.filter(id=id)
  166. if country_qs.exists():
  167. country_qs.delete()
  168. return response.json(0)
  169. else:
  170. return response.json(173)
  171. else:
  172. return response.json(444)
  173. def do_list_country(self, userID, request_dict, response):
  174. perm = ModelService.check_perm_uid_manage(userID, 0)
  175. if not perm:
  176. return response.json(309)
  177. region_id = request_dict.get('region_id', None)
  178. page = request_dict.get('page', None)
  179. line = request_dict.get('limit', None)
  180. if page and line:
  181. page = int(page)
  182. line = int(line)
  183. start = (page - 1) * line
  184. end = start + line
  185. region_qs = CountryLanguageModel.objects.filter(language_id=1)
  186. if region_id:
  187. region_qs = region_qs.filter(country__region__id=region_id)
  188. count = region_qs.count()
  189. if region_qs.exists():
  190. region_qs = region_qs[start: end].values('country_id', 'country_name', 'country__number', 'country__region__name', 'add_time', 'update_time')
  191. else:
  192. region_qs = []
  193. res = {
  194. 'count': count,
  195. 'data': list(region_qs)
  196. }
  197. return response.json(0, res)
  198. else:
  199. return response.json(444)
  200. def get_country(self, request_dict, response):
  201. type = request_dict.get('type', None)
  202. token = request_dict.get('token', None)
  203. time_stamp = request_dict.get('time_stamp', None)
  204. if token and time_stamp and type:
  205. token = int(CommonService.decode_data(token))
  206. time_stamp = int(time_stamp)
  207. now_time = int(time.time())
  208. distance = now_time - time_stamp
  209. if token != time_stamp or distance > 300 or distance < 0:
  210. return response.json(404)
  211. lang_qs = LanguageModel.objects.filter(lang=type)
  212. if not lang_qs.exists():
  213. lang_qs = LanguageModel.objects.filter(lang='en')
  214. lang = lang_qs[0]
  215. country_qs = CountryLanguageModel.objects.filter(language_id=lang.id).values('country_name', 'country__number')
  216. return response.json(0, list(country_qs))
  217. else:
  218. return response.json(444)
  219. def get_country_info(self, userID, request_dict, response):
  220. perm = ModelService.check_perm_uid_manage(userID, 0)
  221. if not perm:
  222. return response.json(309)
  223. country_number = request_dict.get('country_number', None)
  224. if country_number:
  225. country_language_qs = CountryLanguageModel.objects.filter(country__number=country_number)
  226. if country_language_qs.exists():
  227. country_language_qs = country_language_qs
  228. pass