CompanyController.py 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import logging
  4. import time
  5. from django.db import transaction
  6. from django.views import View
  7. from Model.models import CompanyModel, UserModel, SerialNumberModel, CompanySerialModel
  8. from Object.uidManageResponseObject import uidManageResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. from Service.ModelService import ModelService
  12. class CompanyView(View):
  13. def get(self, request, *arg, **kwargs):
  14. request.encoding = 'utf-8'
  15. request_dict = request.GET
  16. operation = kwargs.get('operation', None)
  17. return self.validate(request_dict, operation)
  18. def post(self, request, *arg, **kwargs):
  19. request.encoding = 'utf-8'
  20. request_dict = request.POST
  21. operation = kwargs.get('operation', None)
  22. return self.validate(request_dict, operation)
  23. def validate(self, request_dict, operation):
  24. token = TokenObject(request_dict.get('token', None))
  25. response = uidManageResponseObject()
  26. if token.code != 0:
  27. return response.json(token.code)
  28. if operation == 'create':
  29. return self.do_create(token.userID, request_dict, response)
  30. elif operation == 'update':
  31. return self.do_update(token.userID, request_dict, response)
  32. elif operation == 'delete':
  33. return self.do_delete(token.userID, request_dict, response)
  34. elif operation == 'list':
  35. return self.do_list(token.userID, request_dict, response)
  36. elif operation == 'createSerial':
  37. return self.do_create_serial(token.userID, request_dict, response)
  38. else:
  39. return response.json(404)
  40. def do_create(self, userID, request_dict, response):
  41. # perm = ModelService.check_perm_uid_manage(userID, 0)
  42. # if not perm:
  43. # return response.json(309)
  44. name = request_dict.get('name', None)
  45. mark = request_dict.get('mark', None)
  46. if name and mark:
  47. now_time = int(time.time())
  48. company_qs = CompanyModel.objects.filter(mark=mark)
  49. if company_qs.exists():
  50. return response.json(174)
  51. secret = self.create_secret(mark)
  52. print(secret)
  53. company = CompanyModel(
  54. name=name,
  55. mark=mark,
  56. secret=secret,
  57. quantity=0,
  58. add_time=now_time,
  59. update_time=now_time
  60. )
  61. company.save()
  62. return response.json(0)
  63. else:
  64. return response.json(444)
  65. def do_update(self, userID, request_dict, response):
  66. # perm = ModelService.check_perm_uid_manage(userID, 0)
  67. # if not perm:
  68. # return response.json(309)
  69. id = request_dict.get('id', None)
  70. if id:
  71. name = request_dict.get('name', None)
  72. quantity = request_dict.get('quantity', None)
  73. update = {}
  74. if name:
  75. update['name'] = name
  76. if quantity:
  77. update['quantity'] = quantity
  78. company_qs = CompanyModel.objects.filter(id=id)
  79. if company_qs.exists():
  80. company_qs.update(**update)
  81. return response.json(0)
  82. else:
  83. return response.json(173)
  84. else:
  85. return response.json(444)
  86. def do_delete(self, userID, request_dict, response):
  87. # perm = ModelService.check_perm_uid_manage(userID, 0)
  88. # if not perm:
  89. # return response.json(309)
  90. id = request_dict.get('id', None)
  91. if id:
  92. CompanyModel.objects.filter(id=id).delete()
  93. return response.json(0)
  94. else:
  95. return response.json(444)
  96. @transaction.atomic
  97. def do_create_serial(self, userID, request_dict, response):
  98. # perm = ModelService.check_perm_uid_manage(userID, 0)
  99. # if not perm:
  100. # return response.json(309)
  101. id = request_dict.get('id', None)
  102. quantity = request_dict.get('quantity', None)
  103. p2p = request_dict.get('p2p', None)
  104. if id and quantity:
  105. company_qs = CompanyModel.objects.filter(id=id)
  106. if not company_qs.exists():
  107. return response.json(444)
  108. savePoint = transaction.savepoint()
  109. try:
  110. try:
  111. company = company_qs[0]
  112. start = company.quantity
  113. end = start + int(quantity)
  114. serial_qs = SerialNumberModel.objects.filter(p2p=p2p)[start:end]
  115. if serial_qs.exists():
  116. data = []
  117. now_time = int(time.time())
  118. for item in serial_qs:
  119. data.append(CompanySerialModel(
  120. company_id=company.id,
  121. serial_number=item.serial_number,
  122. add_time=now_time,
  123. update_time=now_time,
  124. p2p=p2p
  125. ))
  126. if len(data) == 5000:
  127. CompanySerialModel.objects.bulk_create(data)
  128. data.clear()
  129. if len(data) > 0:
  130. CompanySerialModel.objects.bulk_create(data)
  131. data.clear()
  132. company.quantity = company.quantity + end - start
  133. company.save()
  134. return response.json(0)
  135. else:
  136. return response.json(173)
  137. except Exception as e:
  138. # print('--------------------------error 5000')
  139. # print(repr(e))
  140. if savePoint:
  141. transaction.rollback(savePoint)
  142. djangoLogger = logging.getLogger('django')
  143. djangoLogger.exception(repr(e))
  144. return response.json(176, str(e))
  145. except Exception as e:
  146. # print('--------------------------error 5001')
  147. # print(repr(e))
  148. djangoLogger = logging.getLogger('django')
  149. djangoLogger.exception(repr(e))
  150. return response.json(176, str(e))
  151. else:
  152. return response.json(444)
  153. def do_list(self, userID, request_dict, response):
  154. # perm = ModelService.check_perm_uid_manage(userID, 0)
  155. # if not perm:
  156. # return response.json(309)
  157. page = request_dict.get('page', None)
  158. line = request_dict.get('limit', None)
  159. if page and line:
  160. page = int(page)
  161. line = int(line)
  162. start = (page - 1) * line
  163. end = start + line
  164. company_qs = CompanyModel.objects.filter()
  165. count = company_qs.count()
  166. company_qs = company_qs[start: end].values()
  167. print(company_qs)
  168. res = {
  169. 'count': count,
  170. 'data': list(company_qs)
  171. }
  172. return response.json(0, res)
  173. else:
  174. return response.json(444)
  175. def create_secret(self, mark):
  176. len1 = len(mark)
  177. secret = ''
  178. for i in range(len1):
  179. secret += CommonService.RandomStr(randomlength=1)
  180. secret += mark[i]
  181. print(mark)
  182. return CommonService.encode_data_without_salt(secret)