Browse Source

完善删除区域逻辑

lixioayao 6 years ago
parent
commit
a833f07b0e
4 changed files with 25 additions and 10 deletions
  1. 15 0
      area.cpp
  2. 1 0
      area.h
  3. 3 3
      common.h
  4. 6 7
      module_service/module_meta_date_changed.cpp

+ 15 - 0
area.cpp

@@ -23,6 +23,7 @@
 #include "websocket/ws_common.h"
 #include "websocket/wsClientMgr.h"
 #include "ant.h"
+#include "event.h"
 
 //template<> std::shared_ptr<area_list> single_base<area_list, int, std::shared_ptr<area>>::m_instance=std::make_shared<area_list>();
 
@@ -85,6 +86,20 @@ area::area(int id,int limit_count_person, int limit_time_person,double scale,int
 
 		m_frozen_count.store(0);
     }
+void area::clear()
+{
+    EVENT_TYPE ev = is_mine()?EVENT_TYPE::ET_OVER_COUNT_PERSON : EVENT_TYPE::ET_AREA_OVER_COUNT_PERSON ;
+	EVENT_TYPE ev_ = is_mine()?EVENT_TYPE::ET_OVER_COUNT_VEHICLE : EVENT_TYPE::ET_AREA_OVER_COUNT_VEHICLE ;
+    if(m_event_person_count)
+	    event_tool::instance()->handle_event(OT_AREA,ev,m_id,m_limit_person_count,0,false,DT_NORMAL);
+    if(m_event_person_show_count)
+	    event_tool::instance()->handle_event(OT_AREA,ev,m_id,m_limit_person_count,0,false,DT_SPECIAL);
+    if(m_event_vehicle_count)
+	    event_tool::instance()->handle_event(OT_AREA,ev_,m_id,m_limit_vehicle_count,0,false,DT_NORMAL);
+    if(m_event_vehicle_show_count)
+	    event_tool::instance()->handle_event(OT_AREA,ev_,m_id,m_limit_vehicle_count,0,false,DT_SPECIAL);
+
+}
 
 
 void area::change_business(uint32_t new_bits)

+ 1 - 0
area.h

@@ -86,6 +86,7 @@ public:
 	}
 
 	void change_business(uint32_t new_bits);
+    void clear();
 public:
     std::vector<point> m_bound;
 	//数据库唯一ID

+ 3 - 3
common.h

@@ -98,9 +98,9 @@ enum OBJECT_TYPE
 };
 enum EVENT_DIS_TYPE
 {
-    DT_NORMAL=1,
-    DT_SPECIAL=2,
-    DT_COMMON=3
+    DT_NORMAL=1,//内部显示
+    DT_SPECIAL=2,//外部显示
+    DT_COMMON=3//全显示
 };
 enum EVENT_TYPE{ // 事件类型
     ET_OVER_COUNT_PERSON = 1,       // 井下人员超员

+ 6 - 7
module_service/module_meta_date_changed.cpp

@@ -185,13 +185,12 @@ void module_meta_date_changed::deal_call_edit_area(const std::string& id, EDIT_T
     }
     else if(ET_DELETE == edit_type_id)
     {
-        area_list::instance()->remove(aid);
-       // auto area_ptr = area_list::instance()->get(aid);
-       // if(!area_ptr)
-       // {
-       //     log_info("区域已经删除:areaid=%d", aid);
-       //     return;
-       // }
+        if(auto area_ptr = area_list::instance()->get(aid))
+        {
+            log_info("区域删除:areaid=%d", aid);
+            area_ptr->clear();
+            area_list::instance()->remove(aid);
+        }
     }
 }