瀏覽代碼

查询未读消息加缓存

zhangdongming 1 年之前
父節點
當前提交
61f3eeac06
共有 1 個文件被更改,包括 12 次插入15 次删除
  1. 12 15
      Service/EquipmentInfoService.py

+ 12 - 15
Service/EquipmentInfoService.py

@@ -7,9 +7,7 @@
 @Software: PyCharm
 """
 import itertools
-from Ansjer.config import LOGGER
 from django.db.models import Value, CharField, Q
-
 from Model.models import EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, \
     EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, \
     EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, \
@@ -18,6 +16,7 @@ from Model.models import EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, Equipme
     EquipmentInfo27, EquipmentInfo28, EquipmentInfo29, EquipmentInfo30, \
     EquipmentInfo31, EquipmentInfo32, EquipmentInfo33, EquipmentInfo34, EquipmentInfo35, EquipmentInfo36, \
     EquipmentInfo37, EquipmentInfo38, EquipmentInfo39, EquipmentInfo40
+from Object.RedisObject import RedisObject
 
 EQUIPMENT_INFO_MODEL_LIST = [
     EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, EquipmentInfo6,
@@ -556,21 +555,19 @@ class EquipmentInfoService:
         @param kwargs:
         @return: count
         """
-        try:
-            combined_queryset = None
-
-            for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
-                queryset = equipment_info_model.objects.filter(**kwargs).values('id')
 
-                if combined_queryset is None:
-                    combined_queryset = queryset
-                else:
-                    combined_queryset = combined_queryset.union(queryset, all=True)
-
-            count = combined_queryset.count() if combined_queryset is not None else 0
+        redis_obj = RedisObject()
+        key = 'PUSH:MESSAGE:USER:{}'.format(kwargs['device_user_id'])
+        push_data = redis_obj.get_data(key)
+        if push_data:
+            return int(push_data)
+        count = 0
+        for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
+            count += equipment_info_model.objects.filter(**kwargs).count()
+        if count == 0:
             return count
-        except Exception as e:
-            LOGGER.error(f'获取未读消息异常:{repr(e)}')
+        redis_obj.set_data(key, count, 60)
+        return count
 
     @classmethod
     def get_equipment_info(cls, **kwargs):