Browse Source

云存套餐停用功能

guanhailong 2 years ago
parent
commit
61be105197
1 changed files with 79 additions and 0 deletions
  1. 79 0
      AdminController/ServeManagementController.py

+ 79 - 0
AdminController/ServeManagementController.py

@@ -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))