SmsManager/CK_AllQuery_Client.cpp

665 lines
16 KiB
C++
Raw Normal View History

2025-01-14 10:46:18 +08:00
// 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();
}