|
@@ -12,8 +12,11 @@ import logging
|
|
|
|
|
|
import xlwt
|
|
|
from boto3.session import Session
|
|
|
+from django.db import transaction
|
|
|
from django.http import JsonResponse, HttpResponseRedirect, HttpResponse, StreamingHttpResponse
|
|
|
from django.views.generic.base import View
|
|
|
+
|
|
|
+from Controller.Cron.CronTaskController import CronUpdateDataView
|
|
|
from Model.models import Device_Info, Role, MenuModel, VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
|
|
|
UID_Bucket, ExperienceContextModel, Lang, Device_User, CloudLogModel, UidSetModel, Unused_Uid_Meal, VodHlsModel
|
|
|
from Object.ResponseObject import ResponseObject
|
|
@@ -92,6 +95,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)
|
|
|
|
|
@@ -1300,3 +1305,77 @@ class serveManagement(View):
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
+ def deactivationPackage(self, userID, request_dict, response):
|
|
|
+ """
|
|
|
+ 停用套餐
|
|
|
+ @param request_dict:
|
|
|
+ @param response:
|
|
|
+ """
|
|
|
+ status = request_dict.get('status', None)
|
|
|
+ if status in [1, 5, 6, 7]: # 付款状态
|
|
|
+ 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', None)
|
|
|
+ userName = request_dict.get('userName', None)
|
|
|
+ # 查询订单
|
|
|
+ if not all([orderID, orderType, uid, userName]):
|
|
|
+ return response.json(444)
|
|
|
+ nowTime = int(time.time())
|
|
|
+ try:
|
|
|
+ with transaction.atomic():
|
|
|
+ # 云存套餐
|
|
|
+ if orderType == '0' and payType != '10':
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID, userID__username=userName, UID=uid).values(
|
|
|
+ 'rank__bucket_id')
|
|
|
+ if not order_qs.exists():
|
|
|
+ return response.json(14)
|
|
|
+ uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1).values('has_unused')
|
|
|
+ if not uid_bucket_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ has_unused = uid_bucket_qs[0]['has_unused'] if uid_bucket_qs.exists() else ''
|
|
|
+ # 判断套餐是否唯一
|
|
|
+ if has_unused == 0:
|
|
|
+ uid_bucket_qs.update(endTime=nowTime)
|
|
|
+ CronUpdateDataView.updateUnusedUidBucket(response)
|
|
|
+ return response.json(0)
|
|
|
+ # 当设备套餐不唯一时
|
|
|
+ # 判断停用套餐是否是为未使用套餐
|
|
|
+ unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=order_qs[0]['rank__bucket_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':
|
|
|
+ return response.json(10059)
|
|
|
+ # order_qs = Order_Model.objects.filter(orderID=orderID, userID__username=userName, UID=uid).values(
|
|
|
+ # 'ai_rank_id')
|
|
|
+ # order_qs = order_qs.objects.filter(UID=uid)
|
|
|
+ # ai_service_qs = AiService.objects.filter(uid=uid, use_status=1).values('addTime', 'endTime')
|
|
|
+ # ai_service_number = ai_service_qs.count()
|
|
|
+ # if ai_service_number <= 1:
|
|
|
+ # ai_service_qs.update(endTime=nowTime)
|
|
|
+ # return response.json(0)
|
|
|
+ # # 当设备套餐不唯一时
|
|
|
+ # ai_service_qs = AiService.objects.filter(uid=uid, bucket_id=order_qs[0]['ai_rank_id'])
|
|
|
+ # ai_serverice_number = ai_service_qs.count()
|
|
|
+ # if ai_serverice_number == 1:
|
|
|
+ # ai_service_qs.update(endTime=nowTime)
|
|
|
+ # return response.json(0)
|
|
|
+ # return response.json(10059) # 未使用套餐类型重复
|
|
|
+ # 联通4G套餐
|
|
|
+ if orderType == '2' and payType != '10':
|
|
|
+ return response.json(10059)
|
|
|
+ # unicom_combo_order_info_qs = UnicomComboOrderInfo.objects.filter(order_id=orderID & ~Q(status=2)).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, repr(e))
|