|
@@ -2,22 +2,21 @@
|
|
|
# -*- coding: utf-8 -*-
|
|
|
import json
|
|
|
import logging
|
|
|
-import random
|
|
|
import time
|
|
|
|
|
|
+import requests
|
|
|
from bulk_update.helper import bulk_update
|
|
|
from django.db import transaction
|
|
|
from django.db.models import Count
|
|
|
from django.views import View
|
|
|
|
|
|
from Model.models import SerialNumberModel, UserModel, UserSerialNumberModel, UserUIDModel, CompanySerialModel, \
|
|
|
- MacModel, LogModel
|
|
|
+ MacModel, LogModel, CompanyModel
|
|
|
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):
|
|
@@ -46,26 +45,296 @@ class SerialNumberView(View):
|
|
|
if token.code != 0:
|
|
|
return response.json(token.code)
|
|
|
|
|
|
- if operation == 'quantity':
|
|
|
- return self.do_quantity(request_dict,token.userID, response)
|
|
|
+ if operation == 'quantity': # 查询当前可用的UID的数量
|
|
|
+ return self.do_quantity(request_dict, token.userID, response)
|
|
|
elif operation == 'allot':
|
|
|
return self.do_allot(request_dict, response)
|
|
|
+ elif operation == 'createSerial': # 生成序列号
|
|
|
+ return self.create_serial(request_dict, response, request)
|
|
|
+ elif operation == 'serialCompany': # 将序列号分匹配到指定企业
|
|
|
+ return self.do_serial_company(request_dict, response, request)
|
|
|
+ elif operation == 'revise/state': # 修改序列号状态
|
|
|
+ return self.revise_state(request_dict, response, request)
|
|
|
else:
|
|
|
return response.json(309)
|
|
|
|
|
|
- # 查询当前可用的UID的数量
|
|
|
+ def revise_state(self, request_dict, response, request):
|
|
|
+ """
|
|
|
+ 修改序列号状态
|
|
|
+ @param request_dict:请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ """
|
|
|
+ use_status = request_dict.get('useStatus', None) # 序列号表的状态
|
|
|
+ status = request_dict.get('status', None) # 关联企业序列号表的状态
|
|
|
+
|
|
|
+ if not all([use_status, status]):
|
|
|
+ return response.json(444)
|
|
|
+ serial_number_qs = SerialNumberModel.objects.filter(use_status=use_status).values('serial_number')
|
|
|
+ if not serial_number_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ serial_list = [item[key] for item in serial_number_qs for key in item]
|
|
|
+ try:
|
|
|
+ country_serial_qs = CompanySerialModel.objects.filter(serial_number__in=serial_list).values('status')
|
|
|
+ country_serial_qs.filter(status=status).update(status=1)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500)
|
|
|
+
|
|
|
+ def do_serial_company(self, request_dict, response, request):
|
|
|
+ """
|
|
|
+ 将序列号分匹配到指定企业
|
|
|
+ :param request_dict: 请求参数
|
|
|
+ :param response: 响应对象
|
|
|
+ :param request: 请求
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ id = request_dict.get('id', None)
|
|
|
+ quantity = request_dict.get('quantity', None)
|
|
|
+
|
|
|
+ if not all([id, quantity]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ company_qs = CompanyModel.objects.filter(id=id)
|
|
|
+ if not company_qs.exists():
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ sum_Serial = SerialNumberModel.objects.filter().count()
|
|
|
+ sum_Serial_company = CompanySerialModel.objects.filter().count()
|
|
|
+ sum_bind = sum_Serial - sum_Serial_company # 剩余可绑定的序列号
|
|
|
+ if int(quantity) > int(sum_bind):
|
|
|
+ return response.json(10041)
|
|
|
+
|
|
|
+ try:
|
|
|
+ company = company_qs[0]
|
|
|
+ start_1 = sum_Serial_company
|
|
|
+ end_1 = int(start_1) + int(quantity)
|
|
|
+ serial_qs = SerialNumberModel.objects.filter()[start_1:end_1]
|
|
|
+ if not serial_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ company_serial_bulk = []
|
|
|
+ now_time = int(time.time())
|
|
|
+ for item in serial_qs: # 更新状态为已分配但未使用
|
|
|
+ company_serial_bulk.append(CompanySerialModel(
|
|
|
+ status=3,
|
|
|
+ add_time=now_time,
|
|
|
+ update_time=now_time,
|
|
|
+ company_id=company.id,
|
|
|
+ serial_number=item.serial_number,
|
|
|
+ ))
|
|
|
+ SerialNumberModel.objects.filter(serial_number=item.serial_number).update(
|
|
|
+ use_status=3,
|
|
|
+ add_time=now_time
|
|
|
+ )
|
|
|
+
|
|
|
+ # 记录操作日志
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ content = json.loads(json.dumps(request_dict))
|
|
|
+ log = {
|
|
|
+ 'ip': ip,
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': now_time,
|
|
|
+ 'url': 'company/createSerial',
|
|
|
+ 'content': json.dumps(content),
|
|
|
+ 'operation': '{}生成{}个Company Serial{}: {}'.format(company.name, quantity, '成功', '同步更新成功'),
|
|
|
+ }
|
|
|
+
|
|
|
+ with transaction.atomic():
|
|
|
+ CompanySerialModel.objects.bulk_create(company_serial_bulk)
|
|
|
+ company.quantity = CompanySerialModel.objects.filter(company_id=id).count()
|
|
|
+ company.save()
|
|
|
+ Log = LogModel.objects.create(**log)
|
|
|
+
|
|
|
+ # 同步更新业务服务器和uid管理系统的企业序列号表
|
|
|
+ url1 = 'http://test.zositechc.cn/company/createSerial'
|
|
|
+ url2 = 'https://www.zositechc.cn/company/createSerial'
|
|
|
+ url3 = 'http://www.dvema.com/company/createSerial'
|
|
|
+ url4 = 'http://www.zositeche.com/company/createSerial'
|
|
|
+ requests_data = {'id': id, 'quantity': quantity}
|
|
|
+
|
|
|
+ res1 = requests.post(url=url1, data=requests_data, timeout=2 * 60)
|
|
|
+ if res1.status_code != 200:
|
|
|
+ fail_reason = '请求测试服务器生成Company Serial响应状态码异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+ res1 = res1.json()
|
|
|
+ if res1['result_code'] != 0:
|
|
|
+ fail_reason = '测试服务器生成Company Serial发生异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ res2 = requests.post(url=url2, data=requests_data, timeout=2 * 60)
|
|
|
+ if res2.status_code != 200:
|
|
|
+ fail_reason = '请求国内服务器生成Company Serial响应状态码异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+ res2 = res2.json()
|
|
|
+ if res2['result_code'] != 0:
|
|
|
+ fail_reason = '国内服务器生成Company Serial发生异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ res3 = requests.post(url=url3, data=requests_data, timeout=2 * 60)
|
|
|
+ if res3.status_code != 200:
|
|
|
+ fail_reason = '请求国外服务器生成Company Serial响应状态码异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+ res3 = res3.json()
|
|
|
+ if res3['result_code'] != 0:
|
|
|
+ fail_reason = '国外服务器生成Company Serial发生异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ res4 = requests.post(url=url4, data=requests_data, timeout=2 * 60)
|
|
|
+ if res4.status_code != 200:
|
|
|
+ fail_reason = '请求uid管理系统生成Company Serial响应状态码异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+ res4 = res4.json()
|
|
|
+ if res4['code'] != 0:
|
|
|
+ fail_reason = 'uid管理系统生成Company Serial发生异常'
|
|
|
+ return self.failResponse(company.name, quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ djangoLogger = logging.getLogger('django')
|
|
|
+ djangoLogger.exception(repr(e))
|
|
|
+ return response.json(176)
|
|
|
+
|
|
|
+ def create_serial(self, request_dict, response, request):
|
|
|
+ """
|
|
|
+ 生成序列号
|
|
|
+ :param request_dict: 请求参数
|
|
|
+ :param response: 响应对象
|
|
|
+ :param request: 请求
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ quantity = int(request_dict.get('quantity', 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))
|
|
|
+
|
|
|
+ # 记录操作日志
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ content = json.loads(json.dumps(request_dict))
|
|
|
+ log = {
|
|
|
+ 'ip': ip,
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': now_time,
|
|
|
+ 'url': 'serialNumber/create',
|
|
|
+ 'content': json.dumps(content),
|
|
|
+ 'operation': '生成{}个Serial Number{}: {}'.format(quantity, '成功', '同步更新成功'),
|
|
|
+ }
|
|
|
+
|
|
|
+ # 开启事务写入
|
|
|
+ with transaction.atomic():
|
|
|
+ SerialNumberModel.objects.bulk_create(serial_number_bulk)
|
|
|
+ Log = LogModel.objects.create(**log)
|
|
|
+
|
|
|
+ # 同步更新业务服务器和uid管理系统的序列号表
|
|
|
+ url1 = 'http://test.zositechc.cn/serialNumber/create'
|
|
|
+ url2 = 'https://www.zositechc.cn/serialNumber/create'
|
|
|
+ url3 = 'http://www.dvema.com/serialNumber/create'
|
|
|
+ url4 = 'http://www.zositeche.com/company/createSerial'
|
|
|
+ requests_data = {'quantity': quantity}
|
|
|
+
|
|
|
+ res1 = requests.post(url=url1, data=requests_data, timeout=2 * 60)
|
|
|
+ if res1.status_code != 200:
|
|
|
+ fail_reason = '请求测试服务器生成Serial Number响应状态码异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ res1 = res1.json()
|
|
|
+ if res1['result_code'] != 0:
|
|
|
+ fail_reason = '测试服务器生成Serial Number发生异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ res2 = requests.post(url=url2, data=requests_data, timeout=2 * 60)
|
|
|
+ if res2.status_code != 200:
|
|
|
+ fail_reason = '请求国内服务器生成Serial Number响应状态码异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ res2 = res2.json()
|
|
|
+ if res2['result_code'] != 0:
|
|
|
+ fail_reason = '国内服务器生成Serial Number发生异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+
|
|
|
+ res3 = requests.post(url=url3, data=requests_data, timeout=2 * 60)
|
|
|
+ if res3.status_code != 200:
|
|
|
+ fail_reason = '请求国外服务器生成Serial Number响应状态码异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ res3 = res3.json()
|
|
|
+ if res3['result_code'] != 0:
|
|
|
+ fail_reason = '国外服务器生成Serial Number发生异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ res4 = requests.post(url=url4, data=requests_data, timeout=2 * 60)
|
|
|
+ if res4.status_code != 200:
|
|
|
+ fail_reason = '请求uid管理系统生成Company Serial响应状态码异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ res4 = res4.json()
|
|
|
+ if res4['code'] != 0:
|
|
|
+ fail_reason = 'uid管理系统生成Company Serial发生异常'
|
|
|
+ return self.failResponse(quantity, fail_reason, Log, response)
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ djangoLogger = logging.getLogger('django')
|
|
|
+ djangoLogger.exception(repr(e))
|
|
|
+ return response.json(176)
|
|
|
+
|
|
|
+ def failResponse(self, quantity, fail_reason, Log, response):
|
|
|
+ operation = '生成{}个Serial Number{}: {}'.format(quantity, '失败', fail_reason)
|
|
|
+ Log.operation = operation
|
|
|
+ Log.save()
|
|
|
+ return response.json(177)
|
|
|
+
|
|
|
def do_quantity(self, request_dict, userID, response):
|
|
|
+ """
|
|
|
+ 查询当前可用的UID的数量
|
|
|
+ :param request_dict: 请求参数
|
|
|
+ :param userID: 响应对象
|
|
|
+ :param response: 请求
|
|
|
+ :return:
|
|
|
+ """
|
|
|
user_qs = UserModel.objects.filter(id=userID)
|
|
|
if not user_qs.exists():
|
|
|
return response.json(9)
|
|
|
|
|
|
- user = user_qs[0]
|
|
|
-
|
|
|
- result = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__use_status=1).aggregate(num=Count('serial_number__use_status'))
|
|
|
- chenyundev = result['num']
|
|
|
unused_serial_number_count = SerialNumberModel.objects.filter(use_status=0).count()
|
|
|
- chenyun = SerialNumberModel.objects.filter(use_status=1).count()
|
|
|
- res_data = {'code': 0, 'chenyun': chenyun, 'unused_serial_number_count': unused_serial_number_count, 'chenyundev': chenyundev}
|
|
|
+ remain_qs = CompanySerialModel.objects.filter(status=1).count()
|
|
|
+ company_qs = CompanyModel.objects.values('id', 'name')
|
|
|
+ company_serial_list = [] # 剩余已分配未使用的序列号数量
|
|
|
+ company_not_used_list = [] # 已使用的序列号数量
|
|
|
+ for company in company_qs:
|
|
|
+ id = company['id']
|
|
|
+ name = company['name']
|
|
|
+ not_used_qs = CompanySerialModel.objects.filter(status=3, company_id=id).count()
|
|
|
+ res = {
|
|
|
+ 'name': name,
|
|
|
+ 'number': not_used_qs
|
|
|
+ }
|
|
|
+ company_not_used_list.append(res)
|
|
|
+
|
|
|
+ for company in company_qs:
|
|
|
+ id = company['id']
|
|
|
+ name = company['name']
|
|
|
+ company_used_qs = CompanySerialModel.objects.filter(status=1, company_id=id).count()
|
|
|
+ res = {
|
|
|
+ 'name': name,
|
|
|
+ 'numbers': company_used_qs
|
|
|
+ }
|
|
|
+ company_serial_list.append(res)
|
|
|
+ res_data = {'code': 0, 'companyRemainCount': company_not_used_list, 'companyRemain': company_serial_list,
|
|
|
+ 'unused_serial_number_count': unused_serial_number_count,
|
|
|
+ 'unused_all_count': remain_qs}
|
|
|
return response.json(0, {'data': res_data})
|
|
|
|
|
|
def do_create(self, request_dict, response):
|
|
@@ -84,9 +353,9 @@ class SerialNumberView(View):
|
|
|
algorithm = AlgorithmBaseOn35()
|
|
|
for i in range(quantity):
|
|
|
serial_number = algorithm.getLetter(sum)
|
|
|
- sum += 1 # sum每次递增1
|
|
|
+ sum += 1 # sum每次递增1
|
|
|
# 前面补0至六位
|
|
|
- serial_number = (6-len(serial_number))*'0' + serial_number
|
|
|
+ serial_number = (6 - len(serial_number)) * '0' + serial_number
|
|
|
serial_number_bulk.append(SerialNumberModel(serial_number=serial_number, add_time=now_time))
|
|
|
# 开启事务写入
|
|
|
with transaction.atomic():
|
|
@@ -107,7 +376,6 @@ class SerialNumberView(View):
|
|
|
if token.code != 0:
|
|
|
return response.json(token.code)
|
|
|
user = UserModel.objects.get(id=token.userID)
|
|
|
-
|
|
|
if not user or '0' not in user.permission:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -117,12 +385,12 @@ class SerialNumberView(View):
|
|
|
return response.json(444, 'username')
|
|
|
|
|
|
# 取出对应区域可用的UID分配给allot_user
|
|
|
- sn_qs = SerialNumberModel.objects.filter(use_status=0)[0:quantity]
|
|
|
+ sn_qs = SerialNumberModel.objects.filter(use_status=3)[0:quantity]
|
|
|
sns = []
|
|
|
for sn in sn_qs:
|
|
|
sns.append(sn.serial_number)
|
|
|
|
|
|
- cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=1)
|
|
|
+ cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=3)
|
|
|
|
|
|
sns = []
|
|
|
for cs in cs_qs:
|
|
@@ -132,48 +400,52 @@ class SerialNumberView(View):
|
|
|
count = sn_qs.count()
|
|
|
if count < quantity:
|
|
|
return response.json(444, '序列号不足')
|
|
|
-
|
|
|
- updates = []
|
|
|
- datas = []
|
|
|
- count = 0
|
|
|
- if sn_qs.exists():
|
|
|
- sn_qs = sn_qs[0:quantity]
|
|
|
- now_time = int(time.time())
|
|
|
- for i in range(len(sn_qs)):
|
|
|
- item = sn_qs[i]
|
|
|
- serialNumberModel = SerialNumberModel(
|
|
|
- id=item.id,
|
|
|
- serial_number=item.serial_number,
|
|
|
- status=item.status,
|
|
|
- use_status=1,
|
|
|
- add_time=item.add_time
|
|
|
- )
|
|
|
- user_serial_number = UserSerialNumberModel()
|
|
|
- user_serial_number.serial_number = serialNumberModel
|
|
|
- user_serial_number.user = allot_user_qs[0]
|
|
|
- user_serial_number.add_time = now_time
|
|
|
- user_serial_number.update_time = now_time
|
|
|
-
|
|
|
- datas.append(user_serial_number)
|
|
|
- updates.append(serialNumberModel)
|
|
|
-
|
|
|
- if len(updates) % 5000 == 0:
|
|
|
+ try:
|
|
|
+ updates = []
|
|
|
+ datas = []
|
|
|
+ count = 0
|
|
|
+ if sn_qs.exists():
|
|
|
+ sn_qs = sn_qs[0:quantity]
|
|
|
+ now_time = int(time.time())
|
|
|
+ for i in range(len(sn_qs)):
|
|
|
+ item = sn_qs[i]
|
|
|
+ serialNumberModel = SerialNumberModel(
|
|
|
+ id=item.id,
|
|
|
+ serial_number=item.serial_number,
|
|
|
+ status=item.status,
|
|
|
+ use_status=1,
|
|
|
+ add_time=item.add_time
|
|
|
+ )
|
|
|
+ CompanySerialModel.objects.filter(serial_number=item.serial_number).update(status=1)
|
|
|
+ user_serial_number = UserSerialNumberModel()
|
|
|
+ user_serial_number.serial_number = serialNumberModel
|
|
|
+ user_serial_number.user = allot_user_qs[0]
|
|
|
+ user_serial_number.add_time = now_time
|
|
|
+ user_serial_number.update_time = now_time
|
|
|
+
|
|
|
+ datas.append(user_serial_number)
|
|
|
+ updates.append(serialNumberModel)
|
|
|
+
|
|
|
+ if len(updates) % 5000 == 0:
|
|
|
+ bulk_update(updates)
|
|
|
+ UserSerialNumberModel.objects.bulk_create(datas)
|
|
|
+
|
|
|
+ if len(updates) > 0:
|
|
|
bulk_update(updates)
|
|
|
UserSerialNumberModel.objects.bulk_create(datas)
|
|
|
|
|
|
- if len(updates) > 0:
|
|
|
- bulk_update(updates)
|
|
|
- UserSerialNumberModel.objects.bulk_create(datas)
|
|
|
-
|
|
|
- del datas
|
|
|
- del updates
|
|
|
- return response.json(0)
|
|
|
- else:
|
|
|
- return response.json(444)
|
|
|
+ del datas
|
|
|
+ del updates
|
|
|
+ return response.json(0)
|
|
|
+ else:
|
|
|
+ return response.json(444)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500)
|
|
|
|
|
|
# 提供给pc端获取序列号
|
|
|
def do_get_serial_number(self, request_dict, request, response):
|
|
|
- quantity = 1 #只能取一个
|
|
|
+ quantity = 1 # 只能取一个
|
|
|
company_id = request_dict.get('company_id', None)
|
|
|
token = request_dict.get('token', None)
|
|
|
time_stamp = request_dict.get('time_stamp', None)
|
|
@@ -205,17 +477,18 @@ class SerialNumberView(View):
|
|
|
return response.json(9)
|
|
|
|
|
|
user = user_qs[0]
|
|
|
- result = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__use_status=1).\
|
|
|
+ result = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__use_status=1). \
|
|
|
aggregate(num=Count('serial_number__use_status'))
|
|
|
|
|
|
- us_qs = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__use_status=1).\
|
|
|
+ us_qs = UserSerialNumberModel.objects.filter(user__id=user.id, serial_number__use_status=1). \
|
|
|
values('serial_number__serial_number')
|
|
|
|
|
|
sns = []
|
|
|
for us in us_qs:
|
|
|
sns.append(us['serial_number__serial_number'])
|
|
|
|
|
|
- cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=1, company__secret=company_id).values('serial_number', 'company__mark')
|
|
|
+ cs_qs = CompanySerialModel.objects.filter(serial_number__in=sns, status=1, company__secret=company_id).values(
|
|
|
+ 'serial_number', 'company__mark')
|
|
|
sns = []
|
|
|
mark = ""
|
|
|
if cs_qs.exists():
|
|
@@ -231,7 +504,7 @@ class SerialNumberView(View):
|
|
|
return response.json(444, '序列号不足')
|
|
|
|
|
|
try:
|
|
|
- with transaction.atomic(): # 开启事务
|
|
|
+ with transaction.atomic(): # 开启事务
|
|
|
sn_qs = sn_qs[0: quantity]
|
|
|
serial_number = sn_qs[0].serial_number
|
|
|
# 防止重复获取序列号
|
|
@@ -240,7 +513,7 @@ class SerialNumberView(View):
|
|
|
if not is_lock:
|
|
|
return response.json(5)
|
|
|
|
|
|
- if not mac: # 不传入则分配mac
|
|
|
+ if not mac: # 不传入则分配mac
|
|
|
mac_qs = MacModel.objects.filter().values('id', 'value', 'is_active')[0]
|
|
|
if not mac_qs['is_active']:
|
|
|
return response.json(175)
|
|
@@ -264,6 +537,9 @@ class SerialNumberView(View):
|
|
|
updates.append(serialNumberModel)
|
|
|
bulk_update(updates)
|
|
|
|
|
|
+ # 更新企业关联序列号状态
|
|
|
+ CompanySerialModel.objects.filter(serial_number=serial_number).update(status=2, update_time=now_time)
|
|
|
+
|
|
|
# 记录操作日志
|
|
|
ip = CommonService.get_ip_address(request)
|
|
|
content = json.loads(json.dumps(request.POST))
|
|
@@ -283,4 +559,3 @@ class SerialNumberView(View):
|
|
|
except Exception as e:
|
|
|
redisObj.del_data(key=serial_operate_lock_key) # redis解锁
|
|
|
return response.json(500, repr(e))
|
|
|
-
|