|
@@ -1,21 +1,17 @@
|
|
|
-#!/usr/bin/env python3
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
import json
|
|
|
import logging
|
|
|
import time
|
|
|
|
|
|
-import requests
|
|
|
from django.db import transaction
|
|
|
from django.views import View
|
|
|
|
|
|
-from Ansjer.config import CRCKey, SERVER_DOMAIN_US, SERVER_DOMAIN_CN, CONFIG_INFO, CONFIG_TEST, CONFIG_US, \
|
|
|
+from Ansjer.config import CRCKey, CONFIG_INFO, CONFIG_TEST, CONFIG_US, \
|
|
|
CONFIG_CN, USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST
|
|
|
from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
|
|
|
iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
|
|
|
Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
|
|
|
- AiService
|
|
|
+ AiService, DeviceDomainRegionModel, RegionModel
|
|
|
from Object.RedisObject import RedisObject
|
|
|
-from Object.TokenObject import TokenObject
|
|
|
from Object.uidManageResponseObject import uidManageResponseObject
|
|
|
from Service.AlgorithmService import AlgorithmBaseOn35
|
|
|
from Service.CommonService import CommonService
|
|
@@ -37,35 +33,27 @@ class SerialNumberView(View):
|
|
|
return self.validate(request_dict, operation, request)
|
|
|
|
|
|
def validate(self, request_dict, operation, request):
|
|
|
- token = TokenObject(request_dict.get('token', None))
|
|
|
response = uidManageResponseObject()
|
|
|
|
|
|
- if operation == 'getUID':
|
|
|
- return self.do_get_uid(request_dict, response)
|
|
|
- elif operation == 'attachUID': # 绑定uid
|
|
|
+ if operation == 'attachUID': # 绑定uid
|
|
|
return self.do_attach_uid(request_dict, response, request)
|
|
|
elif operation == 'detachUID': # 解绑uid
|
|
|
return self.do_detach_uid(request, request_dict, response)
|
|
|
- elif operation == 'create':
|
|
|
+ elif operation == 'create': # 创建序列号
|
|
|
return self.do_create(request_dict, response)
|
|
|
- elif operation == 'changeSerialNumberStatus':
|
|
|
- return self.changeSerialNumberStatus(request_dict, response)
|
|
|
- elif operation == 'getRegionInfo':
|
|
|
+ elif operation == 'getUID': # 根据序列号获取uid
|
|
|
+ return self.do_get_uid(request_dict, response)
|
|
|
+ elif operation == 'getRegionInfo': # 根据序列号状态确认uid地区(PC工具使用)
|
|
|
return self.get_region_info(request_dict, response)
|
|
|
+ elif operation == 'saveRegion': # 保存序列号地区信息(app使用)
|
|
|
+ return self.save_region(request, request_dict, response)
|
|
|
+ elif operation == 'getDomain': # 获取域名(设备使用)
|
|
|
+ return self.get_domain(request_dict, response)
|
|
|
else:
|
|
|
- if token.code != 0:
|
|
|
- return response.json(token.code)
|
|
|
-
|
|
|
- # if operation == 'create':
|
|
|
- # return self.do_create(request_dict, response)
|
|
|
- elif operation == 'list':
|
|
|
- return self.do_list(token.userID, request_dict, response)
|
|
|
- elif operation == 'update':
|
|
|
- return self.do_update(token.userID, request_dict, response)
|
|
|
- else:
|
|
|
- return response.json(404)
|
|
|
+ return response.json(414)
|
|
|
|
|
|
- def do_create(self, request_dict, response):
|
|
|
+ @staticmethod
|
|
|
+ def do_create(request_dict, response):
|
|
|
quantity = int(request_dict.get('quantity', 0))
|
|
|
|
|
|
if not quantity:
|
|
@@ -73,15 +61,15 @@ class SerialNumberView(View):
|
|
|
|
|
|
try:
|
|
|
try:
|
|
|
- sum = SerialNumberModel.objects.last().id
|
|
|
+ number = SerialNumberModel.objects.last().id
|
|
|
except:
|
|
|
- sum = 0
|
|
|
+ number = 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
|
|
|
+ serial_number = algorithm.getLetter(number)
|
|
|
+ number += 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))
|
|
@@ -93,43 +81,6 @@ class SerialNumberView(View):
|
|
|
print(e)
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
- def do_list(self, userID, request_dict, response):
|
|
|
- # perm = ModelService.check_perm_uid_manage(userID, 0)
|
|
|
- # if not perm:
|
|
|
- # return response.json(309)
|
|
|
-
|
|
|
- page = request_dict.get('page', None)
|
|
|
- line = request_dict.get('limit', None)
|
|
|
- serial_number = request_dict.get('serial_number', None)
|
|
|
- status = request_dict.get('status', None)
|
|
|
-
|
|
|
- if page and line:
|
|
|
- page = int(page)
|
|
|
- line = int(line)
|
|
|
-
|
|
|
- serial_qs = SerialNumberModel.objects.filter().order_by('-id')
|
|
|
-
|
|
|
- if serial_number:
|
|
|
- serial_qs = serial_qs.filter(serial_number__contains=serial_number)
|
|
|
-
|
|
|
- if status:
|
|
|
- serial_qs = serial_qs.filter(status=status)
|
|
|
-
|
|
|
- count = serial_qs.count()
|
|
|
-
|
|
|
- start = (page - 1) * line
|
|
|
- end = start + line
|
|
|
-
|
|
|
- serial_qs = serial_qs[start: end].values()
|
|
|
- res = {
|
|
|
- 'count': count,
|
|
|
- 'data': list(serial_qs)
|
|
|
- }
|
|
|
-
|
|
|
- return response.json(0, res)
|
|
|
- else:
|
|
|
- return response.json(444)
|
|
|
-
|
|
|
def do_attach_uid(self, request_dict, response, request):
|
|
|
serial_number = request_dict.get('serial_number', None)
|
|
|
token = request_dict.get('token', None)
|
|
@@ -378,69 +329,13 @@ class SerialNumberView(View):
|
|
|
djangoLogger.exception(repr(e))
|
|
|
return response.json(176, str(e))
|
|
|
|
|
|
- @staticmethod
|
|
|
- def update_serial_status(serial, status):
|
|
|
- if CONFIG_INFO == CONFIG_TEST: # 测试服不处理
|
|
|
- return True
|
|
|
- server_domain = SERVER_DOMAIN_CN
|
|
|
- if CONFIG_INFO == CONFIG_US:
|
|
|
- server_domain = SERVER_DOMAIN_CN
|
|
|
- elif CONFIG_INFO == CONFIG_CN:
|
|
|
- server_domain = SERVER_DOMAIN_US
|
|
|
- url = server_domain + 'serialNumber/changeSerialNumberStatus'
|
|
|
- data = {'serial': serial, 'status': status}
|
|
|
- req_res = requests.post(url=url, data=data, timeout=2)
|
|
|
- if req_res.status_code != 200:
|
|
|
- return False
|
|
|
- req_res = req_res.json()
|
|
|
- if req_res['result_code'] != 0:
|
|
|
- return False
|
|
|
- return True
|
|
|
-
|
|
|
- def do_update(self, userID, request_dict, response):
|
|
|
- # perm = ModelService.check_perm_uid_manage(userID, 0)
|
|
|
- # if not perm:
|
|
|
- # return response.json(309)
|
|
|
-
|
|
|
- id = request_dict.get('id', None)
|
|
|
- status = request_dict.get('status', None)
|
|
|
-
|
|
|
- if id and status:
|
|
|
- serial_number_qs = SerialNumberModel.objects.filter(id=id)
|
|
|
- if serial_number_qs.exists():
|
|
|
- serial_number_qs.update(**{'status': status})
|
|
|
- return response.json(0)
|
|
|
- else:
|
|
|
- return response.json(173)
|
|
|
- else:
|
|
|
- return response.json(444)
|
|
|
-
|
|
|
- # 序列号绑定和解绑uid时修改其他数据库序列号的使用状态
|
|
|
- def changeSerialNumberStatus(self, request_dict, response):
|
|
|
- serial = request_dict.get('serial', None)
|
|
|
- status = request_dict.get('status', None)
|
|
|
- if not all([serial, status]):
|
|
|
- return response(444)
|
|
|
-
|
|
|
- try:
|
|
|
- # 更新CompanySerialModel表的序列号使用状态
|
|
|
- update = CompanySerialModel.objects.filter(serial_number=serial).update(status=int(status))
|
|
|
- if update:
|
|
|
- return response.json(0)
|
|
|
- else:
|
|
|
- return response.json(378)
|
|
|
- except Exception as e:
|
|
|
- djangoLogger = logging.getLogger('django')
|
|
|
- djangoLogger.exception(repr(e))
|
|
|
- return response.json(500, str(e))
|
|
|
-
|
|
|
@staticmethod
|
|
|
def get_region_info(request_dict, response):
|
|
|
"""
|
|
|
根据序列号状态确认uid地区
|
|
|
@param request_dict: 请求参数
|
|
|
@param response: 响应对象
|
|
|
- @request_dict endTime: 结束时间
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
@return: response
|
|
|
"""
|
|
|
serial_number = request_dict.get('serial_number', None)
|
|
@@ -461,3 +356,74 @@ class SerialNumberView(View):
|
|
|
elif CONFIG_INFO == CONFIG_US:
|
|
|
return response.json(0, {'region': 1})
|
|
|
return response.json(0)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def save_region(request, request_dict, response):
|
|
|
+ """
|
|
|
+ 保存序列号地区信息
|
|
|
+ @param request: 请求体
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ time_stamp_token = request_dict.get('time_stamp_token', None)
|
|
|
+ time_stamp = request_dict.get('time_stamp', None)
|
|
|
+ if not all([serial_number, time_stamp_token, time_stamp]):
|
|
|
+ return response(444)
|
|
|
+ # 时间戳token校验
|
|
|
+ if not CommonService.check_time_stamp_token(time_stamp_token, time_stamp):
|
|
|
+ return response.json(13)
|
|
|
+
|
|
|
+ try:
|
|
|
+ serial_number = serial_number[:9]
|
|
|
+ region_data = {
|
|
|
+ 'ip': CommonService.get_ip_address(request),
|
|
|
+ 'region_id': CommonService.confirm_region_id()
|
|
|
+ }
|
|
|
+
|
|
|
+ device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number)
|
|
|
+ if device_domain_region_qs.exists():
|
|
|
+ device_domain_region_qs.update(region_data)
|
|
|
+ else:
|
|
|
+ region_data['serial_number'] = serial_number
|
|
|
+ DeviceDomainRegionModel.objects.create(serial_number=serial_number)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_domain(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取域名
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @param response: 响应对象
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ time_stamp_token = request_dict.get('time_stamp_token', None)
|
|
|
+ time_stamp = request_dict.get('time_stamp', None)
|
|
|
+ if not all([serial_number, time_stamp_token, time_stamp]):
|
|
|
+ return response(444)
|
|
|
+ # 时间戳token校验
|
|
|
+ if not CommonService.check_time_stamp_token(time_stamp_token, time_stamp):
|
|
|
+ return response.json(13)
|
|
|
+
|
|
|
+ try:
|
|
|
+ serial_number = serial_number[:9]
|
|
|
+
|
|
|
+ device_domain_region_qs = DeviceDomainRegionModel.objects.filter(serial_number=serial_number).values(
|
|
|
+ 'region_id')
|
|
|
+ if not device_domain_region_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ region_id = device_domain_region_qs[0]['region_id']
|
|
|
+ region_qs = RegionModel.objects.filter(id=region_id).values('api', 'push_api')
|
|
|
+ res = {
|
|
|
+ 'api': region_qs[0]['api'],
|
|
|
+ 'push_api': region_qs[0]['push_api']
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|