|
@@ -19,7 +19,7 @@ from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerial
|
|
|
iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
|
|
|
Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
|
|
|
AiService, DeviceDomainRegionModel, RegionModel, UidPushModel, AppScannedSerial, Device_User, SerialUnbindUID, \
|
|
|
- DeviceNetInfo, BaiduBigModelLicense
|
|
|
+ DeviceNetInfo, BaiduBigModelLicense, Instavision
|
|
|
from Object.AWS.S3Email import S3Email
|
|
|
from Object.RedisObject import RedisObject
|
|
|
from Object.TokenObject import TokenObject
|
|
@@ -80,6 +80,8 @@ class SerialNumberView(View):
|
|
|
return self.save_user_net_info(request_dict, response)
|
|
|
elif operation == 'getBaiduBigModelLicenseUrl':
|
|
|
return self.get_baidu_big_model_license_url(request_dict, response)
|
|
|
+ elif operation == 'getInstavision':
|
|
|
+ return self.get_instavision(request_dict, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -1174,3 +1176,41 @@ class SerialNumberView(View):
|
|
|
return response.json(0, res)
|
|
|
except Exception as e:
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_instavision(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取instavision数据
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @request_dict mac: 设备mac地址
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ mac = request_dict.get('mac', None)
|
|
|
+ if not mac:
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ # 使用事务和select_for_update来处理并发问题
|
|
|
+ with transaction.atomic():
|
|
|
+ # 使用select_for_update加锁,防止并发时多个请求获取到同一条记录
|
|
|
+ instavision_qs = Instavision.objects.select_for_update().filter(use_status=0).first()
|
|
|
+
|
|
|
+ if not instavision_qs:
|
|
|
+ return response.json(444, '没有可用的即时视觉数据')
|
|
|
+
|
|
|
+ device_id = instavision_qs.device_id
|
|
|
+ access_key = instavision_qs.access_key
|
|
|
+
|
|
|
+ # 更新该条数据的mac、use_status和updated_time
|
|
|
+ instavision_qs.mac = mac
|
|
|
+ instavision_qs.use_status = 1 # 标记为已使用
|
|
|
+ instavision_qs.updated_time = int(time.time())
|
|
|
+ instavision_qs.save()
|
|
|
+
|
|
|
+ res = {
|
|
|
+ 'device_id': device_id,
|
|
|
+ 'access_key': access_key,
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|