SerialNumberController.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import time
  4. from django.db import transaction
  5. from django.views import View
  6. from Model.models import SerialNumberModel
  7. from Object.ResponseObject import ResponseObject
  8. from Service.AlgorithmService import AlgorithmBaseOn35
  9. class SerialNumberView(View):
  10. def get(self, request, *args, **kwargs):
  11. request.encoding = 'utf-8'
  12. operation = kwargs.get('operation', None)
  13. request_dict = request.GET
  14. return self.validate(request_dict, operation, request)
  15. def post(self, request, *args, **kwargs):
  16. request.encoding = 'utf-8'
  17. operation = kwargs.get('operation', None)
  18. request_dict = request.POST
  19. return self.validate(request_dict, operation, request)
  20. def validate(self, request_dict, operation, request):
  21. response = ResponseObject()
  22. if operation == 'create':
  23. return self.do_create(request_dict, response)
  24. else:
  25. return response.json(404)
  26. def do_create(self, request_dict, response):
  27. quantity = int(request_dict.get('quantity', 0))
  28. p2p = int(request_dict.get('p2p', 0))
  29. if not quantity:
  30. return response.json(444)
  31. try:
  32. try:
  33. sum = SerialNumberModel.objects.last().id
  34. except:
  35. sum = 0
  36. serial_number_bulk = []
  37. now_time = int(time.time())
  38. algorithm = AlgorithmBaseOn35()
  39. for i in range(quantity):
  40. serial_number = algorithm.getLetter(sum)
  41. sum += 1 # sum每次递增1
  42. # 前面补0至六位
  43. serial_number = (6-len(serial_number))*'0' + serial_number
  44. serial_number_bulk.append(SerialNumberModel(serial_number=serial_number, add_time=now_time, p2p=p2p))
  45. # 开启事务写入
  46. with transaction.atomic():
  47. SerialNumberModel.objects.bulk_create(serial_number_bulk)
  48. return response.json(0)
  49. except Exception as e:
  50. print(e)
  51. return response.json(500, repr(e))