// CalendarThread.cpp : implementation file // #include "stdafx.h" #include "SmsCenter.h" #include "CalendarThread.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCalendarThread #include "SmsCenterDlg.h" IMPLEMENT_DYNCREATE(CCalendarThread, CWinThread) CCalendarThread::CCalendarThread() { m_bStart = false; m_pSMSDlg = NULL; } CCalendarThread::~CCalendarThread() { } BOOL CCalendarThread::InitInstance() { CoInitializeEx( NULL , COINIT_MULTITHREADED ); // TODO: perform and per-thread initialization here return TRUE; } int CCalendarThread::ExitInstance() { CoUninitialize(); // TODO: perform any per-thread cleanup here return CWinThread::ExitInstance(); } BEGIN_MESSAGE_MAP(CCalendarThread, CWinThread) //{{AFX_MSG_MAP(CCalendarThread) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP ON_THREAD_MESSAGE(TH_CALENDAR,On_Calendar) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCalendarThread message handlers void CCalendarThread::On_Calendar(WPARAM wParam, LPARAM lParam) { if ( m_bStart ) //如果正在发送,立即返回 return ; try { m_bStart = true; CString strSelect; strSelect = "select calendar.*,users.mobile from calendar,users where calendar.Status=1 and calendar.userid = users.userid"; BOOL b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { long lID; long lCorpID; long lUserID; long lType; COleDateTime tAlarm; COleDateTime tSendLast; CString strMsg; CString strAddMsg; CString strMobile; CString strAddMobile; COleDateTimeSpan ts(0,0,30,0); TCHAR szTemp[32]={0}; long lCount2 = 0; while ( !m_AdoRS.IsEOF() && lCount2<1000 ) { m_AdoRS.GetCollect( _T("CalendarID") , lID ); m_AdoRS.GetCollect( _T("CorpID") , lCorpID ); m_AdoRS.GetCollect( _T("UserID") , lUserID ); m_AdoRS.GetCollect( _T("Type") , lType ); m_AdoRS.GetCollect( _T("Alarm"), tAlarm ); m_AdoRS.GetCollect( _T("SendLast"),tSendLast); m_AdoRS.GetCollect( _T("Msg") , strMsg ); m_AdoRS.GetCollect( _T("AddMsg") , strAddMsg ); m_AdoRS.GetCollect( _T("Mobile") , strMobile ); m_AdoRS.GetCollect( _T("AddMobile") , strAddMobile ); if ( strAddMobile.GetLength()>=10 ) strMobile = strAddMobile; if ( tAlarm.GetStatus() == COleDateTime::valid ) { BOOL bSend=false; COleDateTime tNow = COleDateTime::GetCurrentTime(); switch ( lType ) { case 0: //年提醒 tAlarm.SetDateTime(tNow.GetYear(),tAlarm.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //提醒时间 if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm) tAlarm && (tNow-tAlarm)= 0 ) //判断此星期数是否需要提醒 { tAlarm.SetDateTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //提醒时间 if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm) tAlarm && (tNow-tAlarm) tAlarm && (tNow-tAlarm)m_Setup.szDBName,DEFAULT_DBNAME,m_pSMSDlg->m_Setup.szDBUser,m_pSMSDlg->m_Setup.szDBPasswd, m_pSMSDlg->m_Setup.szProvider); if ( b ) { m_adoConnection.SetCommandTimeout(7200); //设置连接超时时间 #ifdef SMSCENTER_USECLIENT m_adoConnection.SetCursorLocation(adUseClient); //设置为本地游标类型 #endif m_AdoRS.SetAdoConnection( &m_adoConnection ); //设置数据库连接 m_AdoRS1.SetAdoConnection( &m_adoConnection ); //设置数据库连接 m_AdoRS2.SetAdoConnection( &m_adoConnection ); //设置数据库连接 } return b; }