12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import logging
- import random
- import time
- from django.db import transaction
- from django.views import View
- from Model.models import SerialNumberModel
- from Object.RedisObject import RedisObject
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- from Service.AlgorithmService import AlgorithmBaseOn35
- from Service.CommonService import CommonService
- from Service.ModelService import ModelService
- class SerialNumberView(View):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.GET
- operation = kwargs.get('operation')
- return self.validate(request_dict, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.POST
- operation = kwargs.get('operation')
- return self.validate(request_dict, operation)
- def validate(self, request_dict, operation):
- token = request_dict.get('token', None)
- response = ResponseObject()
- token = TokenObject(token)
- if token.code != 0:
- return response.json(token.code)
- if operation == 'quantity':
- return self.do_quantity(request_dict, response)
- elif operation == 'create':
- return self.do_create(request_dict, response)
- else:
- return response.json(309)
- # 查询当前可用的UID的数量
- def do_quantity(self, request_dict, response):
- token = request_dict.get('token', None)
- token = TokenObject(token)
- if token.code != 0:
- return response.json(token.code)
- chenyun = SerialNumberModel.objects.filter(use_status=0 , p2p=1).count()
- tutk = SerialNumberModel.objects.filter(use_status=0, p2p=2).count()
- res_data = {'code': 0, 'chenyun': chenyun, 'tutk': tutk}
- return response.json(0, {'data': res_data})
- def do_create(self, request_dict, response):
- quantity = int(request_dict.get('quantity', 0))
- p2p = int(request_dict.get('p2p', 0))
- if not quantity:
- return response.json(444)
- try:
- try:
- sum = SerialNumberModel.objects.last().id
- except:
- sum = 0
- serial_number_bulk = []
- now_time = int(time.time())
- algorithm = AlgorithmBaseOn35()
- for i in range(quantity):
- serial_number = algorithm.getLetter(sum)
- sum += 1 # sum每次递增1
- # 前面补0至六位
- serial_number = (6-len(serial_number))*'0' + serial_number
- serial_number_bulk.append(SerialNumberModel(serial_number=serial_number, add_time=now_time, p2p=p2p))
- # 开启事务写入
- with transaction.atomic():
- SerialNumberModel.objects.bulk_create(serial_number_bulk)
- return response.json(0)
- except Exception as e:
- print(e)
- return response.json(500, repr(e))
|