CorpSms/FSmsQueryLog.cpp

675 lines
19 KiB
C++
Raw Normal View History

2025-02-27 16:58:16 +08:00
// 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;
}