242 lines
7.3 KiB
C++
242 lines
7.3 KiB
C++
![]() |
// 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 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tAlarm.SetDateTime(tNow.GetYear(),tAlarm.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm)<ts) //<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>С<EFBFBD><D0A1>30<33><30><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( tSendLast.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
if ( tSendLast != tAlarm ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case 1: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tAlarm.SetDateTime(tNow.GetYear(),tNow.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm)<ts) //<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>С<EFBFBD><D0A1>30<33><30><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( tSendLast.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
if ( tSendLast != tAlarm ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case 2: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
_stprintf(szTemp, _T("%d") , tNow.GetDayOfWeek()-1 ); //<2F><><EFBFBD><EFBFBD>
|
|||
|
if ( strAddMsg.Find(szTemp[0]) >= 0 ) //<2F>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
tAlarm.SetDateTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm)<ts) //<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>С<EFBFBD><D0A1>30<33><30><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( tSendLast.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
if ( tSendLast != tAlarm ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case 3: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tAlarm.SetDateTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm)<ts) //<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>С<EFBFBD><D0A1>30<33><30><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( tSendLast.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
if ( tSendLast != tAlarm ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case 4: //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
//tAlarm.SetDateTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
if (tAlarm.GetStatus()==COleDateTime::valid && tNow > tAlarm && (tNow-tAlarm)<ts) //<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>С<EFBFBD><D0A1>30<33><30><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( tSendLast.GetStatus() == COleDateTime::valid )
|
|||
|
{
|
|||
|
if ( tSendLast != tAlarm ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
if ( bSend )
|
|||
|
{
|
|||
|
m_AdoRS.Close();
|
|||
|
strSelect.Format( _T("update calendar set SendLast='%04d%02d%02d %02d:%02d:%02d' where CalendarID=%d"),tAlarm.GetYear(),tAlarm.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond(),lID );
|
|||
|
m_AdoRS1.Open(strSelect);
|
|||
|
if ( lType == 4 ) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,<2C><><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD>״̬Ϊ
|
|||
|
{
|
|||
|
strSelect.Format( _T("update calendar set Status=0 where CalendarID=%d"),lID );
|
|||
|
m_AdoRS1.Open(strSelect);
|
|||
|
}
|
|||
|
//<2F>ύ<EFBFBD><E1BDBB><EFBFBD><EFBFBD>
|
|||
|
long lMobType = MOBILE_TYPE_CMCC;
|
|||
|
//if ( isNumUnicom((char*)(LPCTSTR)strMobile) )
|
|||
|
// lMobType = MOBILE_TYPE_UNICOM;
|
|||
|
|
|||
|
SubmitData data={0};
|
|||
|
data.lCorpID = lCorpID;
|
|||
|
data.lUserID = lUserID;
|
|||
|
_tcscpy( data.szName , _T("calendar") );
|
|||
|
_tcscpy( data.szMobile , strMobile );
|
|||
|
_tcscpy( data.szMsg , strMsg );
|
|||
|
CSendThread::SubmitSms( data,&m_AdoRS1,&m_AdoRS2,m_pSMSDlg,lMobType,SMSTYPE_ALARM); //<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
m_bStart = false;
|
|||
|
return ;
|
|||
|
}
|
|||
|
}
|
|||
|
m_AdoRS.MoveNext();
|
|||
|
lCount2 ++;
|
|||
|
}
|
|||
|
}
|
|||
|
m_bStart = false;
|
|||
|
}
|
|||
|
catch(...)
|
|||
|
{
|
|||
|
LOG_APPERROR(_T("T"));
|
|||
|
m_bStart = false;
|
|||
|
return ;
|
|||
|
}
|
|||
|
m_bStart = false;
|
|||
|
return ;
|
|||
|
}
|
|||
|
|
|||
|
BOOL CCalendarThread::SetParam(CSmsCenterDlg *pSmsDlg)
|
|||
|
{
|
|||
|
m_pSMSDlg = pSmsDlg;
|
|||
|
BOOL b = m_adoConnection.ConnectSQLServer2(m_pSMSDlg->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); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱʱ<CAB1><CAB1>
|
|||
|
#ifdef SMSCENTER_USECLIENT
|
|||
|
m_adoConnection.SetCursorLocation(adUseClient); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
m_AdoRS.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
m_AdoRS1.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
m_AdoRS2.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
return b;
|
|||
|
}
|