|
@@ -23,71 +23,44 @@ struct SPersonDwellChecker : business_data
|
|
|
//服务器重启加载数据
|
|
|
void area_business_person_dwell_checker::on_load_his(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
|
|
|
{
|
|
|
+ if(!c->is_person())
|
|
|
+ return;
|
|
|
std::shared_ptr<SPersonDwellChecker> p = std::make_shared<SPersonDwellChecker>();
|
|
|
- p->m_send_event = false;
|
|
|
ptr = p;
|
|
|
- EVENT_TYPE evType = EVENT_TYPE::ET_CARD_OVER_TIME_PERSON;
|
|
|
- if(c->is_person())
|
|
|
- {
|
|
|
- evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON : EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
- }
|
|
|
- else if (c->is_vehicle())
|
|
|
- {
|
|
|
- return ;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ EVENT_TYPE evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON : EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
auto ev_ptr_temp = event_list::instance()->get_event_card(c->m_id,c->m_type,evType);
|
|
|
if (ev_ptr_temp && !ev_ptr_temp->is_end())
|
|
|
- {
|
|
|
p->m_send_event = true;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
//进入区域,记录进入时间
|
|
|
void area_business_person_dwell_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
|
|
|
{
|
|
|
- std::shared_ptr<SPersonDwellChecker> p = std::make_shared<SPersonDwellChecker>();
|
|
|
- p->m_send_event = false;
|
|
|
- ptr = p;
|
|
|
- log_info("area_business_person_dwell_checker::on_enter : In Area=%d Card = %d ",a->m_area->is_mine(),c->m_id);
|
|
|
+ ptr = std::make_shared<SPersonDwellChecker>();
|
|
|
+ log_info("area_business_person_dwell_checker::on_enter : In Area=%d Card = %d ",a->m_area->id(),c->m_id);
|
|
|
}
|
|
|
|
|
|
//判断是否超时
|
|
|
void area_business_person_dwell_checker::on_hover(const std::shared_ptr<area_hover>&a,
|
|
|
const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
|
|
|
{
|
|
|
+ if(!c->is_person())
|
|
|
+ return;
|
|
|
auto ptr_temp = dynamic_cast<SPersonDwellChecker*>(ptr.get());
|
|
|
if(nullptr == ptr_temp || a->m_enter_time == 0)
|
|
|
- {
|
|
|
return ;
|
|
|
- }
|
|
|
- double limit_val = 0;
|
|
|
+
|
|
|
+ double limit_val = a->m_area->m_limit_person_second;
|
|
|
double cur_val = ( tool_time::now_to_seconds() - a->m_enter_time / 1000);
|
|
|
EVENT_TYPE evType = EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
- if(c->is_person())
|
|
|
+ if (!ptr_temp->m_send_event && a->m_area->m_limit_person_second < cur_val)
|
|
|
{
|
|
|
- if (a->m_area->m_limit_person_second > cur_val)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
- ptr_temp->m_send_event = true;
|
|
|
evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON : EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
- limit_val = a->m_area->m_limit_person_second;
|
|
|
- }
|
|
|
- else if (c->is_vehicle())
|
|
|
- {
|
|
|
- return ;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return;
|
|
|
+ uint64_t id = tool_other::type_id_to_u64(c->m_type, c->m_id);
|
|
|
+ event_tool::instance()->handle_event(OT_CARD,evType,id,limit_val,cur_val,ptr_temp->m_send_event = true);
|
|
|
}
|
|
|
- uint64_t id = tool_other::type_id_to_u64(c->m_type, c->m_id);
|
|
|
- event_tool::instance()->handle_event(OT_CARD,evType,id,limit_val,cur_val,true);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -95,24 +68,15 @@ void area_business_person_dwell_checker::on_hover(const std::shared_ptr<area_hov
|
|
|
void area_business_person_dwell_checker::on_leave(const std::shared_ptr<area_hover>&a,
|
|
|
const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
|
|
|
{
|
|
|
+ if(!c->is_person())
|
|
|
+ return;
|
|
|
auto ptr_temp = dynamic_cast<SPersonDwellChecker*>(ptr.get());
|
|
|
if(nullptr == ptr_temp)
|
|
|
- {
|
|
|
return ;
|
|
|
- }
|
|
|
if(ptr_temp->m_send_event)
|
|
|
{
|
|
|
ptr_temp->m_send_event = false;
|
|
|
- EVENT_TYPE evType = EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
- if (c->is_person())
|
|
|
- {
|
|
|
- evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON
|
|
|
- : EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ EVENT_TYPE evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON:EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
|
|
|
uint64_t id = tool_other::type_id_to_u64(c->m_type, c->m_id);
|
|
|
event_tool::instance()->handle_event(OT_CARD, evType, id, 0, 0, false);
|
|
|
}
|