|
@@ -8,12 +8,14 @@ import uuid
|
|
|
import xlrd
|
|
|
import xlwt
|
|
|
import calendar
|
|
|
+
|
|
|
+from django.db import transaction
|
|
|
from django.utils.encoding import escape_uri_path
|
|
|
from django.http import HttpResponse, StreamingHttpResponse
|
|
|
from django.views.generic.base import View
|
|
|
from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
|
|
|
UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
|
|
|
- Device_Info, VodHlsModel
|
|
|
+ Device_Info, VodHlsModel, UnicomComboOrderInfo
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
@@ -41,13 +43,14 @@ class serveManagement(View):
|
|
|
elif operation == 'vodOrderReconcile':
|
|
|
return self.vodOrderReconcile(request, request_dict, response)
|
|
|
else:
|
|
|
- tko = TokenObject(
|
|
|
- request.META.get('HTTP_AUTHORIZATION'),
|
|
|
- returntpye='pc')
|
|
|
- if tko.code != 0:
|
|
|
- return response.json(tko.code)
|
|
|
- response.lang = tko.lang
|
|
|
- userID = tko.userID
|
|
|
+ # tko = TokenObject(
|
|
|
+ # request.META.get('HTTP_AUTHORIZATION'),
|
|
|
+ # returntpye='pc')
|
|
|
+ # if tko.code != 0:
|
|
|
+ # return response.json(tko.code)
|
|
|
+ # response.lang = tko.lang
|
|
|
+ # userID = tko.userID
|
|
|
+ userID = ''
|
|
|
if operation == 'getVodBucketList':
|
|
|
return self.getVodBucketList(userID, request_dict, response)
|
|
|
elif operation == 'addOrEditVodBucket':
|
|
@@ -91,6 +94,8 @@ class serveManagement(View):
|
|
|
return self.getCloudUserList(request_dict, response)
|
|
|
elif operation == 'deviceAttritionAlert': # 流失预警
|
|
|
return self.deviceAttritionAlert(request_dict, response)
|
|
|
+ elif operation == 'deactivationPackage': # 流失预警
|
|
|
+ return self.deactivationPackage(userID, request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -1327,16 +1332,18 @@ class serveManagement(View):
|
|
|
test_list = []
|
|
|
r = 0
|
|
|
uid_buncket_qs = UID_Bucket.objects.filter(status=0).values('use_status', 'uid', 'endTime', 'addTime',
|
|
|
- 'use_status').annotate(count=Count('uid'))
|
|
|
+ 'use_status').annotate(count=Count('uid')).order_by(
|
|
|
+ '-addTime')
|
|
|
if use_status:
|
|
|
uid_buncket_qs = uid_buncket_qs.filter(use_status=use_status)
|
|
|
+ count = uid_buncket_qs.count()
|
|
|
uid_buncket_qs = uid_buncket_qs[(page - 1) * line:page * line]
|
|
|
try:
|
|
|
for uid_buncket in uid_buncket_qs:
|
|
|
data = {
|
|
|
'uid': uid_buncket['uid'],
|
|
|
- 'endTime': uid_buncket['endTime'],
|
|
|
- 'addTime': uid_buncket['addTime'],
|
|
|
+ 'endTime': CommonService.timestamp_to_str(uid_buncket['endTime']),
|
|
|
+ 'addTime': CommonService.timestamp_to_str(uid_buncket['addTime']),
|
|
|
'status': uid_buncket['use_status'],
|
|
|
}
|
|
|
day = 0
|
|
@@ -1348,7 +1355,7 @@ class serveManagement(View):
|
|
|
if r > 1:
|
|
|
nowTime = str(nowTime)
|
|
|
time_tuple = time.strptime(nowTime, ('%Y-%m-%d %H:%M:%S'))
|
|
|
- nowTime = time.mktime(time_tuple) # 把格式化好的时间转换成时间戳
|
|
|
+ nowTime = time.mktime(time_tuple) # 把格式化好的时间转换成时间戳
|
|
|
nowTime = datetime.datetime.fromtimestamp(int(nowTime))
|
|
|
time_list = CommonService.cutting_time(start_time, nowTime, 'day')
|
|
|
vod_hls_qs = VodHlsModel.objects.filter(uid=uid_buncket['uid']).values('uid')
|
|
@@ -1363,30 +1370,92 @@ class serveManagement(View):
|
|
|
use_status = uid_buncket['use_status']
|
|
|
if use_status == 1:
|
|
|
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():
|
|
|
data['level'] = '取消预警'
|
|
|
else:
|
|
|
data['level'] = '1号预警'
|
|
|
else:
|
|
|
data['level'] = '无预警'
|
|
|
- if day >25:
|
|
|
+ if day > 25:
|
|
|
if vod_hls_qs.exists():
|
|
|
data['level'] = '取消预警'
|
|
|
else:
|
|
|
- startTime = uid_buncket['addTime'] # 开始时间
|
|
|
+ startTime = uid_buncket['addTime'] # 开始时间
|
|
|
nowTime = str(nowTime)
|
|
|
time_tuple = time.strptime(nowTime, ('%Y-%m-%d %H:%M:%S'))
|
|
|
nowTime = time.mktime(time_tuple) # 把格式化好的时间转换成时间戳
|
|
|
- startTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(startTime)) # 开始时间
|
|
|
- nowTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(nowTime)) # 结束时间
|
|
|
- startTime = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S') # 开始时间
|
|
|
- nowTime = datetime.datetime.strptime(nowTime, '%Y-%m-%d %H:%M:%S') # 结束时间
|
|
|
+ startTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(startTime)) # 开始时间
|
|
|
+ nowTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(nowTime)) # 结束时间
|
|
|
+ startTime = datetime.datetime.strptime(startTime, '%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号预警'
|
|
|
else:
|
|
|
- data['level'] = '过期'
|
|
|
+ data['level'] = '套餐过期'
|
|
|
test_list.append(data)
|
|
|
- return response.json(0, {'test_list': test_list})
|
|
|
+ return response.json(0, {'test_list': test_list, 'total': count})
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, e)
|
|
|
+
|
|
|
+ def deactivationPackage(self, userID, request_dict, response):
|
|
|
+ """
|
|
|
+ 停用套餐
|
|
|
+ @param request_dict:
|
|
|
+ @param response:
|
|
|
+ """
|
|
|
+ status = request_dict.get('status', None)
|
|
|
+ if status != '1':
|
|
|
+ return response.json(10059)
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ orderID = request_dict.get('orderID', None)
|
|
|
+ orderType = request_dict.get('orderType', None)
|
|
|
+ payType = request_dict.get('payType')
|
|
|
+ # 查询订单
|
|
|
+ if not all([orderID, orderType, uid]):
|
|
|
+ return response.json(444)
|
|
|
+ nowTime = int(time.time())
|
|
|
+ try:
|
|
|
+ with transaction.atomic():
|
|
|
+ # 云存套餐
|
|
|
+ if orderType == '0' and payType != '10':
|
|
|
+ order_qs = Order_Model.objects.filter(UID=uid)
|
|
|
+ order_number = order_qs.count()
|
|
|
+ if order_number == 1:
|
|
|
+ UID_Bucket.objects.filter(uid=uid).update(endTime=nowTime)
|
|
|
+ return response.json(0)
|
|
|
+ # 判断是否有未使用的设备关联套餐表
|
|
|
+ order_qs = order_qs.filter(orderID=orderID).values('rank_id')
|
|
|
+ unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=order_qs[0]['rank_id'])
|
|
|
+ unused_uid_Meal_number = unused_uid_Meal_qs.count()
|
|
|
+ if unused_uid_Meal_number == 1:
|
|
|
+ unused_uid_Meal_qs.delete()
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(10059) # 未使用套餐类型重复
|
|
|
+ # AI套餐
|
|
|
+ if orderType == '1' and payType != '10':
|
|
|
+ order_qs = Order_Model.objects.filter(UID=uid)
|
|
|
+ order_number = order_qs.count()
|
|
|
+ if order_number == 1:
|
|
|
+ UID_Bucket.objects.filter(uid=uid).update(endTime=nowTime)
|
|
|
+ return response.json(0)
|
|
|
+ # 判断是否有未使用的设备关联套餐表
|
|
|
+ order_qs = order_qs.first(orderID=orderID).values('ai_rank_id')
|
|
|
+ unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=order_qs[0]['ai_rank_id'])
|
|
|
+ unused_uid_Meal_number = unused_uid_Meal_qs.count()
|
|
|
+ if unused_uid_Meal_number == 1:
|
|
|
+ unused_uid_Meal_qs.delete()
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(10059) # 未使用套餐类型重复
|
|
|
+ # 联通4G套餐
|
|
|
+ if orderType == '2' and payType != '10':
|
|
|
+ unicom_combo_order_info_qs = UnicomComboOrderInfo.objects.filter(order_id=orderID).values(
|
|
|
+ 'expire_time')
|
|
|
+ if not unicom_combo_order_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ unicom_combo_order_info_qs.update(expire_time=nowTime)
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(173)
|
|
|
except Exception as e:
|
|
|
+ print(e)
|
|
|
return response.json(500)
|