RegionController.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  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. countries_en = request_dict.get('countries_en', None)
  119. if number and region_id and countries:
  120. res = {
  121. '1': countries,
  122. '2': countries_en
  123. }
  124. now_time = int(time.time())
  125. # countries = json.loads(countries)
  126. country_qs =CountryModel.objects.filter(number=number)
  127. if not country_qs.exists():
  128. country = CountryModel(number=number, region_id=region_id, add_time=now_time, update_time=now_time, country_name=countries)
  129. country.save()
  130. else:
  131. country = country_qs[0]
  132. for item in res:
  133. country_language_qs = CountryLanguageModel.objects.filter(language_id=item, country_id=country.id)
  134. if not country_language_qs.exists():
  135. countryLanguage = CountryLanguageModel(
  136. country_name=res[item], language_id=item, country_id=country.id, add_time=now_time, update_time=now_time)
  137. countryLanguage.save()
  138. return response.json(0)
  139. else:
  140. return response.json(444)
  141. def do_update_country(self, userID, request_dict, response):
  142. # perm = ModelService.check_perm_uid_manage(userID, 0)
  143. # if not perm:
  144. # return response.json(309)
  145. id = request_dict.get('country_id', None)
  146. number = request_dict.get('number', None)
  147. region_id = request_dict.get('region_id', None)
  148. countries = request_dict.get('countries', None)
  149. if id and number and region_id and countries:
  150. country_qs = CountryModel.objects.filter(id=id)
  151. if not country_qs.exists():
  152. return response.json(173)
  153. now_time = int(time.time())
  154. countries = json.loads(countries)
  155. country = {
  156. 'number': number,
  157. 'region_id': region_id,
  158. 'update_time': now_time,
  159. }
  160. country_qs.update(**country)
  161. return response.json(0)
  162. else:
  163. return response.json(444)
  164. def do_delete_country(self, userID, request_dict, response):
  165. # perm = ModelService.check_perm_uid_manage(userID, 0)
  166. # if not perm:
  167. # return response.json(309)
  168. id = request_dict.get('id', None)
  169. if id:
  170. country_qs = CountryModel.objects.filter(id=id)
  171. if country_qs.exists():
  172. country_qs.delete()
  173. return response.json(0)
  174. else:
  175. return response.json(173)
  176. else:
  177. return response.json(444)
  178. def do_list_country(self, userID, request_dict, response):
  179. # perm = ModelService.check_perm_uid_manage(userID, 0)
  180. # if not perm:
  181. # return response.json(309)
  182. region_id = request_dict.get('region_id', None)
  183. page = request_dict.get('page', None)
  184. line = request_dict.get('limit', None)
  185. if page and line:
  186. page = int(page)
  187. line = int(line)
  188. start = (page - 1) * line
  189. end = start + line
  190. region_qs = CountryLanguageModel.objects.filter(language_id=1)
  191. if region_id:
  192. region_qs = region_qs.filter(country__region__id=region_id)
  193. count = region_qs.count()
  194. if region_qs.exists():
  195. region_qs = region_qs[start: end].values('country_id', 'country_name', 'country__number', 'country__region__name', 'add_time', 'update_time')
  196. else:
  197. region_qs = []
  198. res = {
  199. 'count': count,
  200. 'data': list(region_qs)
  201. }
  202. return response.json(0, res)
  203. else:
  204. return response.json(444)
  205. def get_country(self, request_dict, response):
  206. type = request_dict.get('type', None)
  207. token = request_dict.get('token', None)
  208. time_stamp = request_dict.get('time_stamp', None)
  209. if token and time_stamp and type:
  210. token = int(CommonService.decode_data(token))
  211. time_stamp = int(time_stamp)
  212. now_time = int(time.time())
  213. distance = now_time - time_stamp
  214. if token != time_stamp or distance > 60000 or distance < -60000: # 为了全球化时间控制在一天内
  215. return response.json(404)
  216. lang_qs = LanguageModel.objects.filter(lang=type)
  217. if not lang_qs.exists():
  218. lang_qs = LanguageModel.objects.filter(lang='en')
  219. lang = lang_qs[0]
  220. country_qs = CountryLanguageModel.objects.filter(language_id=lang.id).values('country_name', 'country__number')
  221. return response.json(0, list(country_qs))
  222. else:
  223. return response.json(444)
  224. def get_country_info(self, userID, request_dict, response):
  225. # perm = ModelService.check_perm_uid_manage(userID, 0)
  226. # if not perm:
  227. # return response.json(309)
  228. country_number = request_dict.get('country_number', None)
  229. if country_number:
  230. country_language_qs = CountryLanguageModel.objects.filter(country__number=country_number)
  231. if country_language_qs.exists():
  232. country_language_qs = country_language_qs
  233. pass