SerialNumberController.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import logging
  4. import random
  5. import time
  6. from django.db import transaction
  7. from django.views import View
  8. from Model.models import SerialNumberModel
  9. from Object.RedisObject import RedisObject
  10. from Object.ResponseObject import ResponseObject
  11. from Object.TokenObject import TokenObject
  12. from Service.AlgorithmService import AlgorithmBaseOn35
  13. from Service.CommonService import CommonService
  14. from Service.ModelService import ModelService
  15. class SerialNumberView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. request_dict = request.GET
  19. operation = kwargs.get('operation')
  20. return self.validate(request_dict, operation)
  21. def post(self, request, *args, **kwargs):
  22. request.encoding = 'utf-8'
  23. request_dict = request.POST
  24. operation = kwargs.get('operation')
  25. return self.validate(request_dict, operation)
  26. def validate(self, request_dict, operation):
  27. token = request_dict.get('token', None)
  28. response = ResponseObject()
  29. token = TokenObject(token)
  30. if token.code != 0:
  31. return response.json(token.code)
  32. if operation == 'quantity':
  33. return self.do_quantity(request_dict, response)
  34. elif operation == 'create':
  35. return self.do_create(request_dict, response)
  36. else:
  37. return response.json(309)
  38. # 查询当前可用的UID的数量
  39. def do_quantity(self, request_dict, response):
  40. token = request_dict.get('token', None)
  41. token = TokenObject(token)
  42. if token.code != 0:
  43. return response.json(token.code)
  44. chenyun = SerialNumberModel.objects.filter(use_status=0 , p2p=1).count()
  45. tutk = SerialNumberModel.objects.filter(use_status=0, p2p=2).count()
  46. res_data = {'code': 0, 'chenyun': chenyun, 'tutk': tutk}
  47. return response.json(0, {'data': res_data})
  48. def do_create(self, request_dict, response):
  49. quantity = int(request_dict.get('quantity', 0))
  50. p2p = int(request_dict.get('p2p', 0))
  51. if not quantity:
  52. return response.json(444)
  53. try:
  54. try:
  55. sum = SerialNumberModel.objects.last().id
  56. except:
  57. sum = 0
  58. serial_number_bulk = []
  59. now_time = int(time.time())
  60. algorithm = AlgorithmBaseOn35()
  61. for i in range(quantity):
  62. serial_number = algorithm.getLetter(sum)
  63. sum += 1 # sum每次递增1
  64. # 前面补0至六位
  65. serial_number = (6-len(serial_number))*'0' + serial_number
  66. serial_number_bulk.append(SerialNumberModel(serial_number=serial_number, add_time=now_time, p2p=p2p))
  67. # 开启事务写入
  68. with transaction.atomic():
  69. SerialNumberModel.objects.bulk_create(serial_number_bulk)
  70. return response.json(0)
  71. except Exception as e:
  72. print(e)
  73. return response.json(500, repr(e))