SmsManager/CK_AllQuery_Client.cpp
2025-01-14 10:46:18 +08:00

665 lines
16 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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)(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)(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)(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)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)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)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 *>((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<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
On_User_See();
}
void CK_AllQuery_Client::OnRdblclkAllqueryClientList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(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<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
ShowRMenu();
}