中间件底层,websocket

ACDDlg.cpp 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. // ACDDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "ACD.h"
  5. #include "ACDDlg.h"
  6. #include "afxdialogex.h"
  7. #include "AcdCore.h"
  8. #include "Config.h"
  9. #include "SoftAuther.h"
  10. #include "SoftAuth.h"
  11. #include "resource.h"
  12. #include "Resource.h"
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #endif
  16. HWND m_MyHwnd;
  17. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  18. class CAboutDlg : public CDialogEx
  19. {
  20. public:
  21. CAboutDlg();
  22. // 对话框数据
  23. enum { IDD = IDD_ABOUTBOX };
  24. protected:
  25. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  26. virtual BOOL OnInitDialog();
  27. // 实现
  28. protected:
  29. DECLARE_MESSAGE_MAP()
  30. };
  31. CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  32. {
  33. }
  34. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  35. {
  36. CDialogEx::DoDataExchange(pDX);
  37. }
  38. BOOL CAboutDlg::OnInitDialog()
  39. {
  40. CDialogEx::OnInitDialog();
  41. // TODO: 在此添加额外的初始化
  42. CStatic* pLogoCtrl = (CStatic*)GetDlgItem(IDC_STATIC_LOGO);
  43. #ifdef _VERSION_EHANG
  44. HBITMAP bm = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BMP_LOGO_EHANG));
  45. if(bm != NULL)
  46. pLogoCtrl->SetBitmap(bm);
  47. SetDlgItemText(IDC_STATIC_ABOUT_VERSION, _T("毅航Ehangcom_ACD子系统V4.0"));
  48. SetDlgItemText(IDC_STATIC_ABOUT_RIGHT, _T("Copyright (C) 2015 广州市毅航互联通信股份有限公司"));
  49. #else
  50. pLogoCtrl->ModifyStyle(SS_BITMAP, SS_ICON);
  51. HICON Icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MAINFRAME));
  52. if(Icon != NULL)
  53. pLogoCtrl->SetIcon(Icon);
  54. SetDlgItemText(IDC_STATIC_ABOUT_VERSION, _T("河南华谊中间件_ACD子系统V4.0"));
  55. SetDlgItemText(IDC_STATIC_ABOUT_RIGHT, _T("Copyright (C) 2015 河南加一信息技术有限公司"));
  56. #endif
  57. return TRUE; // return TRUE unless you set the focus to a control
  58. // 异常: OCX 属性页应返回 FALSE
  59. }
  60. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  61. END_MESSAGE_MAP()
  62. // CACDDlg 对话框
  63. CACDDlg::CACDDlg(CWnd* pParent /*=NULL*/)
  64. : CDialogEx(CACDDlg::IDD, pParent)
  65. {
  66. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  67. }
  68. CACDDlg::~CACDDlg()
  69. {
  70. ILogger::getInstance().close();
  71. }
  72. void CACDDlg::DoDataExchange(CDataExchange* pDX)
  73. {
  74. CDialogEx::DoDataExchange(pDX);
  75. DDX_Control(pDX, IDC_LIST_LOG, m_LogList);
  76. DDX_Control(pDX, IDC_TAB, m_TabItem);
  77. DDX_Control(pDX, IDC_STATIC_AUTH, m_StaticAuthMsg);
  78. }
  79. BEGIN_MESSAGE_MAP(CACDDlg, CDialogEx)
  80. ON_WM_SYSCOMMAND()
  81. ON_WM_PAINT()
  82. ON_WM_QUERYDRAGICON()
  83. ON_WM_CLOSE()
  84. ON_BN_CLICKED(IDC_BUTTON1, &CACDDlg::OnBnClickedReloadAuth)
  85. ON_COMMAND(ID_MENU_LOG_START, &CACDDlg::OnMenuLogStart)
  86. ON_COMMAND(ID_MENU_LOG_STOP, &CACDDlg::OnMenuLogStop)
  87. ON_UPDATE_COMMAND_UI(ID_MENU_LOG_STOP, &CACDDlg::OnUpdateMenuLogStop)
  88. ON_UPDATE_COMMAND_UI(ID_MENU_LOG_START, &CACDDlg::OnUpdateMenuLogStart)
  89. ON_WM_INITMENUPOPUP()
  90. END_MESSAGE_MAP()
  91. // CACDDlg 消息处理程序
  92. BOOL CACDDlg::OnInitDialog()
  93. {
  94. CDialogEx::OnInitDialog();
  95. // 将“关于...”菜单项添加到系统菜单中。
  96. // IDM_ABOUTBOX 必须在系统命令范围内。
  97. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  98. ASSERT(IDM_ABOUTBOX < 0xF000);
  99. CMenu* pSysMenu = GetSystemMenu(FALSE);
  100. if (pSysMenu != NULL)
  101. {
  102. BOOL bNameValid;
  103. CString strAboutMenu;
  104. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  105. ASSERT(bNameValid);
  106. if (!strAboutMenu.IsEmpty())
  107. {
  108. pSysMenu->AppendMenu(MF_SEPARATOR);
  109. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  110. }
  111. }
  112. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  113. // 执行此操作
  114. SetIcon(m_hIcon, TRUE); // 设置大图标
  115. SetIcon(m_hIcon, FALSE); // 设置小图标
  116. // TODO: 在此添加额外的初始化代码
  117. // 设置主窗口标记
  118. ::SetProp(m_hWnd, AfxGetApp()->m_pszAppName, (HANDLE)1);
  119. if(!CAcdCore::GetInstance().stage1Start())
  120. return FALSE;
  121. //init Tab item
  122. m_TabItem.addItem(&m_AgentPage, IDD_PAGE_AGENT);
  123. m_TabItem.addItem(&m_CallPage, IDD_PAGE_CALL);
  124. m_MyHwnd=m_hWnd;
  125. __SoftAuth();
  126. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  127. }
  128. void CACDDlg::OnSysCommand(UINT nID, LPARAM lParam)
  129. {
  130. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  131. {
  132. CAboutDlg dlgAbout;
  133. dlgAbout.DoModal();
  134. }
  135. else
  136. {
  137. if(nID == SC_CLOSE)
  138. {
  139. if(MessageBox(_T("确定要退出ACD系统吗?"), _T("提示"), MB_OKCANCEL) != IDOK)
  140. return;
  141. ILogger::getInstance().stop();
  142. }
  143. CDialogEx::OnSysCommand(nID, lParam);
  144. }
  145. }
  146. // 如果向对话框添加最小化按钮,则需要下面的代码
  147. // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  148. // 这将由框架自动完成。
  149. void CACDDlg::OnPaint()
  150. {
  151. if (IsIconic())
  152. {
  153. CPaintDC dc(this); // 用于绘制的设备上下文
  154. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  155. // 使图标在工作区矩形中居中
  156. int cxIcon = GetSystemMetrics(SM_CXICON);
  157. int cyIcon = GetSystemMetrics(SM_CYICON);
  158. CRect rect;
  159. GetClientRect(&rect);
  160. int x = (rect.Width() - cxIcon + 1) / 2;
  161. int y = (rect.Height() - cyIcon + 1) / 2;
  162. // 绘制图标
  163. dc.DrawIcon(x, y, m_hIcon);
  164. }
  165. else
  166. {
  167. CDialogEx::OnPaint();
  168. }
  169. }
  170. //当用户拖动最小化窗口时系统调用此函数取得光标
  171. //显示。
  172. HCURSOR CACDDlg::OnQueryDragIcon()
  173. {
  174. return static_cast<HCURSOR>(m_hIcon);
  175. }
  176. void CACDDlg::OnClose()
  177. {
  178. // TODO: 在此添加消息处理程序代码和/或调用默认值
  179. CAcdCore::GetInstance().exit();
  180. /*ILogger::getInstance().close();*/
  181. KillProcess(NULL, "ACD");
  182. CDialogEx::OnClose();
  183. }
  184. void CACDDlg::__SoftAuth()
  185. {
  186. m_Auther.InitAutherData("C://Windows//mshy.dll");
  187. char* CpuID=m_Auther.GetCpuID();
  188. char* Passw= m_Auther.GetKeyByNumber(CpuID);
  189. CString strAuth = m_Auther.GetCpuCodeAuth();
  190. CTime time = CTime::GetCurrentTime(); ///构造CTime对象
  191. int m_nYear = time.GetYear(); ///年
  192. m_nYear=m_nYear-2000;
  193. int m_nMonth = time.GetMonth(); ///月
  194. int m_nDay = time.GetDay(); ///日
  195. int SysTime=m_nYear*10000+m_nMonth*100+m_nDay;
  196. int DateinText = m_Auther.GetDateCode();
  197. if (0!=strcmp(Passw,strAuth)||false==m_Auther.CompareDate(SysTime,DateinText))
  198. {
  199. SoftAuth dlg;
  200. dlg.InitDlg(CpuID);
  201. dlg.DoModal();
  202. if (!isReg)
  203. {
  204. this->SendMessage(WM_CLOSE);
  205. }
  206. else
  207. {
  208. m_Auther.WritessFile("C://Windows//mshy.dll",Inputchar);
  209. Sleep(1000);
  210. m_Auther.InitAutherData("C://Windows//mshy.dll");
  211. }
  212. }
  213. char chDate[50]={0};
  214. _itoa_s(m_Auther.GetDateCode(),chDate,10);
  215. CString Datestr= chDate;
  216. CString year="20"+Datestr.Mid(0,2);
  217. CString month = Datestr.Mid(2,2);
  218. CString day = Datestr.Mid(4,2);
  219. ILogger::getInstance().init(&m_LogList, LOG_DEV_ACD, CConfig::logFilePath());
  220. ILogger::getInstance().start();
  221. CAcdCore::GetInstance().stage2Start();
  222. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("授权截至日期%s年%s月%s日"), year, month,day);
  223. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("座席授权数量%d"),m_Auther.GetAgentCount());
  224. CString AuthMsg;
  225. AuthMsg.Format("授权截止日期%s年%s月%s日 授权数量%d",year,month,day,m_Auther.GetAgentCount());
  226. m_StaticAuthMsg.SetWindowText(AuthMsg);
  227. }
  228. void CACDDlg::OnBnClickedReloadAuth()
  229. {
  230. CAcdCore::GetInstance().reloadAuther();
  231. m_Auther.InitAutherData("C://Windows//mshy.dll");
  232. char chDate[50]={0};
  233. _itoa_s(m_Auther.GetDateCode(),chDate,10);
  234. CString Datestr= chDate;
  235. CString year="20"+Datestr.Mid(0,2);
  236. CString month = Datestr.Mid(2,2);
  237. CString day = Datestr.Mid(4,2);
  238. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("授权截至日期%s年%s月%s日"), year, month,day);
  239. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("座席授权数量%d"),m_Auther.GetAgentCount());
  240. CString AuthMsg;
  241. AuthMsg.Format("授权截止日期%s年%s月%s日 授权数量%d",year,month,day,m_Auther.GetAgentCount());
  242. m_StaticAuthMsg.SetWindowText(AuthMsg);
  243. }
  244. void CACDDlg::OnMenuLogStart()
  245. {
  246. // TODO: 在此添加命令处理程序代码
  247. ILogger::getInstance().start();
  248. }
  249. void CACDDlg::OnMenuLogStop()
  250. {
  251. // TODO: 在此添加命令处理程序代码
  252. ILogger::getInstance().stop();
  253. }
  254. void CACDDlg::OnUpdateMenuLogStop(CCmdUI *pCmdUI)
  255. {
  256. // TODO: 在此添加命令更新用户界面处理程序代码
  257. if (ILogger::getInstance().isStart())
  258. pCmdUI->SetCheck(0);
  259. else
  260. pCmdUI->SetCheck(1);
  261. }
  262. void CACDDlg::OnUpdateMenuLogStart(CCmdUI *pCmdUI)
  263. {
  264. // TODO: 在此添加命令更新用户界面处理程序代码
  265. if (ILogger::getInstance().isStart())
  266. pCmdUI->SetCheck();
  267. else
  268. pCmdUI->SetCheck(0);
  269. }
  270. void CACDDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
  271. {
  272. CDialogEx::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
  273. // TODO: 在此处添加消息处理程序代码
  274. if (!bSysMenu && pPopupMenu)
  275. {
  276. CCmdUI cmdUI;
  277. cmdUI.m_pOther = NULL;
  278. cmdUI.m_pMenu = pPopupMenu;
  279. cmdUI.m_pSubMenu = NULL;
  280. UINT count = pPopupMenu->GetMenuItemCount();
  281. cmdUI.m_nIndexMax = count;
  282. for (UINT i = 0; i < count; i++)
  283. {
  284. UINT nID = pPopupMenu->GetMenuItemID(i);
  285. if (-1 == nID || 0 == nID)
  286. {
  287. continue;
  288. }
  289. cmdUI.m_nID = nID;
  290. cmdUI.m_nIndex = i;
  291. cmdUI.DoUpdate(this, FALSE);
  292. }
  293. }
  294. }