SerialManageController.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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 : SurveysManageController.py
  9. # @Software: PyCharm
  10. from django.utils.decorators import method_decorator
  11. from django.views.decorators.csrf import csrf_exempt
  12. from django.views.generic.base import View
  13. from Model.models import CompanyModel, SerialNumberModel, VPGModel, UIDModel, UIDCompanySerialModel, CompanySerialModel
  14. from Object.ResponseObject import ResponseObject
  15. from Object.TokenObject import TokenObject
  16. class SerialView(View):
  17. @method_decorator(csrf_exempt)
  18. def dispatch(self, *args, **kwargs):
  19. return super(SerialView, self).dispatch(*args, **kwargs)
  20. def get(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.GET, request, operation)
  24. def post(self, request, *args, **kwargs):
  25. request.encoding = 'utf-8'
  26. operation = kwargs.get('operation')
  27. return self.validation(request.POST, request, operation)
  28. def validation(self, request_dict, request, operation):
  29. token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
  30. response = ResponseObject()
  31. if token.code != 0:
  32. return response.json(token.code)
  33. response = ResponseObject(returntype='pc')
  34. if operation == 'company-page':
  35. return self.company_page(request_dict, response)
  36. if operation == 'number/page':
  37. return self.serial_page(request_dict, response)
  38. if operation == 'vpg-info/page':
  39. return self.vpg_page(request_dict, response)
  40. if operation == 'uid-info/page':
  41. return self.uid_page(request_dict, response)
  42. return response.json(0)
  43. @classmethod
  44. def company_page(cls, request_dict, response):
  45. pageNo = request_dict.get('pageNo', None)
  46. pageSize = request_dict.get('pageSize', None)
  47. if not all([pageNo, pageSize]):
  48. return response.json(444)
  49. page = int(pageNo)
  50. line = int(pageSize)
  51. try:
  52. request_qs = CompanyModel.objects.all()
  53. if not request_qs.exists():
  54. return response.json(0, {'list': '', 'total': 0})
  55. total = request_qs.count()
  56. company_page = request_qs.order_by('-add_time')[(page - 1) * line:page * line].values()
  57. return response.json(0, {'list': list(company_page), 'total': total})
  58. except Exception as e:
  59. print(e)
  60. return response.json(500, repr(e))
  61. @classmethod
  62. def serial_page(cls, request_dict, response):
  63. pageNo = request_dict.get('pageNo', None)
  64. pageSize = request_dict.get('pageSize', None)
  65. serial_number = request_dict.get('serialNumber', None)
  66. status = request_dict.get('status', None)
  67. use_status = request_dict.get('useStatus', None)
  68. if not all([pageNo, pageSize]):
  69. return response.json(444)
  70. page = int(pageNo)
  71. line = int(pageSize)
  72. try:
  73. query = SerialNumberModel.objects.filter()
  74. if serial_number:
  75. query = query.filter(serial_number__contains=serial_number)
  76. if status:
  77. status = int(status)
  78. query = query.filter(status=status)
  79. if use_status:
  80. use_status = int(use_status)
  81. query = query.filter(use_status=use_status)
  82. if not query.exists():
  83. return response.json(0, {'list': '', 'total': 0})
  84. total = query.count()
  85. serial_number_page = query.order_by('-add_time')[(page - 1) * line:page * line].values()
  86. if serial_number_page.exists():
  87. return response.json(0, {'list': list(serial_number_page), 'total': total})
  88. return response.json(173)
  89. except Exception as e:
  90. print(e)
  91. return response.json(500, repr(e))
  92. @classmethod
  93. def vpg_page(cls, request_dict, response):
  94. pageNo = request_dict.get('pageNo', None)
  95. pageSize = request_dict.get('pageSize', None)
  96. if not all([pageNo, pageSize]):
  97. return response.json(444)
  98. page = int(pageNo)
  99. line = int(pageSize)
  100. try:
  101. query = VPGModel.objects.filter()
  102. if not query.exists():
  103. return response.json(0, {'list': '', 'total': 0})
  104. total = query.count()
  105. vpg_page = query.order_by('-add_time')[(page - 1) * line:page * line] \
  106. .values('id', 'name',
  107. 'region__name',
  108. 'region_id',
  109. 'company__name',
  110. 'add_time',
  111. 'update_time',
  112. 'company__secret',
  113. 'uid_count')
  114. if vpg_page.exists():
  115. return response.json(0, {'list': list(vpg_page), 'total': total})
  116. return response.json(173)
  117. except Exception as e:
  118. print(e)
  119. return response.json(500, repr(e))
  120. @classmethod
  121. def uid_page(cls, request_dict, response):
  122. pageNo = request_dict.get('pageNo', None)
  123. pageSize = request_dict.get('pageSize', None)
  124. status = request_dict.get('status', None)
  125. serial_number = request_dict.get('serialNumber', None)
  126. uid = request_dict.get('uid', None)
  127. p2p_type = request_dict.get('p2pType', None)
  128. if not all([pageNo, pageSize]):
  129. return response.json(444)
  130. page = int(pageNo)
  131. line = int(pageSize)
  132. try:
  133. query = UIDModel.objects.filter()
  134. if serial_number:
  135. company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number).values()
  136. if company_serial_qs.exists():
  137. cs_id = str(company_serial_qs[0]['id'])
  138. uid_company_serial_qs = UIDCompanySerialModel.objects.filter(company_serial_id=cs_id).values(
  139. 'uid_id')
  140. if uid_company_serial_qs.exists():
  141. uid_id = uid_company_serial_qs[0]['uid_id']
  142. query = query.filter(id=uid_id)
  143. if status:
  144. query = query.filter(status=int(status))
  145. if uid:
  146. query = query.filter(uid__contains=uid)
  147. if p2p_type:
  148. query = query.filter(p2p_type=int(p2p_type))
  149. if not query.exists():
  150. return response.json(0, {'list': '', 'total': 0})
  151. total = query.count()
  152. uid_page = query.order_by('-add_time')[(page - 1) * line:page * line]
  153. result_list = []
  154. if not uid_page.exists():
  155. return response.json(0, {'list': '', 'total': 0})
  156. for vo in uid_page:
  157. uid_company_serial_qs = UIDCompanySerialModel.objects.filter(uid_id=vo.id).values('uid_id',
  158. 'company_serial_id')
  159. serial = None
  160. if uid_company_serial_qs.exists():
  161. company_serial_id = uid_company_serial_qs[0]['company_serial_id']
  162. company_serial_qs = CompanySerialModel.objects.filter(id=company_serial_id).values()
  163. if company_serial_qs.exists():
  164. serial = str(company_serial_qs[0]['serial_number'])
  165. result_list.append({
  166. 'id': vo.id,
  167. 'uid': vo.uid,
  168. 'mac': vo.mac,
  169. 'extra': vo.uid_extra,
  170. 'serial': serial,
  171. 'status': vo.status,
  172. 'area': vo.area,
  173. 'p2pType': vo.p2p_type,
  174. 'fullUidCode': vo.full_uid_code,
  175. 'updateTime': vo.update_time,
  176. 'addTime': vo.add_time
  177. })
  178. return response.json(0, {'list': result_list, 'total': total})
  179. except Exception as e:
  180. print(e)
  181. return response.json(500, repr(e))