|
@@ -9,7 +9,6 @@
|
|
|
# @Software: PyCharm
|
|
|
import datetime
|
|
|
import logging
|
|
|
-import threading
|
|
|
import time
|
|
|
|
|
|
import requests
|
|
@@ -17,11 +16,11 @@ from django.db import connection, connections, transaction
|
|
|
from django.db.models import Q, Sum, Count
|
|
|
from django.views import View
|
|
|
|
|
|
-from Ansjer.config import USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST
|
|
|
+from Ansjer.config import USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST, CONFIG_INFO, CONFIG_US
|
|
|
from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
|
|
|
VodHlsModel, ExperienceContextModel, AiService, VodHlsSummary, VideoPlaybackTimeModel, DeviceUserSummary, \
|
|
|
CountryModel, DeviceTypeModel, OrdersSummary, DeviceInfoSummary, CompanySerialModel, \
|
|
|
- CloudLogModel, UidCloudStorageCount, UserExModel
|
|
|
+ CloudLogModel, UidCloudStorageCount, UserExModel, DeviceDomainRegionModel
|
|
|
from Object.RedisObject import RedisObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
@@ -234,6 +233,8 @@ class CronUpdateDataView(View):
|
|
|
return self.reqUpdateSerialStatus(response)
|
|
|
elif operation == 'updateSerialStatus': # 更新序列号状态
|
|
|
return self.updateSerialStatus(request_dict, response)
|
|
|
+ elif operation == 'reset-region-id': # 重置地区id
|
|
|
+ return self.reset_region_id(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -343,7 +344,7 @@ class CronUpdateDataView(View):
|
|
|
@staticmethod
|
|
|
def do_request_function(serial_redis_list, status):
|
|
|
"""
|
|
|
- 请求更新序列号线程
|
|
|
+ 请求更新序列号状态
|
|
|
@param serial_redis_list: 序列号redis列表
|
|
|
@param status: 状态, 1: 未使用, 3: 已占用
|
|
|
"""
|
|
@@ -357,16 +358,34 @@ class CronUpdateDataView(View):
|
|
|
logger = logging.getLogger('info')
|
|
|
logger.info('---请求更新序列号线程---data:{},orders_domain_name_list:{}'.format(data, orders_domain_name_list))
|
|
|
try:
|
|
|
- flag = 0 # 请求标志位
|
|
|
+ requests_failed_flag = False # 请求失败标志位
|
|
|
for domain_name in orders_domain_name_list:
|
|
|
url = '{}cron/update/updateSerialStatus'.format(domain_name)
|
|
|
response = requests.post(url=url, data=data, timeout=5)
|
|
|
- logger.info('---请求更新序列号响应时间---time:{}'.format(response.elapsed.total_seconds()))
|
|
|
+ logger.info('---请求更新序列号响应时间---:{}'.format(response.elapsed.total_seconds()))
|
|
|
result = response.json()
|
|
|
- if result['result_code'] != 0: # 请求失败修改标志位
|
|
|
- flag = 1
|
|
|
+ if result['result_code'] != 0: # 请求失败标志位置位
|
|
|
+ requests_failed_flag = True
|
|
|
break
|
|
|
- if flag == 0: # 请求成功删除redis序列号
|
|
|
+
|
|
|
+ # 状态为未使用,重置美洲服的地区id
|
|
|
+ if status == 1: # 美洲服直接更新
|
|
|
+ if CONFIG_INFO == CONFIG_US:
|
|
|
+ DeviceDomainRegionModel.objects.filter(~Q(region_id=0), serial_number__in=serial_redis_list).\
|
|
|
+ update(region_id=0)
|
|
|
+ else: # 其他服请求到美洲服更新
|
|
|
+ req_url = 'https://www.dvema.com/cron/update/reset-region-id'
|
|
|
+ req_data = {
|
|
|
+ 'serial_redis_list': str(serial_redis_list)
|
|
|
+ }
|
|
|
+ response = requests.post(url=req_url, data=req_data, timeout=5)
|
|
|
+ logger.info('---请求重置地区id响应时间---:{}'.format(response.elapsed.total_seconds()))
|
|
|
+ result = response.json()
|
|
|
+ if result['result_code'] != 0: # 请求失败标志位置位
|
|
|
+ requests_failed_flag = True
|
|
|
+ break
|
|
|
+
|
|
|
+ if not requests_failed_flag: # 请求成功删除redis序列号
|
|
|
if status == 1:
|
|
|
for i in serial_redis_list:
|
|
|
redis_obj.lrem(UNUSED_SERIAL_REDIS_LIST, 0, i)
|
|
@@ -376,7 +395,6 @@ class CronUpdateDataView(View):
|
|
|
except Exception as e:
|
|
|
logger.info('---更新序列号状态异常---:{}'.format(repr(e)))
|
|
|
|
|
|
-
|
|
|
@staticmethod
|
|
|
def updateSerialStatus(request_dict, response):
|
|
|
"""
|
|
@@ -402,6 +420,27 @@ class CronUpdateDataView(View):
|
|
|
logger.info('---更新序列号状态异常---:{}'.format(repr(e)))
|
|
|
return response.json(500)
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def reset_region_id(request_dict, response):
|
|
|
+ """
|
|
|
+ 重置地区id
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_redis_list: 序列号redis列表
|
|
|
+ @param response: 响应对象
|
|
|
+ """
|
|
|
+ serial_redis_list = request_dict.get('serial_redis_list', None)
|
|
|
+ logger = logging.getLogger('info')
|
|
|
+ logger.info('---重置地区id参数---serial_redis_list:{}'.format(serial_redis_list))
|
|
|
+ if not serial_redis_list:
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ serial_redis_list = eval(serial_redis_list)
|
|
|
+ DeviceDomainRegionModel.objects.filter(serial_number__in=serial_redis_list).update(region_id=0)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ logger.info('---重置地区id异常---:{}'.format(repr(e)))
|
|
|
+ return response.json(500)
|
|
|
+
|
|
|
|
|
|
class CronCollectDataView(View):
|
|
|
def get(self, request, *args, **kwargs):
|