升龙物业 老版本 ocx IPO, 加密狗 转值班电话

SLogic.cpp 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "StdAfx.h"
  2. #include "SLogic.h"
  3. #include "SItemAgentDetail.h"
  4. #include "SItemAgentStatus.h"
  5. SINGLETON_IMPLEMENT(CSLogic)
  6. CSLogic::CSLogic(void)
  7. {
  8. }
  9. CSLogic::~CSLogic(void)
  10. {
  11. }
  12. /*****************************************************************
  13. **【函数名称】 __getAgentLoginId
  14. **【函数功能】 获取座席签入ID
  15. **【参数】
  16. **【返回值】
  17. ****************************************************************/
  18. ULONG CSLogic::__getAgentLoginId( UINT AgentId )
  19. {
  20. CString SQL;
  21. SQL.Format("SELECT LoginId FROM rep_agent_detail where AgentId = %d ORDER BY LoginId DESC", AgentId);
  22. ULONG LoginID = IOtlConnection::getInstance()->GetSingleDataInt(SQL);
  23. return ++LoginID;
  24. }
  25. /*****************************************************************
  26. **【函数名称】 __onAgentLogin
  27. **【函数功能】 坐席签入处理
  28. **【参数】 AgentId:签入坐席的工号
  29. **【返回值】
  30. ****************************************************************/
  31. void CSLogic::__onAgentLogin( UINT AgentId )
  32. {
  33. // 获取当前坐席的签入ID
  34. ULONG LoginID = __getAgentLoginId(AgentId);
  35. CSItem* pItemDetail = new CSItemAgentDetail(AgentId, LoginID);
  36. m_ItemMap.insert(pair<UINT, CSItem*>(AgentId, pItemDetail));
  37. CSItem* pItemStatus = new CSItemAgentStatus(AgentId, LoginID);
  38. m_ItemMap.insert(pair<UINT, CSItem*>(AgentId, pItemStatus));
  39. }
  40. /*****************************************************************
  41. **【函数名称】 __onAgentLogout
  42. **【函数功能】 坐席签出处理
  43. **【参数】 AgentId: 签出坐席的工号
  44. **【返回值】
  45. ****************************************************************/
  46. void CSLogic::__onAgentLogout( UINT AgentId )
  47. {
  48. SItemMap::iterator itrBegin;
  49. SItemMap::iterator itrEnd;
  50. itrBegin = m_ItemMap.find(AgentId);
  51. if(itrBegin == m_ItemMap.end())
  52. return;
  53. itrEnd = m_ItemMap.upper_bound(AgentId);
  54. CSItem* pItem = NULL;
  55. for(SItemMap::iterator itr = itrBegin; itr != itrEnd; ++itr)
  56. {
  57. pItem = itr->second;
  58. if(pItem != NULL)
  59. delete pItem;
  60. }
  61. m_ItemMap.erase(itrBegin, itrEnd);
  62. }
  63. /*****************************************************************
  64. **【函数名称】 OnRepEvent
  65. **【函数功能】 统计事件变化通知
  66. **【参数】 AgentId: 坐席工号
  67. EvtType: 事件类型
  68. Param: 参数
  69. **【返回值】
  70. ****************************************************************/
  71. void CSLogic::onSEvent( UINT AgentId, REP_EVENT EvtType, PARAM Param )
  72. {
  73. // 坐席签入处理
  74. if(EvtType == REP_EVENT_LOGIN)
  75. __onAgentLogin(AgentId);
  76. SItemMap::iterator itr;
  77. SItemMap::iterator itrEnd;
  78. itr = m_ItemMap.find(AgentId);
  79. if(itr == m_ItemMap.end())
  80. return;
  81. itrEnd = m_ItemMap.upper_bound(AgentId);
  82. // 事件消息群发
  83. for(; itr != itrEnd; ++itr)
  84. {
  85. itr->second->onSEvent(EvtType, Param);
  86. }
  87. // 坐席签出处理
  88. if(EvtType == REP_EVENT_LOGOUT)
  89. __onAgentLogout(AgentId);
  90. }