فهرست منبع

修复同一设备推送多条云存套餐过期消息

zhuo 1 ماه پیش
والد
کامیت
f1c1deda24
1فایلهای تغییر یافته به همراه11 افزوده شده و 7 حذف شده
  1. 11 7
      Controller/CloudStorage.py

+ 11 - 7
Controller/CloudStorage.py

@@ -2481,6 +2481,7 @@ class CloudStorageView(View):
         uid_bucket_qs = UID_Bucket.objects.filter(
             Q(endTime__gt=now_time + 3600 * 144) & Q(endTime__lte=(now_time + 3600 * 168))).values('id', 'uid',
                                                                                                    'bucket__area',
+                                                                                                   'orderId',
                                                                                                    'channel', 'endTime')
         self.do_vod_msg(now_time, uid_bucket_qs)
 
@@ -2488,6 +2489,7 @@ class CloudStorageView(View):
         uid_bucket_qs = UID_Bucket.objects.filter(
             Q(endTime__gt=now_time + 3600 * 48) & Q(endTime__lte=(now_time + 3600 * 72))).values('id', 'uid',
                                                                                                  'bucket__area',
+                                                                                                 'orderId',
                                                                                                  'channel', 'endTime')
         self.do_vod_msg(now_time, uid_bucket_qs)
         return response.json(0)
@@ -2500,15 +2502,14 @@ class CloudStorageView(View):
         @return: response
         """
         msg_list = []
-        ids = []
-        for item in qs:
-            ids.append(item['id'])
+        BULK_SIZE = 100
+        order_ids = [item['orderId'] for item in qs]
 
-        order_qs = Order_Model.objects.filter(uid_bucket_id__in=ids).values('userID_id', 'uid_bucket_id')
+        order_qs = Order_Model.objects.filter(orderID__in=order_ids).values('userID_id', 'orderID')
 
         for item in qs:
             for order in order_qs:
-                if item['id'] == order['uid_bucket_id']:
+                if item['orderId'] == order['orderID']:
                     # 如果存在序列号,消息提示用序列号
                     uid = item['uid']
                     device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
@@ -2533,8 +2534,9 @@ class CloudStorageView(View):
                         msg=sys_msg_text,
                         status=0
                     ))
-                    SysMsgModel.objects.bulk_create(msg_list)
-                    msg_list.clear()
+                    if len(msg_list) >= BULK_SIZE:
+                        SysMsgModel.objects.bulk_create(msg_list)
+                        msg_list.clear()
                     user_qs = Device_User.objects.filter(userID=order['userID_id'])
                     if user_qs.exists():
                         user = user_qs.first()
@@ -2548,6 +2550,8 @@ class CloudStorageView(View):
                                 device_name, time.strftime("%Y-%m-%d", time.localtime(item['endTime'])))
                             self.send_message(username, params, 'SMS_219748440')
 
+        if msg_list:
+            SysMsgModel.objects.bulk_create(msg_list)
     @staticmethod
     def send_message(phone, params, temp_msg):
         """