Browse Source

定时监控云存套餐过期修改状态

zhangdongming 3 years ago
parent
commit
bfa8516d2a
1 changed files with 16 additions and 19 deletions
  1. 16 19
      Controller/Cron/CronTaskController.py

+ 16 - 19
Controller/Cron/CronTaskController.py

@@ -11,6 +11,7 @@ import datetime
 import time
 
 from django.db import connection, connections, transaction
+from django.db.models import Q
 from django.views import View
 
 from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
@@ -184,32 +185,29 @@ class CronUpdateDataView(View):
 
     def validation(self, request_dict, request, operation):
         response = ResponseObject()
-        if operation == 'expiredUidBucket':  # 定时更新过期云存套餐状态
-            return self.expiredUidBucket(response)
-        elif operation == 'updateUnusedUidBucket':  # 定时更新过期云存关联的未使用套餐状态
+        if operation == 'updateUnusedUidBucket':  # 定时更新过期云存关联的未使用套餐状态
             return self.updateUnusedUidBucket(response)
         elif operation == 'updateUnusedAiService':  # 定时更新过期ai关联的未使用套餐状态
             return self.updateUnusedAiService(response)
         else:
             return response.json(404)
 
-    @staticmethod
-    def expiredUidBucket(response):
-        now_time = int(time.time())
-        expired_uid_bucket = UID_Bucket.objects.filter(endTime__lte=now_time)
-        id_list = expired_uid_bucket.values_list('id', flat=True)
-        UID_Bucket.objects.filter(id__in=list(id_list)).update(use_status=2)
-        return response.json(0)
-
     @staticmethod
     def updateUnusedUidBucket(response):
+        """
+        监控云存套餐过期修改状态
+        @param response:
+        @return:
+        """
+        # 定时更新已过期套餐修改状态为2
         now_time = int(time.time())
-        expired_uid_buckets = UID_Bucket.objects.filter(
-            endTime__lte=now_time,
-            has_unused=1).values(
-            "id",
-            "uid")[
-                              0:1000]
+        expired_uid_bucket = UID_Bucket.objects.filter(endTime__lte=now_time)
+        expired_uid_bucket = expired_uid_bucket.filter(~Q(use_status=2)).values('id')
+        if expired_uid_bucket.exists():
+            expired_uid_bucket.update(use_status=2)
+        # 监控有未使用套餐则自动生效
+        expired_uid_buckets = \
+            UID_Bucket.objects.filter(endTime__lte=now_time, has_unused=1).values("id", "uid")[0:1000]
         for expired_uid_bucket in expired_uid_buckets:
             unuseds = Unused_Uid_Meal.objects.filter(
                 uid=expired_uid_bucket['uid']).values(
@@ -219,8 +217,7 @@ class CronUpdateDataView(View):
                 "addTime",
                 "expire",
                 "num",
-                "bucket_id").order_by('addTime')[
-                      0:1]
+                "bucket_id").order_by('addTime')[0:1]
             if not unuseds.exists():
                 continue
             unused = unuseds[0]