CorpSms/FSmsQueryLog.cpp
2025-02-27 16:58:16 +08:00

675 lines
19 KiB
C++
Raw Permalink 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.

// 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();
//È¡µÃ¹²ÓòÎÊý
//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 );
//³õʼ»¯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("ÐòºÅ,50; ²éѯÕß,150;·¢ËÍÄÚÈÝ,120; »Ø¸´ÄÚÈÝ,280;״̬,80;·¢ËÍʱ¼ä,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(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_SEND, _T(" ·¢ËͶÌÐÅ ") );
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEND, _T(" ·¢ËͶÌÐÅ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_DEL, _T(" ɾ ³ý ") );
}
menu.AppendMenu(MF_SEPARATOR );
//µ¼³ö
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_EXPORT, _T(" µ¼ ³ö ") );
menu.AppendMenu(MF_SEPARATOR );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFRESH, _T(" ˢ Р") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFSTATUS, _T(" Ë¢ÐÂ״̬ ") );
//ÏÔʾ²Ëµ¥
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)
{
//ÊÕµ½¶ÌÐÅ
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 ); //ΪÁ˼ӿìÏÔʾËÙ¶È
//Ìí¼Óµ½Êý¾Ý¿âÀï
for ( int i = 0;i<pRecv->lCount;i++)
{
ANS_QueryLog_Data sms={0};
sms = *pData;
RecvNewQueryLog(sms);
pData++; //ÏÔʾÏÂÒ»Ìõ
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
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 ) //Èç¹ûÆäֵΪ-1,Ö¤Ã÷״̬û±ä£¬ËùÒÔ²»±Ø¸ü¸Ä
{
COleDateTime tSend(pData->tSendTime );
COleDateTime tRecv(pData->tRecvTime );
//½«½á¹ûÏÈÈëÊý¾Ý¿â
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();
}
//¸üÐÂÏÔʾ
long lSendID = m_wndList.GetItemData(pData->lItemID);
if ( lSendID == pData->lSendID ) //¸üÐÂÏÔʾÄÚÈÝ
{
#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 ++; //¼ÌÐø´¦ÀíÏÂÒ»Ìõ
}
RefreshStatus( false ); //²éѯÏÂ1000ÌõµÄ״̬
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 ) //ÓÐ×Ô¶¯²éѯ·þÎñ
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_bRefresh = true;
m_wndList.DeleteAllItems();
TCHAR szSelect[128]={0};
if ( m_bShowToday )
{
//½ö²éѯµ±ÌìµÄ
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 ); //²éѯÒÑ·¢¶ÌÐÅ
else
_stprintf( szSelect , _T("select * from QueryLog where SendTime>=#%04d-%02d-%02d# order by SendTime"),t.wYear,t.wMonth,t.wDay ); //²éѯÒÑ·¢¶ÌÐÅ
}
else
{
_stprintf( szSelect , _T("select * from QueryLog order by SendTime") ); //²éѯ½ÓÊռǼ
}
//_stprintf( szSelect , _T("select * from smsRecv") ); //²éѯ½ÓÊռǼ
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("ÐòºÅ,50; ÊÖ»úºÅÂë,150;·¢ËÍÄÚÈÝ,120; »Ø¸´ÄÚÈÝ,280;״̬,60;·¢ËÍʱ¼ä,130;"));
//m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , bRead ); //ÒѶÁÓëδ¶Áͼ±ê²»Ò»Ñù
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 ); //ΪÁ˼ӿìÏÔʾËÙ¶È
RecvQueryLog(); //ȡеIJéѯÄÚÈÝ
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 ) //ÓÐ×Ô¶¯²éѯ·þÎñ
{
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;
//½ÓÊÕµ½ÐµĶÌÐÅ£¬ÏȲéѯÆäÔڵ绰±¾ÀïµÄÐÕÃû
if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_PADDRESS,false ) ) //ÓÐ˽È˵绰±¾²é¿´È¨ÏÞ
{
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 ) ) //Óй«Óõ绰±¾²é¿´È¨ÏÞ
{
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 ); //´ò¿ªÊý¾Ý¿â£¬×¼±¸Ìí¼Ó
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();
}
//ÏÔʾÐÂÊÕµ½µÄ¶ÌÐÅ
//_T("ÐòºÅ,50; ÊÖ»úºÅÂë,150;·¢ËÍÄÚÈÝ,120; »Ø¸´ÄÚÈÝ,280;״̬,60;·¢ËÍʱ¼ä,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); //״̬±äΪÒѶÁ
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓÄÚÈÝ
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") ); //ÄÚÈÝΪ¿Õ
//Ìí¼ÓºÅÂë
long lCount = m_wndList.GetSelectedCount();
if ( lCount <= 0 )
return ;
//·ÖÅäÊý¾Ý
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];
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
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]); //´ÓÁбíÖÐɾ³ý
}
}
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìÏÔʾµÄËÙ¶È
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)
{
//µÚÒ»²½£¬²éÕÒ״̬Ϊδ¹Ì¶¨µÄ¶ÌÐÅ
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++ ) //ÿ´Î×î¶à²éѯ1000Ìõ¼Ç¼
{
long lStatus = GetItemStatus(i);
#ifdef STATUS_ENABLE_RECV
if ( lStatus == SEND_STATUS_SUB_OK || //ÒÔÏÂÈýÖÖ£¬ÐèÒªÖØÐÂȡ״̬
lStatus == SEND_STATUS_SUB_FILT ||
lStatus == SEND_STATUS_SEND_OK ||
lStatus == SEND_STATUS_SEND_ERROR)
#else
if ( lStatus == SEND_STATUS_SUB_OK || //ÒÔÏÂÈýÖÖ£¬ÐèÒªÖØÐÂȡ״̬
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 ); //È¡µÃSendID
lCount2 ++;
pSendID[lCount2] =lStatus;
lCount2 ++;
}
if ( lCount2 >= STATUS_MAX_QUERY*3 ) //³¬¹ý1000ÌõÁË
break;
}
lCount = lCount2/3; //È¡µÃÐèҪȡ״̬µÄ¸öÊý
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ÈÕǰµÄÐÅÏ¢£¬Ìø¹ý
{
return SEND_STATUS_UNKNOW;
}
if ( !_tcscmp( szStatus , _T("Ìá½»³É¹¦") ) )
return SEND_STATUS_SUB_OK;
if ( !_tcscmp( szStatus , _T("ÉóºËÖÐ") ) )
return SEND_STATUS_SUB_FILT;
if ( !_tcscmp( szStatus , _T("Ìύʧ°Ü") ) )
return SEND_STATUS_SUB_ERROR;
if ( !_tcscmp( szStatus , _T("Ä¿±êÓÐÎó") ) )
return SEND_STATUS_SUB_NUMNOSUP;
if ( !_tcscmp( szStatus , _T("ÉóºËʧ°Ü") ) )
return SEND_STATUS_FILT_ERROR;
if ( !_tcscmp( szStatus , _T("·¢Ëͳɹ¦") ) )
return SEND_STATUS_SEND_OK;
if ( !_tcscmp( szStatus , _T("·¢ËÍʧ°Ü") ) )
return SEND_STATUS_SEND_ERROR;
if ( !_tcscmp( szStatus , _T("½ÓÊճɹ¦") ) )
return SEND_STATUS_RECV_OK;
if ( !_tcscmp( szStatus , _T("½ÓÊÕʧ°Ü") ) )
return SEND_STATUS_RECV_ERROR;
// if ( !_tcscmp( szStatus , _T("δ֪״̬") ) )
return SEND_STATUS_UNKNOW;
}