// CK_AllQuery_Client.cpp: 实现文件 // #include "stdafx.h" #include "SmsManager.h" #include "afxdialogex.h" #include "CK_AllQuery_Client.h" #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_SmsLogSee.h" #include "DLG_HZB_Export.h" #include "SmsManagerDoc.h" #include "UserView.h" // CK_AllQuery_Client 对话框 IMPLEMENT_DYNAMIC(CK_AllQuery_Client, CDialogEx) CK_AllQuery_Client::CK_AllQuery_Client(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_K_ALLQUERY_CLIENT, pParent) , m_strKey(_T("")) { m_bInit = false; m_bRefresh = false; // m_bProcess = false; m_lMsgCount = 0; // m_strKey = _T(""); } CK_AllQuery_Client::~CK_AllQuery_Client() { } void CK_AllQuery_Client::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_ALLQUERY_CLIENT_LIST, m_wndList); DDX_Control(pDX, IDC_ALLQUERY_CLIENT_S1, m_S_S1); DDX_Text(pDX, IDC_ALLQUERY_CLIENT_KEY, m_strKey); DDV_MaxChars(pDX, m_strKey, 50); DDX_Control(pDX, IDC_ALLQUERY_CLIENT_PT, m_L_PT); } BEGIN_MESSAGE_MAP(CK_AllQuery_Client, CDialogEx) ON_WM_SIZE() ON_WM_CLOSE() ON_NOTIFY(NM_DBLCLK, IDC_ALLQUERY_CLIENT_LIST, &CK_AllQuery_Client::OnDblclkAllqueryClientList) ON_NOTIFY(NM_RDBLCLK, IDC_ALLQUERY_CLIENT_LIST, &CK_AllQuery_Client::OnRdblclkAllqueryClientList) ON_BN_CLICKED(IDC_ALLQUERY_CLIENT_QUERY, &CK_AllQuery_Client::OnBnClickedAllqueryClientQuery) ON_COMMAND(MENU_ALLQUERY_CLIENT_SEE, On_User_See) ON_COMMAND(MENU_ALLQUERY_CLIENT_COPYID, On_User_CopyID) ON_COMMAND(MENU_ALLQUERY_CLIENT_COPYNAME, On_User_CopyName) ON_NOTIFY(NM_RCLICK, IDC_ALLQUERY_CLIENT_LIST, &CK_AllQuery_Client::OnRclickAllqueryClientList) END_MESSAGE_MAP() // CK_AllQuery_Client 消息处理程序 BOOL CK_AllQuery_Client::ReShow(BOOL bRefresh) { ShowWindow(SW_SHOW); if (bRefresh || !m_bRefresh) { RefreshInfo(); } return true; } BOOL CK_AllQuery_Client::ReHide() { ShowWindow(SW_HIDE); return true; } BOOL CK_AllQuery_Client::RefreshInfo() { if (!m_pMainFrame->GetUserPurview(PURVIEW_LIST)) { return false; } #ifndef SMSMANAGER_KF if (!m_pMainFrame->GetUserPurview(PURVIEW_CORP_SEE)) { return false; } #endif return true; } BOOL CK_AllQuery_Client::ProcessSocket(Socket_Head* pHead) { //取清单 if (pHead->lFuncType == SMSFUNC_MSGLIST) { ANS_AllQuery_Client_See* pSee = (ANS_AllQuery_Client_See*)pHead->pFrame; ANS_AllQuery_Client_Data* pData = (ANS_AllQuery_Client_Data*)(pHead->pFrame + sizeof(ANS_AllQuery_Client_See)); /* if (pSee->lCount>0) { CString strTemp; strTemp.Format(_T("查询结果 (%d/%d)"), pSee->lPageCount, pSee->lPageAll); m_S_S1.SetWindowText(strTemp); //添加到List long lCount = m_wndList.GetItemCount(); TCHAR szBuf[512] = { 0 }; for (int i = 0; i < pList->lCount; i++) { ANS_AllQuery_Client_Data* pNewData = new ANS_AllQuery_Client_Data; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); //m_wndList.SetHeadings(_T("序号,40; 企业ID,60;短信内容,1000;")); m_wndList.InsertItem(lCount + i, _itot(lCount + i + 1, szBuf, 10), 0); _stprintf(szBuf, _T("%d"), pData->lCorpID); m_wndList.SetItemText(lCount + i, 1, szBuf); m_wndList.SetItemText(lCount + i, 2, _itot(pData->lCount, szBuf, 10)); m_wndList.SetItemText(lCount + i, 3, pData->szMsg); m_lMsgCount += pData->lCount; m_wndList.SetItemData(lCount + i, (DWORD_PTR)(pos)); pData++; } if (pList->lPageCount == pList->lPageAll) { m_wndList.InsertItem(lCount + i, _T(""), 0); i++; m_wndList.InsertItem(lCount + i, _T("合计"), 0); m_wndList.SetItemText(lCount + i, 2, _itot(m_lMsgCount, szBuf, 10)); } } if (pList->lType == 1) { CString strTemp; strTemp.Format(_T("查询结果 (%d/%d)"), pList->lPageCount, pList->lPageAll); m_S_S1.SetWindowText(strTemp); //添加到List long lCount = m_wndList.GetItemCount(); TCHAR szBuf[512] = { 0 }; for (int i = 0; i < pList->lCount; i++) { ANS_MsgListData* pNewData = new ANS_MsgListData; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); // m_wndList.SetHeadings(_T("序号,50; 企业ID,70;反骚扰级别,80,手机号码,130;短信内容,1000;")); m_wndList.InsertItem(lCount + i, _itot(lCount + i + 1, szBuf, 10), 0); _stprintf(szBuf, _T("%d"), pData->lCorpID); m_wndList.SetItemText(lCount + i, 1, szBuf); _stprintf(szBuf, _T("%4d"), pData->lCheckResend); m_wndList.SetItemText(lCount + i, 2, szBuf); m_wndList.SetItemText(lCount + i, 3, pData->szMobile); m_wndList.SetItemText(lCount + i, 4, pData->szMsg); m_wndList.SetItemData(lCount + i, (DWORD_PTR)(pos)); pData++; } } */ return true; } return false; } BOOL CK_AllQuery_Client::ProcessSocket(Socket_Head_Add* pHead, BYTE* pFrame) { CString strTemp; CString str; //查看支付记录 if (pHead->lFuncType == SMSFUNC_ALLQUERY_CLIENT_SEE) { ANS_AllQuery_Client_See * pSee = (ANS_AllQuery_Client_See*)pFrame; ANS_AllQuery_Client_Data* pData = (ANS_AllQuery_Client_Data*)(pFrame + sizeof(ANS_AllQuery_Client_See)); if (pSee->lCount >= 0) { CString strTemp; //strTemp.Format(_T("查询结果 (%d/%d)"), pSee->lPageCount, pSee->lPageAll); //m_S_S1.SetWindowText(strTemp); //添加到List long lCount = m_wndList.GetItemCount(); for (int i = 0; i < pSee->lCount; i++) { ANS_AllQuery_Client_Data* pNewData = new ANS_AllQuery_Client_Data; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); int iIndex = 1; int iIconIndex = 0; //m_wndList.SetHeadings(_T("序号,50; 企业ID,80; 平台,80;客户类型,80;保存位置,80;关联字段,80; 客户状态,80;客户经理,100;企业名称,200;关联名称,200;创建时间,200;")); strTemp.Format(_T("%d"), lCount + i+1); m_wndList.InsertItem(lCount + i, strTemp.GetBuffer(), 0); if (pData->lType == 1) //代理商 { strTemp.Format(_T("A-%d"), pData->lCorpID); } else { strTemp.Format(_T("%d"), pData->lCorpID); } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); switch (pData->lPT) { case 1: strTemp = _T("平台1"); break; case 3: strTemp = _T("平台3"); break; default: strTemp = _T("未知平台"); break; } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); switch (pData->lType) { case 0: strTemp = _T("终端客户"); break; case 1: strTemp = _T("代理商"); break; default: strTemp = _T("未知客户类型"); break; } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); switch (pData->lStatus) { case 0: strTemp = _T("正常"); break; case 1: strTemp = _T("关闭"); iIconIndex = 1; break; default: strTemp = _T("未知状态"); break; } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); switch (pData->lLocal) { case 0: strTemp = _T("在用客户"); break; case 1: strTemp = _T("已注销客户"); iIconIndex = 4; break; default: strTemp = _T("未知客户位置"); break; } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); switch (pData->lConnect) { case 0: strTemp = _T("客户名称"); break; case 1: strTemp = _T("开票名称"); break; default: strTemp = _T("未知关联"); break; } m_wndList.SetItemText(lCount + i, iIndex++, strTemp); m_wndList.SetItemText(lCount + i, iIndex++, pData->szYWYName); m_wndList.SetItemText(lCount + i, iIndex++, pData->szCorpName); m_wndList.SetItemText(lCount + i, iIndex++, pData->szConnectName); strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tRegTime.wYear, pData->tRegTime.wMonth, pData->tRegTime.wDay, pData->tRegTime.wHour, pData->tRegTime.wMinute); m_wndList.SetItemText(lCount + i, iIndex++, strTemp); m_lMsgCount += pSee->lCount; m_wndList.SetIconIndex(lCount + i, iIconIndex); m_wndList.SetItemData(lCount + i, (DWORD_PTR)(pos)); pData++; } /* if (pSee->lPageCount == pList->lPageAll) { m_wndList.InsertItem(lCount + i, _T(""), 0); i++; m_wndList.InsertItem(lCount + i, _T("合计"), 0); m_wndList.SetItemText(lCount + i, 2, _itot(m_lMsgCount, szBuf, 10)); } */ } else { MessageBox(CString(_T("查询异常:")) + CString(pSee->szErrMsg), _T("查询异常"), MB_ICONERROR); } return true; } return false; } void CK_AllQuery_Client::ShowRMenu() { #ifdef SMSMANAGER_KF if (!m_pMainFrame->GetUserPurview(PURVIEW_SP)) { return; } #else if (!m_pMainFrame->GetUserPurview(PURVIEW_CORP_SEE)) { return; } #endif CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if (lItem < 0) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); if ((LONG_PTR)pos <= 0) return; ANS_AllQuery_Client_Data* pData = m_ListData.GetNext(pos); if (!pData) return; //添加 if (lItem >= 0) { menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_ALLQUERY_CLIENT_SEE, _T(" 查 看 ")); menu.AppendMenu(MF_STRING, MENU_ALLQUERY_CLIENT_COPYID, _T(" 复制ID ")); menu.AppendMenu(MF_STRING, MENU_ALLQUERY_CLIENT_COPYNAME, _T(" 复制企业名称 ")); } else { menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_ALLQUERY_CLIENT_SEE, _T(" 查 看 ")); menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_ALLQUERY_CLIENT_COPYID, _T(" 复制ID ")); menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_ALLQUERY_CLIENT_COPYNAME, _T(" 复制企业名称 ")); } //显示菜单 POINT pt; ::GetCursorPos(&pt); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL); menu.DestroyMenu(); } long CK_AllQuery_Client::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if (pos) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CK_AllQuery_Client::On_User_See() { /* if (!m_pMainFrame->GetUserPurview(PURVIEW_LIST)) { return; } long lItem = m_wndList.GetFirstSelectedItem(); if (lItem < 0) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_MsgListData* pData = m_ListData.GetNext(pos); if (!pData) return; SMS_See sms = { 0 }; _stprintf(sms.szCorpID, _T("%d"), pData->lCorpID); if (m_lType == 1) _stprintf(sms.szStatus, _T("%d"), pData->lCheckResend); _tcscpy(sms.szRecver, pData->szMobile); _tcscpy(sms.szMsg, pData->szMsg); DLG_SmsLogSee dlg(this); dlg.SetParam(sms); dlg.DoModal(); */ } void CK_AllQuery_Client::On_User_CopyID() { long lItem = this->GetCurrentSelected(); if (lItem < 0) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); if ((LONG_PTR)pos <= 0) return; ANS_AllQuery_Client_Data* pData = m_ListData.GetNext(pos); if (pData) { HGLOBAL hglbCopy; LPTSTR lptstrCopy; if (!OpenClipboard()) return ; EmptyClipboard(); CString str; str.Format(_T("%d"),pData->lCorpID); hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (str.GetLength() + 1) * sizeof(TCHAR)); if (hglbCopy == NULL) { CloseClipboard(); return ; } lptstrCopy = (TCHAR*)GlobalLock(hglbCopy); _tcscpy(lptstrCopy, str); GlobalUnlock(hglbCopy); #ifdef _UNICODE ::SetClipboardData(CF_UNICODETEXT, hglbCopy); #else ::SetClipboardData(CF_TEXT, hglbCopy); #endif CloseClipboard(); } } void CK_AllQuery_Client::On_User_CopyName() { long lItem = this->GetCurrentSelected(); if (lItem < 0) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); if ((LONG_PTR)pos <= 0) return; ANS_AllQuery_Client_Data* pData = m_ListData.GetNext(pos); if (pData) { HGLOBAL hglbCopy; LPTSTR lptstrCopy; if (!OpenClipboard()) return; EmptyClipboard(); CString str; str=pData->szCorpName; hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (str.GetLength() + 1) * sizeof(TCHAR)); if (hglbCopy == NULL) { CloseClipboard(); return; } lptstrCopy = (TCHAR*)GlobalLock(hglbCopy); _tcscpy(lptstrCopy, str); GlobalUnlock(hglbCopy); #ifdef _UNICODE ::SetClipboardData(CF_UNICODETEXT, hglbCopy); #else ::SetClipboardData(CF_TEXT, hglbCopy); #endif CloseClipboard(); } } void CK_AllQuery_Client::Close_ListData() { //清除队列中的内容 while (!m_ListData.IsEmpty()) { ANS_AllQuery_Client_Data* pData = m_ListData.GetHead(); m_ListData.RemoveHead(); delete pData; } } BOOL CK_AllQuery_Client::OnInitDialog() { CDialogEx::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((CMainFrame *)AfxGetMainWnd()); this->GetParent()->GetParentFrame(); m_pMainFrame = (CMainFrame*)this->GetParent()->GetParentFrame(); m_pSocket = &m_pMainFrame->m_Socket; //初始化List m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP)); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP_DISABLE)); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK)); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP2)); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP3)); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,80; 企业ID,100;平台,80;客户类型,100;客户状态,100;保存位置,100;关联字段,100;客户经理,100;企业名称,350;关联名称,350;")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_L_PT.ResetContent(); int iItem = m_L_PT.AddString(_T("所有平台")); m_L_PT.SetItemData(iItem, 0); #ifdef SMSCENTER_ONE iItem = m_L_PT.AddString(_T("平台1(本平台)")); #else iItem = m_L_PT.AddString(_T("平台1")); #endif m_L_PT.SetItemData(iItem, 1); #ifdef SMSCENTER_THREE iItem = m_L_PT.AddString(_T("平台3(本平台)")); #else iItem = m_L_PT.AddString(_T("平台3")); #endif m_L_PT.SetItemData(iItem, 3); m_L_PT.SetCurSel(0); m_bInit = true; UpdateData(false); // EXCEPTION: OCX Property Pages should return FALSE return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CK_AllQuery_Client::OnOK() { // TODO: 在此添加专用代码和/或调用基类 return; CDialogEx::OnOK(); } void CK_AllQuery_Client::OnCancel() { // TODO: 在此添加专用代码和/或调用基类 return; CDialogEx::OnCancel(); } void CK_AllQuery_Client::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); if (m_bInit) { CRect rect; m_S_S1.GetWindowRect(&rect); m_wndList.MoveWindow(0, 0 + rect.Height() + 5, cx, cy - rect.Height() - 5); } } void CK_AllQuery_Client::OnClose() { Close_ListData(); CDialogEx::OnClose(); } void CK_AllQuery_Client::Close() { Close_ListData(); } void CK_AllQuery_Client::OnDblclkAllqueryClientList(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); *pResult = 0; On_User_See(); } void CK_AllQuery_Client::OnRdblclkAllqueryClientList(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: 在此添加控件通知处理程序代码 *pResult = 0; } void CK_AllQuery_Client::OnBnClickedAllqueryClientQuery() { #ifdef SMSMANAGER_KF if (!m_pMainFrame->GetUserPurview(PURVIEW_SP)) { return; } #else if (!m_pMainFrame->GetUserPurview(PURVIEW_CORP_SEE)) { return; } #endif UpdateData(true); Close_ListData(); m_wndList.DeleteAllItems(); REQ_AllQuery_Client_See* pSee = new REQ_AllQuery_Client_See; memset(pSee, 0, sizeof(REQ_AllQuery_Client_See)); if (m_strKey.GetLength() < 2) { MessageBox(_T("输入的关键字过短,查询结果不精确,请重新输入!"), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_ALLQUERY_CLIENT_KEY)->SetFocus(); return; } _tcscpy(pSee->szKey, m_strKey); pSee->iPT = m_L_PT.GetItemData(m_L_PT.GetCurSel()); m_pMainFrame->SendFrame(SMSFUNC_ALLQUERY_CLIENT_SEE, (BYTE*)pSee, sizeof(REQ_AllQuery_Client_See)); return; } void CK_AllQuery_Client::OnRclickAllqueryClientList(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: 在此添加控件通知处理程序代码 *pResult = 0; ShowRMenu(); }