435 lines
12 KiB
C++
435 lines
12 KiB
C++
![]() |
// SPThread.cpp : implementation file
|
|||
|
//
|
|||
|
|
|||
|
#include "stdafx.h"
|
|||
|
#include "smscenter.h"
|
|||
|
#include "SPThread.h"
|
|||
|
|
|||
|
#ifdef _DEBUG
|
|||
|
#define new DEBUG_NEW
|
|||
|
#undef THIS_FILE
|
|||
|
static char THIS_FILE[] = __FILE__;
|
|||
|
#endif
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
// CSPThread
|
|||
|
|
|||
|
#include "SmsCenterDlg.h"
|
|||
|
|
|||
|
IMPLEMENT_DYNCREATE(CSPThread, CWinThread)
|
|||
|
|
|||
|
CSPThread::CSPThread()
|
|||
|
{
|
|||
|
m_bStart = false;
|
|||
|
}
|
|||
|
|
|||
|
CSPThread::~CSPThread()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
BOOL CSPThread::InitInstance()
|
|||
|
{
|
|||
|
CoInitializeEx( NULL , COINIT_MULTITHREADED );
|
|||
|
// TODO: perform and per-thread initialization here
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
int CSPThread::ExitInstance()
|
|||
|
{
|
|||
|
CoUninitialize();
|
|||
|
// TODO: perform any per-thread cleanup here
|
|||
|
return CWinThread::ExitInstance();
|
|||
|
}
|
|||
|
|
|||
|
BEGIN_MESSAGE_MAP(CSPThread, CWinThread)
|
|||
|
//{{AFX_MSG_MAP(CSPThread)
|
|||
|
// NOTE - the ClassWizard will add and remove mapping macros here.
|
|||
|
//}}AFX_MSG_MAP
|
|||
|
ON_THREAD_MESSAGE(TH_SMSSP,On_SPDZ)
|
|||
|
END_MESSAGE_MAP()
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
// CSPThread message handlers
|
|||
|
|
|||
|
BOOL CSPThread::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_AdoRS2.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
m_AdoRS3.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
return b;
|
|||
|
}
|
|||
|
|
|||
|
void CSPThread::On_SPDZ(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 ;
|
|||
|
|
|||
|
Sleep(10000); //<2F><>ʱ10<31><30>
|
|||
|
m_pSMSDlg->m_bAutoSend_SP = false;
|
|||
|
|
|||
|
m_bStart = true;
|
|||
|
|
|||
|
try {
|
|||
|
CString strSelect;
|
|||
|
strSelect.Format( _T("select dz.*,users.mobile from dz,users where dz.userid = users.userid order by dz.OperCmd,dz.Birthday") );
|
|||
|
BOOL b = m_AdoRS.Open( strSelect );
|
|||
|
long lAllCount = m_AdoRS.GetRecordCount() ;
|
|||
|
if ( b && lAllCount>0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>û<EFBFBD>
|
|||
|
{
|
|||
|
m_AdoRS.MoveFirst();
|
|||
|
long lCorpID=0;
|
|||
|
long lUserID=0;
|
|||
|
CString strMobile;
|
|||
|
TCHAR szOldOperCmd[32]={0};
|
|||
|
TCHAR szOldAddCmd[32]={0};
|
|||
|
COleDateTime tOldBirthday;
|
|||
|
BOOL bOldMsg = false;
|
|||
|
long lOldPrice=0;
|
|||
|
CString strOldMsg;
|
|||
|
long lOperCmdID;
|
|||
|
COleDateTime tBirthday;
|
|||
|
TCHAR szOperCmd[32]={0};
|
|||
|
TCHAR szAddCmd[32]={0};
|
|||
|
COleDateTime tSend;
|
|||
|
COleDateTime tYSend; //Ӧ<><D3A6><EFBFBD>͵<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
long lDZID;
|
|||
|
long lAllCount2=0;
|
|||
|
while( !m_AdoRS.IsEOF() && lAllCount2<lAllCount)
|
|||
|
{
|
|||
|
m_AdoRS.GetCollect( _T("CorpID"), lCorpID );
|
|||
|
m_AdoRS.GetCollect( _T("UserID"), lUserID );
|
|||
|
m_AdoRS.GetCollect( _T("OperCmd"), szOperCmd );
|
|||
|
m_AdoRS.GetCollect( _T("AddCmd") , szAddCmd );
|
|||
|
m_AdoRS.GetCollect( _T("Mobile") , strMobile );
|
|||
|
m_AdoRS.GetCollect( _T("DZID") , lDZID );
|
|||
|
m_AdoRS.GetCollect( _T("OperCmdID") , lOperCmdID );
|
|||
|
m_AdoRS.GetCollect( _T("SendLast") , tSend );
|
|||
|
m_AdoRS.GetCollect( _T("Birthday") , tBirthday );
|
|||
|
Sleep(10);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
|
|||
|
if ( strMobile.GetLength() < 11 )
|
|||
|
{
|
|||
|
lAllCount2 ++;
|
|||
|
m_AdoRS.MoveNext();
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if ( bOldMsg &&
|
|||
|
!_tcscmp(szOperCmd,szOldOperCmd) && //<2F>¾<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>,ֱ<>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
!_tcscmp(szAddCmd,szOldAddCmd ) &&
|
|||
|
tBirthday== tOldBirthday )
|
|||
|
{
|
|||
|
CString strSelect3;
|
|||
|
if ( tSend.GetStatus()!= COleDateTime::valid || tSend < tYSend ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>С<EFBFBD><D0A1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
strSelect3.Format( _T("update dz set SendLast=GetDATE() where DZID=%d") ,lDZID );
|
|||
|
m_AdoRS2.Open(strSelect3);
|
|||
|
m_AdoRS2.Close();
|
|||
|
|
|||
|
|
|||
|
//<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("SP") );
|
|||
|
_tcscpy( data.szMobile , strMobile );
|
|||
|
_tcscpy( data.szMsg , strOldMsg );
|
|||
|
CSendThread::SubmitSms( data,&m_AdoRS2,&m_AdoRS3,m_pSMSDlg,lMobType,SMSTYPE_SP,lOldPrice); //<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bOldMsg = false;
|
|||
|
_tcscpy( szOldOperCmd , szOperCmd ); //<2F><><EFBFBD>浱ǰָ<C7B0><D6B8>
|
|||
|
_tcscpy( szOldAddCmd , szAddCmd );
|
|||
|
tOldBirthday = tBirthday;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CString strSelect2;
|
|||
|
BOOL b2;
|
|||
|
//Sleep(100); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA>
|
|||
|
strSelect2.Format(_T("select * from OperCmd where OperCmdID=%d"),lOperCmdID);
|
|||
|
b2 = m_AdoRS2.Open( strSelect2 );
|
|||
|
if ( b2 && m_AdoRS2.GetRecordCount() )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>ʱ<EFBFBD>䷢<EFBFBD><E4B7A2>
|
|||
|
long lTemp;
|
|||
|
BOOL bWeek;
|
|||
|
TCHAR szWeek[32]={0};
|
|||
|
COleDateTime t1;
|
|||
|
COleDateTime t2;
|
|||
|
COleDateTime t3;
|
|||
|
COleDateTime tNow = ::COleDateTime::GetCurrentTime();
|
|||
|
m_AdoRS2.MoveFirst();
|
|||
|
m_AdoRS2.GetCollect( _T("DZSendTime1") , t1 );
|
|||
|
m_AdoRS2.GetCollect( _T("DZSendTime2") , t2 );
|
|||
|
m_AdoRS2.GetCollect( _T("DZSendTime3") , t3 );
|
|||
|
m_AdoRS2.GetCollect( _T("Price") , lOldPrice );
|
|||
|
m_AdoRS2.GetCollect( _T("isWeek") , bWeek );
|
|||
|
m_AdoRS2.GetCollect( _T("WeekDay"), szWeek );
|
|||
|
m_AdoRS2.Close();
|
|||
|
|
|||
|
t1.SetDateTime(tNow.GetYear() , tNow.GetMonth() , tNow.GetDay(),t1.GetHour(),t1.GetMinute(),t1.GetSecond());
|
|||
|
t2.SetDateTime(tNow.GetYear() , tNow.GetMonth() , tNow.GetDay(),t2.GetHour(),t2.GetMinute(),t2.GetSecond());
|
|||
|
t3.SetDateTime(tNow.GetYear() , tNow.GetMonth() , tNow.GetDay(),t3.GetHour(),t3.GetMinute(),t3.GetSecond());
|
|||
|
SYSTEMTIME ttn;tNow.GetAsSystemTime(ttn);
|
|||
|
SYSTEMTIME tts;tSend.GetAsSystemTime(tts);
|
|||
|
SYSTEMTIME tt1;t1.GetAsSystemTime(tt1);
|
|||
|
SYSTEMTIME tt2;t2.GetAsSystemTime(tt2);
|
|||
|
SYSTEMTIME tt3;t3.GetAsSystemTime(tt3);
|
|||
|
|
|||
|
BOOL bSend=false;
|
|||
|
if ( !bSend &&
|
|||
|
tSend.GetStatus() != COleDateTime::valid &&
|
|||
|
t1.GetHour() > 2 &&
|
|||
|
tNow>t1 )
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
tYSend = t1;
|
|||
|
}
|
|||
|
if ( !bSend &&
|
|||
|
tSend.GetStatus() == COleDateTime::valid &&
|
|||
|
t1.GetHour() > 2 &&
|
|||
|
tSend < t1 &&
|
|||
|
tNow>t1 )
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
tYSend = t1;
|
|||
|
}
|
|||
|
/*
|
|||
|
if ( !bSend &&
|
|||
|
tSend.GetStatus() == COleDateTime::valid &&
|
|||
|
t1.GetHour() > 2 &&
|
|||
|
tSend > t1 &&
|
|||
|
tNow>t1 && tNow < t2 )
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
tYSend = t1;
|
|||
|
}
|
|||
|
*/
|
|||
|
if ( !bSend &&
|
|||
|
tSend.GetStatus() == COleDateTime::valid &&
|
|||
|
t2.GetHour() > 2 &&
|
|||
|
tSend < t2 &&
|
|||
|
tNow>t2 )
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
tYSend = t2;
|
|||
|
}
|
|||
|
if ( !bSend &&
|
|||
|
tSend.GetStatus() == COleDateTime::valid &&
|
|||
|
t3.GetHour() > 2 &&
|
|||
|
tSend < t3 &&
|
|||
|
tNow>t3 )
|
|||
|
{
|
|||
|
bSend = true;
|
|||
|
tYSend = t3;
|
|||
|
}
|
|||
|
|
|||
|
if ( bSend && bWeek )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>Ƚ<EFBFBD>
|
|||
|
lTemp = tNow.GetDayOfWeek();
|
|||
|
lTemp--;
|
|||
|
if ( szWeek[lTemp] != '1' ) //<2F><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>÷<EFBFBD><C3B7><EFBFBD>
|
|||
|
bSend = false;
|
|||
|
}
|
|||
|
|
|||
|
if ( bSend ) //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>ͣ<EFBFBD>ȡ<EFBFBD><C8A1>Ϣ
|
|||
|
{
|
|||
|
CString strSelect3;
|
|||
|
BOOL b3;
|
|||
|
if ( !_tcscmp(szOperCmd,_T("XD") )) //<2F>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int iMon=0;
|
|||
|
int iDay=0;
|
|||
|
if ( GetBBMonDay(tBirthday,iMon,iDay) && iDay>0 )
|
|||
|
{
|
|||
|
strSelect3.Format( _T("select * from DataMsg where OperCmd='%s' and convert(int,key1)=%d order by yelevel") , szOperCmd,iMon);
|
|||
|
b3 = m_AdoRS2.Open(strSelect3 );
|
|||
|
if ( b3 && !m_AdoRS2.IsEOF() )
|
|||
|
{
|
|||
|
long lAdoCount = m_AdoRS2.GetRecordCount();
|
|||
|
if ( iDay<=lAdoCount )
|
|||
|
{
|
|||
|
m_AdoRS2.Move(iDay-1);
|
|||
|
m_AdoRS2.GetCollect( _T("Msg") , strOldMsg );
|
|||
|
m_AdoRS2.Close();
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
strSelect3.Format( _T("update dz set SendLast=GetDATE() where DZID=%d") ,lDZID );
|
|||
|
m_AdoRS2.Open(strSelect3);
|
|||
|
m_AdoRS2.Close();
|
|||
|
bOldMsg = true;
|
|||
|
|
|||
|
//<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("SP") );
|
|||
|
_tcscpy( data.szMobile , strMobile );
|
|||
|
_tcscpy( data.szMsg , strOldMsg );
|
|||
|
CSendThread::SubmitSms( data,&m_AdoRS2,&m_AdoRS3,m_pSMSDlg,lMobType,SMSTYPE_SP,lOldPrice); //<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//strSelect.Format( _T("Error:%s:%s->%s,û<>й<EFBFBD><D0B9><EFBFBD><EFBFBD>ƻظ<C6BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>!"),smsSend.ServiceType,smsSend.szRecvNum,smsSend.szSendNum);
|
|||
|
//g_dlg->AddLog((char*)(LPCSTR)strSelect);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
if ( _tcslen(szAddCmd) > 0 )
|
|||
|
strSelect3.Format( _T("select top 1 * from DataMsg where OperCmd='%s' and Key1='%s' and status=0 order by MsgTime desc") , szOperCmd,szAddCmd );
|
|||
|
else
|
|||
|
strSelect3.Format( _T("select top 1 * from DataMsg where OperCmd='%s' and status=0 order by MsgTime desc") , szOperCmd );
|
|||
|
if ( !_tcscmp(szOperCmd,_T("HL")) ) //<2F><>Ҫ<EFBFBD><D2AA>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B4A6>
|
|||
|
{
|
|||
|
SYSTEMTIME t ;
|
|||
|
::GetLocalTime(&t);
|
|||
|
CString strTime;
|
|||
|
strTime.Format( _T("%04d.%02d.%02d") , t.wYear,t.wMonth,t.wDay );
|
|||
|
strSelect3.Format( _T("select top 1 * from DataMsg where OperCmd='%s' and Key1='%s' order by MsgTime desc") , szOperCmd,strTime );
|
|||
|
}
|
|||
|
b3 = m_AdoRS2.Open(strSelect3 );
|
|||
|
if ( b3 && m_AdoRS2.GetRecordCount()>0 )
|
|||
|
{
|
|||
|
m_AdoRS2.MoveFirst();
|
|||
|
long lMsgID;
|
|||
|
m_AdoRS2.GetCollect( _T("DataMsgID") , lMsgID );
|
|||
|
m_AdoRS2.GetCollect( _T("Msg") , strOldMsg );
|
|||
|
m_AdoRS2.Close();
|
|||
|
strSelect3.Format( _T("update DataMsg set status=1 where DataMsgID=%d") , lMsgID );
|
|||
|
m_AdoRS2.Open(strSelect3);
|
|||
|
m_AdoRS2.Close();
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
strSelect3.Format( _T("update dz set SendLast=GetDATE() where DZID=%d") ,lDZID );
|
|||
|
m_AdoRS2.Open(strSelect3);
|
|||
|
m_AdoRS2.Close();
|
|||
|
bOldMsg = true;
|
|||
|
|
|||
|
//<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("SP") );
|
|||
|
_tcscpy( data.szMobile , strMobile );
|
|||
|
_tcscpy( data.szMsg , strOldMsg );
|
|||
|
CSendThread::SubmitSms( data,&m_AdoRS2,&m_AdoRS3,m_pSMSDlg,lMobType,SMSTYPE_SP,lOldPrice); //<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//strSelect.Format( _T("Error:%s:%s->%s,û<>й<EFBFBD><D0B9><EFBFBD><EFBFBD>ƻظ<C6BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>!"),smsSend.ServiceType,smsSend.szRecvNum,smsSend.szSendNum);
|
|||
|
//g_dlg->AddLog((char*)(LPCSTR)strSelect);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
lAllCount2 ++;
|
|||
|
//Sleep(50); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA>
|
|||
|
m_AdoRS.MoveNext(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
}
|
|||
|
}
|
|||
|
m_AdoRS.Close();
|
|||
|
}
|
|||
|
catch (...)
|
|||
|
{
|
|||
|
LOG_APPERROR(_T("T"));
|
|||
|
m_bStart = false;
|
|||
|
return ;
|
|||
|
}
|
|||
|
|
|||
|
m_bStart = false;
|
|||
|
return ;
|
|||
|
}
|
|||
|
|
|||
|
BOOL CSPThread::GetBBMonDay(COleDateTime tBirthday, int &iMon, int &iDay)
|
|||
|
{
|
|||
|
COleDateTime tNow2 = ::COleDateTime::GetCurrentTime();
|
|||
|
|
|||
|
if ( tBirthday>tNow2 ) //<2F><><EFBFBD><EFBFBD><F3A3ACB7><EFBFBD>
|
|||
|
{
|
|||
|
iMon = -1;
|
|||
|
iDay = -1;
|
|||
|
return false;
|
|||
|
}
|
|||
|
SYSTEMTIME tNow,tBB;
|
|||
|
tNow2.GetAsSystemTime(tNow);
|
|||
|
tBirthday.GetAsSystemTime(tBB);
|
|||
|
//<2F>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( tNow.wDay >=tBB.wDay )
|
|||
|
{
|
|||
|
iDay = tNow.wDay-tBB.wDay;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tNow.wMonth--;
|
|||
|
if ( tNow.wMonth<=0 )
|
|||
|
{
|
|||
|
tNow.wMonth=12;
|
|||
|
tNow.wYear--;
|
|||
|
}
|
|||
|
switch(tNow.wMonth)
|
|||
|
{
|
|||
|
case 1:
|
|||
|
case 3:
|
|||
|
case 5:
|
|||
|
case 7:
|
|||
|
case 8:
|
|||
|
case 10:
|
|||
|
case 12:
|
|||
|
tNow.wDay += 31;
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
if (tNow.wYear%4==0 )
|
|||
|
tNow.wDay += 30;
|
|||
|
else
|
|||
|
tNow.wDay += 28;
|
|||
|
break;
|
|||
|
default:
|
|||
|
tNow.wDay += 30;
|
|||
|
}
|
|||
|
iDay = tNow.wDay-tBB.wDay;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( tNow.wMonth >=tBB.wMonth )
|
|||
|
{
|
|||
|
iMon = tNow.wMonth-tBB.wMonth;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tNow.wYear --;
|
|||
|
tNow.wMonth+= 12;
|
|||
|
iMon = tNow.wMonth-tBB.wMonth;
|
|||
|
}
|
|||
|
iMon = iMon+(tNow.wYear-tBB.wYear)*12;
|
|||
|
|
|||
|
iDay++;
|
|||
|
iMon++;
|
|||
|
return true;
|
|||
|
}
|