675 lines
19 KiB
C++
675 lines
19 KiB
C++
|
// FSmsQueryLog.cpp : implementation file
|
|||
|
//
|
|||
|
|
|||
|
#include "stdafx.h"
|
|||
|
#include "corpsms.h"
|
|||
|
#include "FSmsQueryLog.h"
|
|||
|
|
|||
|
#ifdef _DEBUG
|
|||
|
#define new DEBUG_NEW
|
|||
|
#undef THIS_FILE
|
|||
|
static char THIS_FILE[] = __FILE__;
|
|||
|
#endif
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
// CFSmsQueryLog dialog
|
|||
|
|
|||
|
#include "MainFrm.h"
|
|||
|
#include "ProcessSocket.h"
|
|||
|
#include "FSmsLog.h"
|
|||
|
#include "DLG_SmsQueryLog_See.h"
|
|||
|
#include "DLG_SmsQueryLog_Export.h"
|
|||
|
|
|||
|
CFSmsQueryLog::CFSmsQueryLog(CWnd* pParent /*=NULL*/)
|
|||
|
: CDialog(CFSmsQueryLog::IDD, pParent)
|
|||
|
{
|
|||
|
//{{AFX_DATA_INIT(CFSmsQueryLog)
|
|||
|
// NOTE: the ClassWizard will add member initialization here
|
|||
|
//}}AFX_DATA_INIT
|
|||
|
|
|||
|
m_bInit = false;
|
|||
|
m_bRefresh = false;
|
|||
|
|
|||
|
m_bShowToday = true;
|
|||
|
m_lRefreshStatusIndex = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void CFSmsQueryLog::DoDataExchange(CDataExchange* pDX)
|
|||
|
{
|
|||
|
CDialog::DoDataExchange(pDX);
|
|||
|
//{{AFX_DATA_MAP(CFSmsQueryLog)
|
|||
|
DDX_Control(pDX, IDC_SMSQUERYLOG_LIST, m_wndList);
|
|||
|
//}}AFX_DATA_MAP
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
BEGIN_MESSAGE_MAP(CFSmsQueryLog, CDialog)
|
|||
|
//{{AFX_MSG_MAP(CFSmsQueryLog)
|
|||
|
ON_WM_SIZE()
|
|||
|
ON_NOTIFY(LVN_KEYDOWN, IDC_SMSQUERYLOG_LIST, OnKeydownSmsquerylogList)
|
|||
|
ON_NOTIFY(NM_RCLICK, IDC_SMSQUERYLOG_LIST, OnRclickSmsquerylogList)
|
|||
|
ON_NOTIFY(NM_DBLCLK, IDC_SMSQUERYLOG_LIST, OnDblclkSmsquerylogList)
|
|||
|
//}}AFX_MSG_MAP
|
|||
|
ON_COMMAND( MENU_QUERYLOG_SEE , On_User_See )
|
|||
|
ON_COMMAND( MENU_QUERYLOG_SEND , On_User_Send )
|
|||
|
ON_COMMAND( MENU_QUERYLOG_DEL , On_User_Del )
|
|||
|
ON_COMMAND( MENU_QUERYLOG_EXPORT , On_User_Export )
|
|||
|
ON_COMMAND( MENU_QUERYLOG_REFRESH , On_User_Refresh )
|
|||
|
ON_COMMAND( MENU_QUERYLOG_REFSTATUS , On_User_RefStatus )
|
|||
|
END_MESSAGE_MAP()
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
// CFSmsQueryLog message handlers
|
|||
|
|
|||
|
BOOL CFSmsQueryLog::OnInitDialog()
|
|||
|
{
|
|||
|
CDialog::OnInitDialog();
|
|||
|
|
|||
|
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
|
|||
|
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
|
|||
|
this->GetParent()->GetParentFrame();
|
|||
|
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
|
|||
|
m_pSocket = &m_pMainFrame->m_Socket;
|
|||
|
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
|||
|
m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
|||
|
|
|||
|
//<2F><>ʼ<EFBFBD><CABC>List
|
|||
|
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
|
|||
|
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) );
|
|||
|
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSYF) );
|
|||
|
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
|
|||
|
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSSB) );
|
|||
|
m_wndList.SubClassWindow2();
|
|||
|
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><>ѯ<EFBFBD><D1AF>,150;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,120; <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>,280;״̬,80;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130;"));
|
|||
|
m_wndList.SetGridLines(true);
|
|||
|
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
|
|||
|
//m_wndList.SetBkColor( RGB(237,191,175) );
|
|||
|
//m_wndList.SetTextBkColor( RGB(237,191,175) );
|
|||
|
|
|||
|
m_bInit = true;
|
|||
|
|
|||
|
return TRUE; // return TRUE unless you set the focus to a control
|
|||
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::OnSize(UINT nType, int cx, int cy)
|
|||
|
{
|
|||
|
CDialog::OnSize(nType, cx, cy);
|
|||
|
|
|||
|
if ( m_bInit )
|
|||
|
{
|
|||
|
m_wndList.MoveWindow( 0 , 0 , cx,cy);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::SetToday(BOOL bToday)
|
|||
|
{
|
|||
|
if ( m_bShowToday != bToday )
|
|||
|
{
|
|||
|
m_bShowToday = bToday;
|
|||
|
m_bRefresh = false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::ShowRMenu()
|
|||
|
{
|
|||
|
CMenu menu;
|
|||
|
menu.CreatePopupMenu();
|
|||
|
BOOL bLock = false;
|
|||
|
long lItem = this->GetCurrentSelected();
|
|||
|
|
|||
|
|
|||
|
if ( lItem >= 0 )
|
|||
|
{
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_SEE , _T(" <20><> <20><> ") );
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_SEND, _T(" <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> ") );
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_DEL , _T(" ɾ <20><> ") );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEE , _T(" <20><> <20><> ") );
|
|||
|
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEND, _T(" <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> ") );
|
|||
|
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_DEL, _T(" ɾ <20><> ") );
|
|||
|
}
|
|||
|
menu.AppendMenu(MF_SEPARATOR );
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_EXPORT, _T(" <20><> <20><> ") );
|
|||
|
menu.AppendMenu(MF_SEPARATOR );
|
|||
|
//ˢ<><CBA2>
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFRESH, _T(" ˢ <20><> ") );
|
|||
|
//ˢ<><CBA2>
|
|||
|
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFSTATUS, _T(" ˢ<><CBA2>״̬ ") );
|
|||
|
|
|||
|
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
|
|||
|
POINT pt ;
|
|||
|
::GetCursorPos( &pt );
|
|||
|
//this->ClientToScreen( &pt);
|
|||
|
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
|
|||
|
menu.DestroyMenu();
|
|||
|
}
|
|||
|
|
|||
|
BOOL CFSmsQueryLog::ProcessSocket(Socket_Head *pHead)
|
|||
|
{
|
|||
|
//<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pHead->lFuncType == SMSFUNC_QUERYLOG_SEE)
|
|||
|
{
|
|||
|
ANS_QueryLog_See * pRecv = (ANS_QueryLog_See *)pHead->pFrame;
|
|||
|
ANS_QueryLog_Data * pData = (ANS_QueryLog_Data *)(pHead->pFrame+sizeof(ANS_QueryLog_See));
|
|||
|
m_wndList.ShowWindow( SW_HIDE ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
|
|||
|
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>
|
|||
|
for ( int i = 0;i<pRecv->lCount;i++)
|
|||
|
{
|
|||
|
ANS_QueryLog_Data sms={0};
|
|||
|
sms = *pData;
|
|||
|
RecvNewQueryLog(sms);
|
|||
|
pData++; //<2F><>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB>
|
|||
|
}
|
|||
|
m_wndList.ShowWindow( SW_SHOW ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (pHead->lFuncType == SMSFUNC_SENDSTATUS)
|
|||
|
{
|
|||
|
ANS_SendStatus * pStatus = (ANS_SendStatus *)pHead->pFrame;
|
|||
|
ANS_SendStatus_Data * pData = (ANS_SendStatus_Data *)(pHead->pFrame+sizeof(ANS_SendStatus));
|
|||
|
for ( int i = 0;i<pStatus->lCount;i++)
|
|||
|
{
|
|||
|
if ( pData->lStatus != -1 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ-1,֤<><D6A4>״̬û<CCAC>䣬<EFBFBD><E4A3AC><EFBFBD>Բ<EFBFBD><D4B2>ظ<EFBFBD><D8B8><EFBFBD>
|
|||
|
{
|
|||
|
COleDateTime tSend(pData->tSendTime );
|
|||
|
COleDateTime tRecv(pData->tRecvTime );
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
TCHAR szBuf[32];
|
|||
|
TCHAR szSelect[128]={0};
|
|||
|
_stprintf( szSelect , _T("select * from QueryLog where SendID=%d") , pData->lSendID );
|
|||
|
if ( m_AdoRS.Open(szSelect) && m_AdoRS.GetRecordCount() )
|
|||
|
{
|
|||
|
m_AdoRS.MoveFirst();
|
|||
|
m_AdoRS.PutCollect( _T("Status") , pData->lStatus );
|
|||
|
//m_AdoRS.PutCollect( _T("SendTime") , tSend );
|
|||
|
//m_AdoRS.PutCollect( _T("RecvTime") , tRecv );
|
|||
|
m_AdoRS.Update();
|
|||
|
m_AdoRS.Close();
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
long lSendID = m_wndList.GetItemData(pData->lItemID);
|
|||
|
if ( lSendID == pData->lSendID ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
#ifdef STATUS_ENABLE_RECV
|
|||
|
long lIcon = CFSmsLog::GetStatusText( pData->lStatus , szBuf );
|
|||
|
#else
|
|||
|
long lIcon = CFSmsLog::GetStatusText2(pData->lStatus , szBuf);
|
|||
|
#endif
|
|||
|
m_wndList.SetItemText(pData->lItemID,4,szBuf);
|
|||
|
m_wndList.SetIconIndex( pData->lItemID , lIcon );
|
|||
|
}
|
|||
|
}
|
|||
|
pData ++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
}
|
|||
|
RefreshStatus( false ); //<2F><>ѯ<EFBFBD><D1AF>1000<30><30><EFBFBD><EFBFBD>״̬
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
long CFSmsQueryLog::GetCurrentSelected()
|
|||
|
{
|
|||
|
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
|||
|
if ( pos )
|
|||
|
{
|
|||
|
return m_wndList.GetNextSelectedItem(pos);
|
|||
|
}
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
BOOL CFSmsQueryLog::RefreshInfo()
|
|||
|
{
|
|||
|
BOOL bQuery = m_pMainFrame->m_Setup.bSDK & SDK_AUTOQUERY ? true:false;
|
|||
|
if ( bQuery ) //<2F><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
m_wndList.ShowWindow( SW_HIDE ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
|
|||
|
|
|||
|
m_bRefresh = true;
|
|||
|
m_wndList.DeleteAllItems();
|
|||
|
TCHAR szSelect[128]={0};
|
|||
|
if ( m_bShowToday )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SYSTEMTIME t;::GetLocalTime(&t);
|
|||
|
if ( m_pMainFrame->m_Setup.bSQLUse )
|
|||
|
_stprintf( szSelect , _T("select * from QueryLog where SendTime>='%04d%02d%02d' order by SendTime"),t.wYear,t.wMonth,t.wDay ); //<2F><>ѯ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
else
|
|||
|
_stprintf( szSelect , _T("select * from QueryLog where SendTime>=#%04d-%02d-%02d# order by SendTime"),t.wYear,t.wMonth,t.wDay ); //<2F><>ѯ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_stprintf( szSelect , _T("select * from QueryLog order by SendTime") ); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD>ռ<EFBFBD>¼
|
|||
|
}
|
|||
|
//_stprintf( szSelect , _T("select * from smsRecv") ); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD>ռ<EFBFBD>¼
|
|||
|
BOOL b = m_AdoRS.Open( szSelect );
|
|||
|
long lCount = m_AdoRS.GetRecordCount();
|
|||
|
if ( b && lCount )
|
|||
|
{
|
|||
|
m_AdoRS.MoveFirst();
|
|||
|
long iItem = 0;
|
|||
|
while( !m_AdoRS.IsEOF() )
|
|||
|
{
|
|||
|
long lSendID;
|
|||
|
long lStatus;
|
|||
|
BOOL bRead;
|
|||
|
TCHAR szSendNum[128]={0};
|
|||
|
TCHAR szSender[32]={0};
|
|||
|
TCHAR szRecvMsg[180]={0};
|
|||
|
TCHAR szRetMsg[256]={0};
|
|||
|
TCHAR szStatus[24]={0};
|
|||
|
COleDateTime tSend;
|
|||
|
|
|||
|
m_AdoRS.GetCollect( _T("SendID") , lSendID );
|
|||
|
m_AdoRS.GetCollect( _T("Status") , lStatus );
|
|||
|
m_AdoRS.GetCollect( _T("Reader") , bRead );
|
|||
|
m_AdoRS.GetCollect( _T("SendNum") , szSendNum );
|
|||
|
m_AdoRS.GetCollect( _T("Sender") , szSender );
|
|||
|
m_AdoRS.GetCollect( _T("RecvMsg") , szRecvMsg );
|
|||
|
m_AdoRS.GetCollect( _T("RetMsg") , szRetMsg );
|
|||
|
|
|||
|
#ifdef STATUS_ENABLE_RECV
|
|||
|
long lIcon = CFSmsLog::GetStatusText( lStatus , szStatus );
|
|||
|
#else
|
|||
|
long lIcon = CFSmsLog::GetStatusText2( lStatus , szStatus );
|
|||
|
#endif
|
|||
|
//m_wndList.SetIconIndex( iItem , lIcon );
|
|||
|
m_AdoRS.GetCollect( _T("SendTime"), tSend );
|
|||
|
if ( _tcslen(szSender)>0 )
|
|||
|
{
|
|||
|
_tcscat( szSendNum , _T("-") );
|
|||
|
_tcscat( szSendNum , szSender );
|
|||
|
}
|
|||
|
//_T("<22><><EFBFBD><EFBFBD>,50; <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,150;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,120; <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>,280;״̬,60;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130;"));
|
|||
|
//m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , bRead ); //<2F>Ѷ<EFBFBD><D1B6><EFBFBD>δ<EFBFBD><CEB4>ͼ<EFBFBD>겻һ<EAB2BB><D2BB>
|
|||
|
m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , lIcon );
|
|||
|
m_wndList.SetItemData( 0,lSendID );
|
|||
|
m_wndList.SetItemText(0,1,szSendNum);
|
|||
|
m_wndList.SetItemText(0,2,szRecvMsg);
|
|||
|
m_wndList.SetItemText(0,3,szRetMsg);
|
|||
|
m_wndList.SetItemText(0,4,szStatus);
|
|||
|
|
|||
|
if ( tSend.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
_stprintf( szRetMsg , _T("%04d.%02d.%02d %02d:%02d") , tSend.GetYear(),tSend.GetMonth(),tSend.GetDay(),tSend.GetHour(),tSend.GetMinute() );
|
|||
|
m_wndList.SetItemText(0,5,szRetMsg);
|
|||
|
}
|
|||
|
|
|||
|
iItem++;
|
|||
|
m_AdoRS.MoveNext();
|
|||
|
}
|
|||
|
}
|
|||
|
m_wndList.ShowWindow( SW_SHOW ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
|
|||
|
RecvQueryLog(); //ȡ<>µIJ<C2B5>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|||
|
RefreshStatus();
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
BOOL CFSmsQueryLog::ReShow(BOOL bRefresh)
|
|||
|
{
|
|||
|
ShowWindow( SW_SHOW );
|
|||
|
if ( bRefresh || !m_bRefresh )
|
|||
|
{
|
|||
|
RefreshInfo();
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
BOOL CFSmsQueryLog::ReHide()
|
|||
|
{
|
|||
|
ShowWindow( SW_HIDE );
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::RecvQueryLog()
|
|||
|
{
|
|||
|
BOOL bQuery = m_pMainFrame->m_Setup.bSDK & SDK_AUTOQUERY ? true:false;
|
|||
|
if ( bQuery ) //<2F><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
REQ_QueryLog_See * pRecv = new REQ_QueryLog_See;
|
|||
|
pRecv->lCorpID = m_pMainFrame->m_lCorpID;
|
|||
|
pRecv->lUserID = m_pMainFrame->m_lUserID;
|
|||
|
m_pMainFrame->SendFrame( SMSFUNC_QUERYLOG_SEE , (BYTE*)pRecv , sizeof(REQ_QueryLog_See));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::RecvNewQueryLog(ANS_QueryLog_Data sms)
|
|||
|
{
|
|||
|
TCHAR szName[64]={0};
|
|||
|
TCHAR szName2[64]={0};
|
|||
|
CString strSelect;
|
|||
|
BOOL bGetAddress=false;
|
|||
|
//<2F><><EFBFBD>յ<EFBFBD><D5B5>µĶ<C2B5><C4B6>ţ<EFBFBD><C5A3>Ȳ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>ڵ绰<DAB5><E7BBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_PADDRESS,false ) ) //<2F><>˽<EFBFBD>˵绰<CBB5><E7BBB0><EFBFBD>鿴Ȩ<E9BFB4><C8A8>
|
|||
|
{
|
|||
|
strSelect.Format( _T("select * from paddress where Mobile like '%%%s'") , sms.szMobile );
|
|||
|
if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() )
|
|||
|
{
|
|||
|
m_AdoRS2.GetCollect( _T("Name") , szName );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_USER_MANAGER,false ) ) //<2F>й<EFBFBD><D0B9>õ绰<C3B5><E7BBB0><EFBFBD>鿴Ȩ<E9BFB4><C8A8>
|
|||
|
{
|
|||
|
strSelect.Format( _T("select * from gaddress where Mobile like '%%%s'") , sms.szMobile );
|
|||
|
if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() )
|
|||
|
{
|
|||
|
m_AdoRS2.GetCollect( _T("Name") , szName );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
long lSendID=sms.lSendID;
|
|||
|
BOOL b = m_AdoRS.Open( _T("QueryLog") , adCmdTable ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<E2A3AC><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( b )
|
|||
|
{
|
|||
|
m_AdoRS.AddNew();
|
|||
|
|
|||
|
m_AdoRS.PutCollect(_T("QueryLogID") ,sms.lQueryLogID);
|
|||
|
m_AdoRS.PutCollect(_T("QueryID") ,sms.lQueryID);
|
|||
|
m_AdoRS.PutCollect(_T("CorpID") ,sms.lCorpID);
|
|||
|
m_AdoRS.PutCollect(_T("UserID") ,sms.lUserID);
|
|||
|
m_AdoRS.PutCollect(_T("SendID") ,sms.lSendID);
|
|||
|
m_AdoRS.PutCollect(_T("Status") ,0);
|
|||
|
m_AdoRS.PutCollect(_T("SendNum") ,sms.szMobile);
|
|||
|
m_AdoRS.PutCollect(_T("Sender") ,szName);
|
|||
|
|
|||
|
m_AdoRS.PutCollect(_T("RecvMsg") ,sms.szRecvMsg);
|
|||
|
m_AdoRS.PutCollect(_T("RetMsg") ,sms.szRetMsg);
|
|||
|
m_AdoRS.PutCollect(_T("SendTime") ,sms.tSendTime );
|
|||
|
m_AdoRS.Update();
|
|||
|
m_AdoRS.Close();
|
|||
|
}
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>յ<EFBFBD><D5B5>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
//_T("<22><><EFBFBD><EFBFBD>,50; <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,150;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,120; <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>,280;״̬,60;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130;"));
|
|||
|
long lCount = m_wndList.GetItemCount();
|
|||
|
TCHAR szBuf[32]={0};
|
|||
|
TCHAR szStatus[32]={0};
|
|||
|
m_wndList.InsertItem( 0, _itot( lCount+1,szBuf,10) , 0 );
|
|||
|
m_wndList.SetItemData(0,lSendID );
|
|||
|
if ( _tcslen(szName)>0 )
|
|||
|
{
|
|||
|
_stprintf( szBuf , _T("%s-%s") , sms.szMobile , szName );
|
|||
|
m_wndList.SetItemText(0,1,szBuf);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_wndList.SetItemText(0,1,sms.szMobile);
|
|||
|
}
|
|||
|
m_wndList.SetItemText(0,2,sms.szRecvMsg);
|
|||
|
m_wndList.SetItemText(0,3,sms.szRetMsg);
|
|||
|
|
|||
|
#ifdef STATUS_ENABLE_RECV
|
|||
|
long lIcon = CFSmsLog::GetStatusText( 0 , szStatus );
|
|||
|
#else
|
|||
|
long lIcon = CFSmsLog::GetStatusText2( 0 , szStatus );
|
|||
|
#endif
|
|||
|
|
|||
|
m_wndList.SetItemText(0,4,szStatus);
|
|||
|
COleDateTime tSend(sms.tSendTime);
|
|||
|
if ( tSend.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
_stprintf( szStatus , _T("%04d.%02d.%02d %02d:%02d") , tSend.GetYear(),tSend.GetMonth(),tSend.GetDay(),tSend.GetHour(),tSend.GetMinute() );
|
|||
|
m_wndList.SetItemText(0,5,szStatus);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::OnKeydownSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult)
|
|||
|
{
|
|||
|
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
|
|||
|
*pResult = 0;
|
|||
|
|
|||
|
|
|||
|
if ( pLVKeyDow->wVKey == VK_DELETE )
|
|||
|
{
|
|||
|
On_User_Del();
|
|||
|
}
|
|||
|
if ( pLVKeyDow->wVKey == VK_SPACE)
|
|||
|
{
|
|||
|
On_User_See();
|
|||
|
}
|
|||
|
if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's')
|
|||
|
{
|
|||
|
On_User_Send();
|
|||
|
}
|
|||
|
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
|
|||
|
{
|
|||
|
On_User_Refresh();
|
|||
|
}
|
|||
|
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
|
|||
|
{
|
|||
|
m_wndList.SelectAllItems();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::OnRclickSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult)
|
|||
|
{
|
|||
|
*pResult = 0;
|
|||
|
|
|||
|
ShowRMenu();
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::OnDblclkSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult)
|
|||
|
{
|
|||
|
*pResult = 0;
|
|||
|
|
|||
|
On_User_See();
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::On_User_See()
|
|||
|
{
|
|||
|
long lItem = GetCurrentSelected();
|
|||
|
if ( lItem< 0 )
|
|||
|
return ;
|
|||
|
CString strStatus;
|
|||
|
CString strSender;
|
|||
|
CString strSendTime;
|
|||
|
CString strRecvMsg;
|
|||
|
CString strRetMsg;
|
|||
|
|
|||
|
strStatus = m_wndList.GetItemText(lItem,4);
|
|||
|
strSender = m_wndList.GetItemText(lItem,1);
|
|||
|
strSendTime = m_wndList.GetItemText(lItem,5);
|
|||
|
strRecvMsg = m_wndList.GetItemText(lItem,2);
|
|||
|
strRetMsg = m_wndList.GetItemText(lItem,3);
|
|||
|
|
|||
|
DLG_SmsQueryLog_See dlg( this );
|
|||
|
dlg.m_strStatus = strStatus;
|
|||
|
dlg.m_strSender = strSender;
|
|||
|
dlg.m_strSendTime= strSendTime;
|
|||
|
dlg.m_strRecvMsg = strRecvMsg;
|
|||
|
dlg.m_strRetMsg = strRetMsg;
|
|||
|
dlg.DoModal();
|
|||
|
}
|
|||
|
void CFSmsQueryLog::On_User_Send()
|
|||
|
{
|
|||
|
long lItem = GetCurrentSelected();
|
|||
|
if ( lItem <0 )
|
|||
|
return ;
|
|||
|
|
|||
|
//ReadSms(lItem); //״̬<D7B4><CCAC>Ϊ<EFBFBD>Ѷ<EFBFBD>
|
|||
|
|
|||
|
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //<2F>½<EFBFBD><C2BD>б<EFBFBD>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") ); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
|
|||
|
long lCount = m_wndList.GetSelectedCount();
|
|||
|
if ( lCount <= 0 )
|
|||
|
return ;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
long lSize = sizeof(Send_User)*lCount;
|
|||
|
BYTE *pS = new BYTE[lSize];
|
|||
|
memset( pS , 0 , lSize );
|
|||
|
Send_User * pUser = (Send_User * )pS;
|
|||
|
|
|||
|
TCHAR szSelect[128]={0};
|
|||
|
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
|||
|
while ( pos )
|
|||
|
{
|
|||
|
long lItem = m_wndList.GetNextSelectedItem( pos );
|
|||
|
long lSendID = m_wndList.GetItemData( lItem );
|
|||
|
if ( lSendID > 0 )
|
|||
|
{
|
|||
|
_stprintf( szSelect , _T("select * from QueryLog where SendID=%d"), lSendID );
|
|||
|
BOOL b = m_AdoRS.Open( szSelect );
|
|||
|
if ( b && m_AdoRS.GetRecordCount() )
|
|||
|
{
|
|||
|
m_AdoRS.MoveFirst();
|
|||
|
m_AdoRS.GetCollect( _T("Sender") , pUser->szName);
|
|||
|
m_AdoRS.GetCollect( _T("SendNum") , pUser->szMobile);
|
|||
|
}
|
|||
|
}
|
|||
|
pUser ++;
|
|||
|
}
|
|||
|
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
|
|||
|
delete pS;
|
|||
|
}
|
|||
|
}
|
|||
|
void CFSmsQueryLog::On_User_Del()
|
|||
|
{
|
|||
|
long lCount = m_wndList.GetSelectedCount();
|
|||
|
long *lDel = new long[lCount+2];
|
|||
|
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
|||
|
long i = 0;
|
|||
|
while(pos)
|
|||
|
{
|
|||
|
lDel[i]= m_wndList.GetNextSelectedItem(pos);
|
|||
|
i ++;
|
|||
|
}
|
|||
|
long lSendID = 0;
|
|||
|
TCHAR szSelect[128];
|
|||
|
//<2F><>תɾ<D7AA><C9BE>
|
|||
|
m_wndList.ShowWindow( SW_HIDE ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
|
|||
|
for ( i = lCount ; i>0 ; i-- )
|
|||
|
{
|
|||
|
lSendID = m_wndList.GetItemData( lDel[i-1] );
|
|||
|
_stprintf( szSelect , _T("delete from QueryLog where SendID=%d ") , lSendID );
|
|||
|
BOOL b = m_AdoRS.Open( szSelect );
|
|||
|
if ( b && m_AdoRS.GetRecordCount() )
|
|||
|
{
|
|||
|
m_wndList.DeleteItem(lDel[i-1]); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
}
|
|||
|
}
|
|||
|
m_wndList.ShowWindow( SW_SHOW ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
|
|||
|
delete lDel;
|
|||
|
}
|
|||
|
void CFSmsQueryLog::On_User_Export()
|
|||
|
{
|
|||
|
DLG_SmsQueryLog_Export dlg(this);
|
|||
|
dlg.SetParam(&m_AdoRS2,&m_wndList);
|
|||
|
dlg.DoModal();
|
|||
|
}
|
|||
|
void CFSmsQueryLog::On_User_Refresh()
|
|||
|
{
|
|||
|
RefreshInfo();
|
|||
|
}
|
|||
|
void CFSmsQueryLog::On_User_RefStatus()
|
|||
|
{
|
|||
|
RefreshStatus();
|
|||
|
}
|
|||
|
|
|||
|
void CFSmsQueryLog::RefreshStatus(BOOL bBegin)
|
|||
|
{
|
|||
|
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊδ<CEAA>̶<EFBFBD><CCB6>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
long lCount = m_wndList.GetItemCount();
|
|||
|
long * pSendID= new long[STATUS_MAX_QUERY*3+100];
|
|||
|
long lCount2=0;
|
|||
|
if ( bBegin )
|
|||
|
m_lRefreshStatusIndex = 0;
|
|||
|
else
|
|||
|
m_lRefreshStatusIndex ++;
|
|||
|
for ( int i=m_lRefreshStatusIndex*STATUS_MAX_QUERY;i<lCount;i++ ) //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ1000<30><30><EFBFBD><EFBFBD>¼
|
|||
|
{
|
|||
|
long lStatus = GetItemStatus(i);
|
|||
|
#ifdef STATUS_ENABLE_RECV
|
|||
|
if ( lStatus == SEND_STATUS_SUB_OK || //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ȡ״̬
|
|||
|
lStatus == SEND_STATUS_SUB_FILT ||
|
|||
|
lStatus == SEND_STATUS_SEND_OK ||
|
|||
|
lStatus == SEND_STATUS_SEND_ERROR)
|
|||
|
#else
|
|||
|
if ( lStatus == SEND_STATUS_SUB_OK || //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ȡ״̬
|
|||
|
lStatus == SEND_STATUS_SUB_FILT ||
|
|||
|
lStatus == SEND_STATUS_SEND_OK ||
|
|||
|
lStatus == SEND_STATUS_SEND_ERROR )
|
|||
|
#endif
|
|||
|
{
|
|||
|
pSendID[lCount2] = i;
|
|||
|
lCount2 ++;
|
|||
|
pSendID[lCount2] = m_wndList.GetItemData( i ); //ȡ<><C8A1>SendID
|
|||
|
lCount2 ++;
|
|||
|
pSendID[lCount2] =lStatus;
|
|||
|
lCount2 ++;
|
|||
|
}
|
|||
|
if ( lCount2 >= STATUS_MAX_QUERY*3 ) //<2F><><EFBFBD><EFBFBD>1000<30><30><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
lCount = lCount2/3; //ȡ<><C8A1><EFBFBD><EFBFBD>Ҫȡ״̬<D7B4>ĸ<EFBFBD><C4B8><EFBFBD>
|
|||
|
if ( lCount > 0 )
|
|||
|
{
|
|||
|
long lSize = sizeof(REQ_SendStatus)+sizeof(ANS_SendStatus_Data)*lCount;
|
|||
|
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
|
|||
|
REQ_SendStatus * pStatus = (REQ_SendStatus *)pData;
|
|||
|
ANS_SendStatus_Data * pStatusData = (ANS_SendStatus_Data *)(pData+sizeof(REQ_SendStatus));
|
|||
|
pStatus->lCorpID = m_pMainFrame->m_lCorpID;
|
|||
|
pStatus->lCount = lCount;
|
|||
|
for ( i=0;i<lCount;i++)
|
|||
|
{
|
|||
|
pStatusData->lItemID = pSendID[i*3];
|
|||
|
pStatusData->lSendID = pSendID[i*3+1];
|
|||
|
pStatusData->lStatus = pSendID[i*3+2];
|
|||
|
pStatusData++;
|
|||
|
}
|
|||
|
m_pMainFrame->SendFrame( SMSFUNC_SENDSTATUS , pData , lSize );
|
|||
|
}
|
|||
|
delete pSendID;
|
|||
|
}
|
|||
|
|
|||
|
long CFSmsQueryLog::GetItemStatus(long iItem)
|
|||
|
{
|
|||
|
TCHAR szStatus[16]={0};
|
|||
|
TCHAR szTime[32]={0};
|
|||
|
m_wndList.GetItemText( iItem , 4 , szStatus , sizeof(szStatus) );
|
|||
|
m_wndList.GetItemText( iItem , 5 , szTime ,sizeof(szTime));
|
|||
|
szTime[4]=0;
|
|||
|
szTime[7]=0;
|
|||
|
szTime[10]=0;
|
|||
|
long lYear=_ttol(szTime);
|
|||
|
long lMon =_ttol(szTime+5);
|
|||
|
long lDay =_ttol(szTime+8);
|
|||
|
|
|||
|
CTime t1(lYear,lMon,lDay,0,0,0);
|
|||
|
CTime t2 = CTime::GetCurrentTime();
|
|||
|
CTime t3 = t1 + CTimeSpan( 10, 0, 0, 0 );
|
|||
|
if ( t3 < t2 ) //2<><32>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
return SEND_STATUS_UNKNOW;
|
|||
|
}
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD>ύ<EFBFBD>ɹ<EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SUB_OK;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SUB_FILT;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD>ύʧ<EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SUB_ERROR;
|
|||
|
if ( !_tcscmp( szStatus , _T("Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SUB_NUMNOSUP;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_FILT_ERROR;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SEND_OK;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_SEND_ERROR;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ճɹ<EFBFBD>") ) )
|
|||
|
return SEND_STATUS_RECV_OK;
|
|||
|
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
|
|||
|
return SEND_STATUS_RECV_ERROR;
|
|||
|
// if ( !_tcscmp( szStatus , _T("δ֪״̬") ) )
|
|||
|
return SEND_STATUS_UNKNOW;
|
|||
|
}
|