|
@@ -7,8 +7,9 @@ import time
|
|
from django.db import transaction
|
|
from django.db import transaction
|
|
from django.views import View
|
|
from django.views import View
|
|
|
|
|
|
|
|
+from Controller.DeviceConfirmRegion import Device_Region
|
|
from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, CompanyModel, RegionModel, \
|
|
from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, CompanyModel, RegionModel, \
|
|
- CountryModel, UIDModel, RegionCountryModel, Device_Info, iotdeviceInfoModel
|
|
|
|
|
|
+ CountryModel, UIDModel, Device_Info, iotdeviceInfoModel
|
|
from Object.RedisObject import RedisObject
|
|
from Object.RedisObject import RedisObject
|
|
from Object.uidManageResponseObject import uidManageResponseObject
|
|
from Object.uidManageResponseObject import uidManageResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
@@ -23,15 +24,15 @@ class SerialNumberView(View):
|
|
request.encoding = 'utf-8'
|
|
request.encoding = 'utf-8'
|
|
operation = kwargs.get('operation', None)
|
|
operation = kwargs.get('operation', None)
|
|
request_dict = request.GET
|
|
request_dict = request.GET
|
|
- return self.validate(request_dict, operation)
|
|
|
|
|
|
+ return self.validate(request_dict, operation, request)
|
|
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
def post(self, request, *args, **kwargs):
|
|
request.encoding = 'utf-8'
|
|
request.encoding = 'utf-8'
|
|
operation = kwargs.get('operation', None)
|
|
operation = kwargs.get('operation', None)
|
|
request_dict = request.POST
|
|
request_dict = request.POST
|
|
- return self.validate(request_dict, operation)
|
|
|
|
|
|
+ return self.validate(request_dict, operation, request)
|
|
|
|
|
|
- def validate(self, request_dict, operation):
|
|
|
|
|
|
+ def validate(self, request_dict, operation, request):
|
|
token = TokenObject(request_dict.get('token', None))
|
|
token = TokenObject(request_dict.get('token', None))
|
|
response = uidManageResponseObject()
|
|
response = uidManageResponseObject()
|
|
|
|
|
|
@@ -39,6 +40,8 @@ class SerialNumberView(View):
|
|
return self.do_get_uid(request_dict, response)
|
|
return self.do_get_uid(request_dict, response)
|
|
elif operation == 'getSerial':
|
|
elif operation == 'getSerial':
|
|
return self.do_get_serial_number(request_dict, response)
|
|
return self.do_get_serial_number(request_dict, response)
|
|
|
|
+ elif operation == 'attachUID':
|
|
|
|
+ return self.do_attach_uid(request_dict, response, request)
|
|
else:
|
|
else:
|
|
if token.code != 0:
|
|
if token.code != 0:
|
|
return response.json(token.code)
|
|
return response.json(token.code)
|
|
@@ -49,8 +52,6 @@ class SerialNumberView(View):
|
|
return self.do_list(token.userID, request_dict, response)
|
|
return self.do_list(token.userID, request_dict, response)
|
|
elif operation == 'update':
|
|
elif operation == 'update':
|
|
return self.do_update(token.userID, request_dict, response)
|
|
return self.do_update(token.userID, request_dict, response)
|
|
- elif operation == 'attachUID':
|
|
|
|
- return self.do_attach_uid(request_dict, response)
|
|
|
|
elif operation == 'detachUID':
|
|
elif operation == 'detachUID':
|
|
return self.do_detach_uid(token.userID, request_dict, response)
|
|
return self.do_detach_uid(token.userID, request_dict, response)
|
|
else:
|
|
else:
|
|
@@ -190,18 +191,33 @@ class SerialNumberView(View):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
|
|
|
|
@transaction.atomic
|
|
@transaction.atomic
|
|
- def do_attach_uid(self, request_dict, response):
|
|
|
|
|
|
+ def do_attach_uid(self, request_dict, response, request):
|
|
serial_number = request_dict.get('serial_number', None)
|
|
serial_number = request_dict.get('serial_number', None)
|
|
country_id = request_dict.get('country_id', None)
|
|
country_id = request_dict.get('country_id', None)
|
|
company_id = request_dict.get('company_id', None)
|
|
company_id = request_dict.get('company_id', None)
|
|
|
|
+ token = request_dict.get('token', None)
|
|
|
|
+ time_stamp = request_dict.get('time_stamp', None)
|
|
|
|
+
|
|
|
|
+ if serial_number and len(serial_number) == 9 and company_id:
|
|
|
|
+
|
|
|
|
+ token = int(CommonService.decode_data(token))
|
|
|
|
+ time_stamp = int(time_stamp)
|
|
|
|
+
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+ distance = now_time - time_stamp
|
|
|
|
+
|
|
|
|
+ if token != time_stamp or distance > 60000 or distance < 0:
|
|
|
|
+ return response.json(404)
|
|
|
|
|
|
- if serial_number and len(serial_number) == 9 and country_id and company_id:
|
|
|
|
mark = serial_number[6:9]
|
|
mark = serial_number[6:9]
|
|
serial = serial_number[0:6]
|
|
serial = serial_number[0:6]
|
|
|
|
|
|
savePoint = transaction.savepoint()
|
|
savePoint = transaction.savepoint()
|
|
try:
|
|
try:
|
|
try:
|
|
try:
|
|
|
|
+ if not country_id :
|
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
|
+ country_id = Device_Region().get_device_region(ip)
|
|
|
|
|
|
# 判断序列号是否已和企业关联
|
|
# 判断序列号是否已和企业关联
|
|
company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id,
|
|
company_serial_qs = CompanySerialModel.objects.filter(company__secret=company_id,
|
|
@@ -209,17 +225,6 @@ class SerialNumberView(View):
|
|
if not company_serial_qs.exists():
|
|
if not company_serial_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
|
|
|
|
- region_country_qs = RegionCountryModel.objects.filter(number=country_id)
|
|
|
|
- endpoint = 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
|
|
|
|
- if region_country_qs.exists():
|
|
|
|
- user_region = region_country_qs[0]
|
|
|
|
- if user_region.region_id == 1:
|
|
|
|
- endpoint = 'a250bbr0p9u7as-ats.iot.cn-northwest-1.amazonaws.com.cn'
|
|
|
|
- elif user_region.region_id == 2:
|
|
|
|
- endpoint = 'a2rqy12o004ad8-ats.iot.ap-southeast-1.amazonaws.com'
|
|
|
|
- elif user_region.region_id == 3:
|
|
|
|
- endpoint = 'a2rqy12o004ad8-ats.iot.eu-west-1.amazonaws.com'
|
|
|
|
-
|
|
|
|
# 当序列号已关联UID
|
|
# 当序列号已关联UID
|
|
company_serial = company_serial_qs[0]
|
|
company_serial = company_serial_qs[0]
|
|
|
|
|
|
@@ -259,11 +264,15 @@ class SerialNumberView(View):
|
|
company_serial.status = 2
|
|
company_serial.status = 2
|
|
company_serial.save()
|
|
company_serial.save()
|
|
|
|
|
|
|
|
+ dev = Device_Info.objects.filter(UID=uid.uid)
|
|
|
|
+ if dev.exists():
|
|
|
|
+ dev.update(serial_number=serial_number)
|
|
|
|
+
|
|
|
|
+
|
|
res = {
|
|
res = {
|
|
'uid': CommonService.encode_data(uid.uid),
|
|
'uid': CommonService.encode_data(uid.uid),
|
|
'mac': CommonService.encode_data(uid.mac),
|
|
'mac': CommonService.encode_data(uid.mac),
|
|
- 'extra': uid.uid_extra,
|
|
|
|
- 'endpoint': endpoint
|
|
|
|
|
|
+ 'extra': uid.uid_extra
|
|
}
|
|
}
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
else:
|
|
else:
|
|
@@ -277,8 +286,7 @@ class SerialNumberView(View):
|
|
res = {
|
|
res = {
|
|
'uid': CommonService.encode_data(uid['uid__uid']),
|
|
'uid': CommonService.encode_data(uid['uid__uid']),
|
|
'mac': CommonService.encode_data(uid['uid__mac']),
|
|
'mac': CommonService.encode_data(uid['uid__mac']),
|
|
- 'extra': uid['uid__uid_extra'],
|
|
|
|
- 'endpoint': endpoint
|
|
|
|
|
|
+ 'extra': uid['uid__uid_extra']
|
|
}
|
|
}
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
else:
|
|
else:
|
|
@@ -342,13 +350,13 @@ class SerialNumberView(View):
|
|
if serial_number:
|
|
if serial_number:
|
|
serial = serial_number[0:6]
|
|
serial = serial_number[0:6]
|
|
|
|
|
|
- uid_serial_qs = UIDCompanySerialModel.objects.filter(company_serial__serial_number=serial)
|
|
|
|
|
|
+ uid_serial_qs = UIDCompanySerialModel.objects.filter(company_serial__serial_number__serial_number=serial)
|
|
if uid_serial_qs.exists():
|
|
if uid_serial_qs.exists():
|
|
uid_serial = uid_serial_qs[0]
|
|
uid_serial = uid_serial_qs[0]
|
|
|
|
|
|
- Device_Info.objects.filter(UID=uid_serial.uid).update(endpoint='',
|
|
|
|
- token_iot_number='')
|
|
|
|
- iotdeviceInfoModel.objects.filter(uid=uid_serial.uid).delete()
|
|
|
|
|
|
+ iot = iotdeviceInfoModel.objects.filter(serial_number__serial_number=serial)
|
|
|
|
+ if iot.exists():
|
|
|
|
+ iot.delete()
|
|
|
|
|
|
company_serial_qs = CompanySerialModel.objects.filter(id=uid_serial.company_serial.id)
|
|
company_serial_qs = CompanySerialModel.objects.filter(id=uid_serial.company_serial.id)
|
|
if company_serial_qs.exists():
|
|
if company_serial_qs.exists():
|
|
@@ -362,6 +370,10 @@ class SerialNumberView(View):
|
|
uid.status = 0
|
|
uid.status = 0
|
|
uid.save()
|
|
uid.save()
|
|
uid_serial.delete()
|
|
uid_serial.delete()
|
|
|
|
+
|
|
|
|
+ dev = Device_Info.objects.filter(UID=uid.uid)
|
|
|
|
+ if dev.exists():
|
|
|
|
+ dev.update(serial_number='')
|
|
return response.json(0)
|
|
return response.json(0)
|
|
else:
|
|
else:
|
|
return response.json(173)
|
|
return response.json(173)
|