#include "DepttelextOffice.h" #include #include #include "Log.h" #include "JdbcHelper.h" CDepttelextOffice::~CDepttelextOffice() { std::unique_locklock(mut); auto it = m_DeptTelextmap.begin(); DeptTelext *pDeptTelext = nullptr; while (it != m_DeptTelextmap.end()) { pDeptTelext = it->second; if (pDeptTelext) { delete pDeptTelext; pDeptTelext = nullptr; } ++it; } } bool CDepttelextOffice::InitDepttelext() { LOG_INFO("督办分机号码列表开始初始化"); std::string strSQL = "SELECT id,Name,Telephone,Extension FROM rep_video_depttelext"; std::unique_locklock(mut); JdbcHelper::GetInstance()->jdbc_executeQuery(strSQL, NULL, [this](sql::ResultSet* result) { while (result->next()){ DeptTelext *pDeptTelext = new DeptTelext(); pDeptTelext->Name = result->getString("Name"); pDeptTelext->Telephone = result->getString("Telephone"); pDeptTelext->Extension = result->getString("Extension"); pDeptTelext->State = 0;// 默认不可用 auto extenId = std::stoul(pDeptTelext->Extension); m_DeptTelextmap.insert(std::make_pair(extenId, pDeptTelext)); } }, NULL); LOG_INFO("督办分机号码列表结束初始化"); return true; } bool CDepttelextOffice::UpdateDepttelext(uint32_t extno, int state) { std::unique_locklock(mut); auto it = m_DeptTelextmap.find(extno); if (it == m_DeptTelextmap.end()) return false; if (it->second) { it->second->UpdateState(state); } return true; } std::string CDepttelextOffice::GetAllDeptTelext() { Json::Value root; Json::Value person; Json::FastWriter writer; person["Type"] = ""; person["Result"] = true; std::unique_locklock(mut); auto it = m_DeptTelextmap.begin(); DeptTelext *pDeptTelext = nullptr; while (it != m_DeptTelextmap.end()) { pDeptTelext = it->second; if (pDeptTelext) { Json::Value body; body["Name"] = pDeptTelext->Name; body["Telephone"] = pDeptTelext->Telephone; body["AgentExten"] = pDeptTelext->Extension; body["State"] = pDeptTelext->State; person["ExtenList"].append(body); } ++it; } lock.unlock(); root.append(person); return writer.write(root); }