Browse Source

已读推送消息

locky 1 year ago
parent
commit
f529d11715
2 changed files with 48 additions and 27 deletions
  1. 20 27
      Controller/EquipmentInfo.py
  2. 28 0
      Service/EquipmentInfoService.py

+ 20 - 27
Controller/EquipmentInfo.py

@@ -168,42 +168,35 @@ class EquipmentInfo(View):
             res.append(p)
         return response.json(0, {'datas': res, 'count': count})
 
-    def update_info(self, request_dict, userID, response):
-        is_update_all = request_dict.get('is_update_all', 0)
-        eventType = request_dict.get('eventType', None)
-        if int(is_update_all) == 1:
+    @staticmethod
+    def update_info(request_dict, userID, response):
+        is_update_all = int(request_dict.get('is_update_all', 0))
+        event_type = request_dict.get('eventType', None)
+        if is_update_all == 1:
+            kwargs = {
+                'device_user_id': userID
+            }
+            if event_type:
+                kwargs['event_type'] = int(event_type)
             try:
-                is_update = 0
-                for i in range(1, 8):
-                    eq_qs = EquipmentInfoService.get_equipment_info_model('', i)
-                    eq_qs = eq_qs.filter(device_user_id=userID)
-                    if eventType:
-                        eq_qs = eq_qs.filter(event_type=int(eventType))
-                    is_update += eq_qs.update(status=1)
-                return response.json(0, {'update_count': is_update})
+                EquipmentInfoService.all_read_equipment_info(**kwargs)
             except Exception as e:
                 print(repr(e))
-            return response.json(0, {'update_success': 'all'})
         else:
             id_list = request_dict.getlist('id[]', None)
             if id_list is None or len(id_list) < 1:
                 id_list = request_dict.getlist('id', None)
             param_flag = CommonService.get_param_flag(data=[id_list])
-            if param_flag is True:
-                count = 0
-                for ei_id in id_list:
-                    try:
-                        tab_val = int(ei_id[0:1])
-                        ei_id = int(ei_id[1:])
-                        eq = EquipmentInfoService.get_equipment_info_model('', tab_val)
-                        eq.filter(id=ei_id).update(status=1)
-                        count += 1
-
-                    except Exception as e:
-                        print(repr(e))
-                return response.json(0, {'update_success': count})
-            else:
+            if not param_flag:
                 return response.json(444)
+            for full_id in id_list:
+                try:
+                    ei_id = int(full_id[2:])
+                    equipment_info_model = EquipmentInfoService.get_equipment_info_model_with_full_id(full_id)
+                    equipment_info_model.filter(id=ei_id).update(status=1)
+                except Exception as e:
+                    print(repr(e))
+        return response.json(0)
 
     @staticmethod
     def update_answer_status(request_dict, user_id, response):

+ 28 - 0
Service/EquipmentInfoService.py

@@ -20,6 +20,11 @@ from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInf
     EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20
 from Object.utils import LocalDateTimeUtil
 
+EQUIPMENT_INFO_MODEL_LIST = [EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5,
+                             EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10,
+                             EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15,
+                             EquipmentInfo16, EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20]
+
 """
 设备分表查询Service    
 因数据量不断增加,单表保留近七天数据进行分表优化设计
@@ -635,3 +640,26 @@ class EquipmentInfoService:
             equipment_info.pop('tab_val')
             equipment_info.pop('event_tag')
         return equipment_info_qs
+
+    @staticmethod
+    def all_read_equipment_info(**kwargs):
+        """
+        全部已读推送消息
+        @param kwargs:
+        @return:
+        """
+        for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
+            equipment_info_model.filter(**kwargs).update(status=1)
+
+    @staticmethod
+    def get_equipment_info_model_with_full_id(full_id):
+        """
+        根据拼接id获取推送表
+        @param full_id: 拼接id,表标识+id
+        @return:
+        """
+        tab_val = int(full_id[:2]) - 10
+        if tab_val > 20:
+            return None
+        tab_index = tab_val - 1
+        return EQUIPMENT_INFO_MODEL_LIST[tab_index]