|
@@ -15,7 +15,7 @@ from django.http import HttpResponse, StreamingHttpResponse
|
|
from django.views.generic.base import View
|
|
from django.views.generic.base import View
|
|
from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
|
|
from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
|
|
UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
|
|
UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
|
|
- Device_Info, VodHlsModel, UnicomComboOrderInfo
|
|
|
|
|
|
+ Device_Info, VodHlsModel, UnicomComboOrderInfo, Device_User
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
@@ -1329,7 +1329,7 @@ class serveManagement(View):
|
|
page = int(pageNo)
|
|
page = int(pageNo)
|
|
line = int(pageSize)
|
|
line = int(pageSize)
|
|
nowTime = int(time.time())
|
|
nowTime = int(time.time())
|
|
- test_list = []
|
|
|
|
|
|
+ attrition_list = []
|
|
r = 0
|
|
r = 0
|
|
uid_buncket_qs = UID_Bucket.objects.filter(status=0).values('use_status', 'uid', 'endTime', 'addTime',
|
|
uid_buncket_qs = UID_Bucket.objects.filter(status=0).values('use_status', 'uid', 'endTime', 'addTime',
|
|
'use_status').annotate(count=Count('uid')).order_by(
|
|
'use_status').annotate(count=Count('uid')).order_by(
|
|
@@ -1340,16 +1340,10 @@ class serveManagement(View):
|
|
uid_buncket_qs = uid_buncket_qs[(page - 1) * line:page * line]
|
|
uid_buncket_qs = uid_buncket_qs[(page - 1) * line:page * line]
|
|
try:
|
|
try:
|
|
for uid_buncket in uid_buncket_qs:
|
|
for uid_buncket in uid_buncket_qs:
|
|
- data = {
|
|
|
|
- 'uid': uid_buncket['uid'],
|
|
|
|
- 'endTime': CommonService.timestamp_to_str(uid_buncket['endTime']),
|
|
|
|
- 'addTime': CommonService.timestamp_to_str(uid_buncket['addTime']),
|
|
|
|
- 'status': uid_buncket['use_status'],
|
|
|
|
- }
|
|
|
|
day = 0
|
|
day = 0
|
|
- device_info = Device_Info.objects.filter(UID=uid_buncket['uid']).values('userID__username')
|
|
|
|
- data['username'] = device_info[0]['userID__username'] if device_info.exists() else ''
|
|
|
|
- start_time = uid_buncket['addTime']
|
|
|
|
|
|
+ endTime = uid_buncket['endTime']
|
|
|
|
+ addTime = uid_buncket['addTime']
|
|
|
|
+ start_time = addTime
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time))
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time))
|
|
r += 1
|
|
r += 1
|
|
if r > 1:
|
|
if r > 1:
|
|
@@ -1366,20 +1360,21 @@ class serveManagement(View):
|
|
day += 1
|
|
day += 1
|
|
if day > 25:
|
|
if day > 25:
|
|
break
|
|
break
|
|
- data['day'] = day
|
|
|
|
|
|
+ day = day
|
|
use_status = uid_buncket['use_status']
|
|
use_status = uid_buncket['use_status']
|
|
if use_status == 1:
|
|
if use_status == 1:
|
|
|
|
+ # 统计设备目前未上传天数
|
|
vod_hls_qs = VodHlsModel.objects.filter(uid=uid_buncket['uid']).values('uid')
|
|
vod_hls_qs = VodHlsModel.objects.filter(uid=uid_buncket['uid']).values('uid')
|
|
- if 15 < day < 25:
|
|
|
|
|
|
+ if 15 <= day < 25:
|
|
if vod_hls_qs.exists():
|
|
if vod_hls_qs.exists():
|
|
- data['level'] = '取消预警'
|
|
|
|
|
|
+ level = '取消预警'
|
|
else:
|
|
else:
|
|
- data['level'] = '1号预警'
|
|
|
|
|
|
+ level = '1号预警'
|
|
else:
|
|
else:
|
|
- data['level'] = '无预警'
|
|
|
|
- if day > 25:
|
|
|
|
|
|
+ level = '无预警'
|
|
|
|
+ if day >= 25:
|
|
if vod_hls_qs.exists():
|
|
if vod_hls_qs.exists():
|
|
- data['level'] = '取消预警'
|
|
|
|
|
|
+ level = '取消预警'
|
|
else:
|
|
else:
|
|
startTime = uid_buncket['addTime'] # 开始时间
|
|
startTime = uid_buncket['addTime'] # 开始时间
|
|
nowTime = str(nowTime)
|
|
nowTime = str(nowTime)
|
|
@@ -1389,14 +1384,47 @@ class serveManagement(View):
|
|
nowTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(nowTime)) # 结束时间
|
|
nowTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(nowTime)) # 结束时间
|
|
startTime = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S') # 开始时间
|
|
startTime = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S') # 开始时间
|
|
nowTime = datetime.datetime.strptime(nowTime, '%Y-%m-%d %H:%M:%S') # 结束时间
|
|
nowTime = datetime.datetime.strptime(nowTime, '%Y-%m-%d %H:%M:%S') # 结束时间
|
|
- data['day'] = (nowTime - startTime).days
|
|
|
|
- data['level'] = '2号预警'
|
|
|
|
|
|
+ day = (nowTime - startTime).days
|
|
|
|
+ level = '2号预警'
|
|
|
|
+ else:
|
|
|
|
+ level = '套餐过期'
|
|
|
|
+ device_user = Device_User.objects.filter(device_info__UID=uid_buncket['uid']).values('username', 'userID')
|
|
|
|
+ username = device_user[0]['username'] if device_user.exists() else ''
|
|
|
|
+ userID = device_user[0]['userID'] if device_user.exists() else ''
|
|
|
|
+ order_qs = Order_Model.objects.filter(order_type=0, userID=userID).values('UID').annotate(count=Count('UID'))
|
|
|
|
+ # 用户设备购买云存数量
|
|
|
|
+ if not order_qs.exists():
|
|
|
|
+ count = ''
|
|
|
|
+ else:
|
|
|
|
+ uid_count = order_qs.count()
|
|
|
|
+ if uid_count == 1:
|
|
|
|
+ count = 'N/A'
|
|
|
|
+ else:
|
|
|
|
+ count = uid_count
|
|
|
|
+ order_uid_list = [order[uid] for order in order_qs for uid in order]
|
|
|
|
+ vod_hls_qs = VodHlsModel.objects.filter(uid__in=order_uid_list).values('uid')
|
|
|
|
+ # 套餐使用期间是否上传过数据
|
|
|
|
+ if vod_hls_qs.exists():
|
|
|
|
+ other = '有'
|
|
else:
|
|
else:
|
|
- data['level'] = '套餐过期'
|
|
|
|
- test_list.append(data)
|
|
|
|
|
|
+ other = '无'
|
|
|
|
+
|
|
|
|
+ data = {
|
|
|
|
+ 'userID': userID,
|
|
|
|
+ 'uid': uid_buncket['uid'],
|
|
|
|
+ 'endTime': CommonService.timestamp_to_str(endTime),
|
|
|
|
+ 'addTime': CommonService.timestamp_to_str(addTime),
|
|
|
|
+ 'status': uid_buncket['use_status'],
|
|
|
|
+ 'level': level,
|
|
|
|
+ 'day': day,
|
|
|
|
+ 'other': other,
|
|
|
|
+ 'username': username,
|
|
|
|
+ }
|
|
|
|
+ attrition_list.append(data)
|
|
|
|
+ test_list = [list for list in attrition_list if list['day'] > 14] # 输出15天及以上的数据
|
|
return response.json(0, {'test_list': test_list, 'total': count})
|
|
return response.json(0, {'test_list': test_list, 'total': count})
|
|
except Exception as e:
|
|
except Exception as e:
|
|
- return response.json(500, e)
|
|
|
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
def deactivationPackage(self, userID, request_dict, response):
|
|
def deactivationPackage(self, userID, request_dict, response):
|
|
"""
|
|
"""
|
|
@@ -1458,4 +1486,4 @@ class serveManagement(View):
|
|
return response.json(173)
|
|
return response.json(173)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(e)
|
|
print(e)
|
|
- return response.json(500)
|
|
|
|
|
|
+ return response.json(500, repr(e))
|