// SendThread.cpp : implementation file // #include "stdafx.h" #include "SmsCenter.h" #include "SendThread.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSendThread #include "SmsCenterDlg.h" extern CSmsCenterApp theApp; BOOL g_bInit2=false; CSmsCenterDlg * g_pSMSDlg2=NULL; #include <afxinet.h> #pragma comment(lib, "wininet.lib") IMPLEMENT_DYNCREATE(CSendThread, CWinThread) CSendThread::CSendThread() { m_lSendCount = 0; m_bSend = false; } CSendThread::~CSendThread() { } BOOL CSendThread::InitInstance() { // TODO: perform and per-thread initialization here return TRUE; } int CSendThread::ExitInstance() { return CWinThread::ExitInstance(); } BEGIN_MESSAGE_MAP(CSendThread, CWinThread) //{{AFX_MSG_MAP(CSendThread) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSendThread message handlers BOOL CSendThread::Recv_Sms(HANDLE & hPipe,SmsSendData sms,CAdoRecordSet * pAdoRS,CAdoRecordSet * pAdoRS2,CAdoRecordSet * pAdoRS3,CSmsCenterDlg * pSMSDlg) { try { CString str; CString strSelect; CString strAllNum = sms.szRecvNum; CString strExTFH; CString strExCorpNum; CString strCorpNum; CString strUserNum; CString strExNum; CString strGroupID; CString strSender; CString strRecver; CString strProv; CString strCity; CString strSName = _T("��������"); TCHAR szUpSms[256]={0}; long lCorpID=0; long lUserID=0; DWORD lPurview=0; BOOL bSWT=false; long lTFHBegin=0; long lTDMode = 0; //��ͨ��ID CString strTDNum; long lLen = strAllNum.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strTDNum = strAllNum.Left(i); //����ʼ��λ�ж��Ƿ�Ϊ�ط��� str.Format(_T("select * from TD2 with(nolock) where Ability=0 and AccessPort='%s'") , strTDNum ); if (strTDNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { lTFHBegin = i; pAdoRS->GetCollect(_T("Mode") , lTDMode); break; } } if ( lTFHBegin>0 ) { strExTFH = strAllNum.Right(strAllNum.GetLength()-lTFHBegin); //�ų����ط��ź�ʣ�µĺ��� //��ѯ��ҵID long lLen = strExTFH.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strCorpNum = strExTFH.Left(i); //���ҿ�ʼ��λ�ж��Ƿ���ҵ�ط��� if ( lTDMode == 1 || lTDMode == 2 ) //Ѹ���ڰ��������ͣ����ط���2��¼������չ�� { str.Format(_T("select * from Corp with(nolock) where SMSNum2='%s'") , strCorpNum ); } else { str.Format(_T("select * from Corp with(nolock) where SMSNum='%s'") , strCorpNum ); } if (strCorpNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("CorpID") , lCorpID ); pAdoRS->GetCollect( _T("SName") , strSName ); pAdoRS->GetCollect( _T("UpSms") , szUpSms ); break; } } } else { //ͨ�����Ҳ���������������֮ͨ��Ķ������룬��QXT_SmsNum�в�����ҵID long lLen = strAllNum.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strTDNum = strAllNum.Left(i); //����ʼ��λ�ж��Ƿ�Ϊ�ط��� str.Format(_T("select * from corp with(nolock) where QXT_SmsNum='%s'") , strTDNum ); if (strTDNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { lTFHBegin = i; pAdoRS->GetCollect(_T("CorpID") , lCorpID ); pAdoRS->GetCollect( _T("SName") , strSName ); pAdoRS->GetCollect( _T("UpSms") , szUpSms ); strExTFH = strAllNum.Right(strAllNum.GetLength()-lTFHBegin); //�ų����ط��ź�ʣ�µĺ��� break; } } } //�����û�ID if (lCorpID>0 ) { strExCorpNum = strExTFH.Right(strExTFH.GetLength()-strCorpNum.GetLength()); //�ų���ҵ�ط��ź�ʣ�µĺ��� long lLen = strExCorpNum.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strUserNum = strExCorpNum.Left(i); //���ҿ�ʼ��λ�ж��Ƿ���ҵ�ط��� str.Format(_T("select * from Users with(nolock) where CorpID=%d and SMSNum='%s'") , lCorpID , strUserNum ); if (strUserNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("UserID") , lUserID ); pAdoRS->GetCollect(_T("Name") , strRecver ); pAdoRS->GetCollect( _T("purview"), lPurview ); pAdoRS->GetCollect(_T("GroupID") , strGroupID ); if ( lPurview&PURVIEW_LOGIN && lPurview&PURVIEW_RECVP ) //�е�¼Ȩ�ޣ����ɽ���˽����Ϣ { pAdoRS->GetCollect( _T("UserID") , lUserID ); long lSDK; pAdoRS->GetCollect( _T("SDK") , lSDK ); bSWT = lSDK & SDK_SWT ? true:false; } break; } } } strExNum = strExTFH.Right(strExTFH.GetLength()-strCorpNum.GetLength()-strUserNum.GetLength()); /* //���յ��Ķ���ת����һ����ҳ�� if ( lCorpID2>0 && _tcslen(szUpSms) >0 && bSubmitSms ) { UpSmsS * pUpSms = new UpSmsS; _tcscpy(pUpSms->szSendNum , data.szSendNum ); _tcscpy(pUpSms->szRecvNum , data.szRecvNum ); _tcscpy(pUpSms->szMsg , data.szMsg ); _tcscpy(pUpSms->szUrl , szUpSms ); pUpSms->tSendTime = data.tSendTime; //�����߳̽��д��� ::AfxBeginThread((AFX_THREADPROC)UpSms,(LPVOID)pUpSms,THREAD_PRIORITY_BELOW_NORMAL); } */ //��ѯ�����Ź�������������� long lMobileType=MOBILE_TYPE_UNKNOW; strSender = CSendPub::GetMobileProvCity(pAdoRS2,sms.szSendNum,lMobileType,strProv,strCity); //�ж��Ƿ�Ϊ������� BOOL bReportNumber = false; DWORD dwType = 0; str.Format( _T("select * from reportnum with(nolock) where (Mobile='%s' or WxWorkName='%s') and Status=1") , sms.szSendNum, sms.szSendNum); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { bReportNumber = true; pAdoRS->GetCollect( _T("Type") , dwType ); pAdoRS->Close(); } if (pSMSDlg->m_WxWork.bSend && (CString(sms.szSendNum).MakeUpper() == CString(pSMSDlg->m_WxWork.szWxName).MakeUpper())) //��ע������˶��š� { bReportNumber = true; dwType = dwType | REPORT_CHECKUP; } //��������ָ�� ProcessUp(pSMSDlg,dwType,lMobileType,sms , pAdoRS,pAdoRS2,pAdoRS3,bReportNumber,lCorpID,lUserID,lTDMode,strSName); //���յ��Ķ��ŷ��뷢���б� SmsSendData data={0}; data.lCorpID = lCorpID; data.lUserID = lUserID; data.lSendID = 0; //��Ϊ�ǽ��գ�SendID=0 data.lStatus = SEND_STATUS_RECV_OK; //���ճɹ� data.lMsgType= SMSTYPE_RECV; _tcscpy( data.szGroupID , strGroupID ); _tcscpy( data.szSendNum , sms.szSendNum ); _tcscpy( data.szRecvNum , sms.szRecvNum ); _tcscpy( data.szRecver , strRecver ); _tcscpy( data.szSender , strSender ); _tcscpy( data.szMsg , sms.szMsg ); _tcscpy( data.szRecvStatus , strExNum ); //����������չ���� data.tSendTime = sms.tSendTime; //���յ��Ķ���ת����һ����ҳ�� if ( lCorpID>0 && _tcslen(szUpSms)>0 ) { UpSmsS * pUpSms = new UpSmsS; memset(pUpSms , 0 , sizeof(UpSmsS)); pUpSms->lCorpID = lCorpID; pUpSms->lUserID = lUserID; pUpSms->lType = 0; //���ж��� pUpSms->pDlg = pSMSDlg; _tcscpy(pUpSms->szSendNum , data.szSendNum ); _tcscpy(pUpSms->szRecvNum , data.szRecvNum ); _tcscpy(pUpSms->szAddNum , data.szRecvStatus ); //��չ���� _tcscpy(pUpSms->szMsg , data.szMsg ); if ( szUpSms[0] == 'A' ) //�и�A��ǰ���ʾ����״̬���� _tcscpy(pUpSms->szUrl , szUpSms+1 ); else _tcscpy(pUpSms->szUrl , szUpSms ); pUpSms->tSendTime = data.tSendTime; //�����߳̽��д��� //::AfxBeginThread((AFX_THREADPROC)Recv_Sms_UpSms,(LPVOID)pUpSms,THREAD_PRIORITY_BELOW_NORMAL); QueueUserWorkItem(Recv_Sms_UpSms,(LPVOID)pUpSms , WT_EXECUTELONGFUNCTION ); } //��ֹ'��������� CString strTempMsg = data.szMsg; strTempMsg.Replace(_T("'"),_T("''")); CString strSubTime; strSubTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , sms.tSendTime.wYear,sms.tSendTime.wMonth,sms.tSendTime.wDay,sms.tSendTime.wHour,sms.tSendTime.wMinute,sms.tSendTime.wSecond ); //�����һ�ݵ�smsrecvlog���� strSelect.Format( _T("insert into smsrecvlog(corpid,userid,groupid,Sender,sendnum,recver,recvnum,AddNum,recvnumtype,msg,subtime,LongMsg) values (%d,%d,'%s','%s','%s','%s','%s','%s',%d,'%s',%s,'%s') ") , data.lCorpID, data.lUserID, data.szGroupID, data.szSender, data.szSendNum, data.szRecver, data.szRecvNum, strExNum, lMobileType, strTempMsg, strSubTime, sms.szRecver ); BOOL b = pAdoRS->Open(strSelect); //ȡID strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( pAdoRS->Open( strSelect ) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect((long)0 , data.lSendID ); //�ٲ��뵽corpsmsm.dbo.smssend �� strSelect.Format( _T("insert into corpsmsm.dbo.smssend (SendID , CorpID,UserID,GroupID,Status,Sender,SendNum,RecvNum,RecvNumType,Recver,Msg,MsgType,SubTime,SendTime,RecvTime,RecvStatus,KF,MsgID) values (%d,%d,%d,'%s',%d,'%s','%s','%s',%d,'%s','%s',%d,%s,%s,%s,'%s',0,'%s') ") , data.lSendID, data.lCorpID, data.lUserID, data.szGroupID, data.lStatus, data.szSender, data.szSendNum, data.szRecvNum, lMobileType, data.szRecver, strTempMsg, data.lMsgType, strSubTime, strSubTime, strSubTime, strExNum, sms.szRecver); BOOL b = pAdoRS->Open( strSelect ); if ( lCorpID>0 ) { _tcscpy( data.szMsg , sms.szMsg ); _tcscpy( data.szMsgID , sms.szRecver); //��������Ϣ if (!pSMSDlg->SocketPushMsg(pAdoRS, data, strProv, strCity)) //û�����͵��ͻ��ˣ��������������Ķ˵ģ�д�����ݿ������������Ķ����� { #if (defined(SMSCENTER_ONE)||defined(SMSCENTER_TWO)) && defined(_UNICODE) && !defined(SMSCENTER_DEMO) //���͵���UNICODE�Ŀͻ��� ////PushRecvSmsToOtherCenter(hPipe, data, strProv, strCity); //PushRecvSmsToOtherCenter(pAdoRS, data, strProv, strCity); #endif } } } /* strSelect.Format( _T("insert into smssend (CorpID,UserID,GroupID,Status,Sender,SendNum,RecvNum,RecvNumType,Recver,Msg,MsgType,SubTime,SendTime,RecvTime,RecvStatus,KF,MsgID) values (%d,%d,'%s',%d,'%s','%s','%s',%d,'%s','%s',%d,%s,%s,%s,'%s',0,'%s') ") , data.lCorpID, data.lUserID, data.szGroupID, data.lStatus, data.szSender, data.szSendNum, data.szRecvNum, lMobileType, data.szRecver, strTempMsg, data.lMsgType, strSubTime, strSubTime, strSubTime, szExNumb2, sms.szRecver); BOOL b = pAdoRS->Open( strSelect ); if ( b && lCorpID>0 ) { //ȡSendID //strSelect.Format( _T("select * from smssend where UserID=%d AND SubTime=%s AND MsgType=%d order by SubTime desc") , data.lUserID,strSubTime,data.lMsgType); //strSelect.Format( "select SendID from smssend where UserID=%d and RecvTime=%s",data.lUserID,strSubTime); //if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) strSelect = _T("SELECT SCOPE_IDENTITY();") ; if ( pAdoRS->Open( strSelect ) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect((long)0 , data.lSendID ); //pAdoRS->GetCollect( _T("SendID") , data.lSendID ); //�յ����ţ�֪ͨ�����ӵ��û� //SmsSendData * psms = new SmsSendData; //*psms = data; //_tcscpy( psms->szMsg , sms.szMsg ); //pSMSDlg->On_User_PushMsg( SMS_PUSH , (WPARAM)psms , 0 ); //�����һ�ݵ�smsrecvlog���� strSelect.Format( _T("insert into smsrecvlog(sendid,corpid,userid,groupid,Sender,sendnum,recver,recvnum,AddNum,recvnumtype,msg,subtime,LongMsg) values (%d,%d,%d,'%s','%s','%s','%s','%s','%s',%d,'%s',%s,'%s') ") , data.lSendID, data.lCorpID, data.lUserID, data.szGroupID, data.szSender, data.szSendNum, data.szRecver, data.szRecvNum, szExNumb2, lMobileType, strTempMsg, strSubTime, sms.szRecver ); pAdoRS->Open(strSelect); _tcscpy( data.szMsg , sms.szMsg ); _tcscpy( data.szMsgID , sms.szRecver); //��������Ϣ if ( bSubmitSms ) { pSMSDlg->SocketPushMsg(pAdoRS, data,strProv,strCity ); } } } #endif if ( lCorpID <= 0 ) //û�ҵ���Ӧ��ҵID,�˳� return false; */ //�Ȳ�ѯ�Ƿ�Ҫת�� if ( lUserID != 0 ) //����˽����Ϣ strSelect.Format( _T("select * from smszf where UserID=%d AND ((BZF='1' or BZF='5') or (BZF='3' or BZF='7') and '%s' in (select mobile from smszf where UserID=%d)) ") , lUserID,sms.szSendNum,lUserID ); else strSelect.Format( _T("select * from smszf where CorpID=%d AND UserID=0 AND ((BZF='1' or BZF='5') or (BZF='3' or BZF='7') and '%s' in (select mobile from smszf where CorpID=%d and UserID=0)) ") , lCorpID,sms.szSendNum,lCorpID ); if ( pAdoRS->Open( strSelect ) && !pAdoRS->IsEOF() ) //��Ҫת�����ֻ����� { TCHAR szTemp[32]={0}; pAdoRS->GetCollect( _T("BZF") , szTemp ); long lZF = szTemp[0]-'0'; //��ת����ȡ���� CString strSender; strSelect.Format( _T("select * from smszf with(nolock) where CorpID=%d and Mobile='%s'"),lCorpID,sms.szSendNum ); if ( pAdoRS2->Open( strSelect ) && !pAdoRS2->IsEOF() ) { pAdoRS2->GetCollect(_T("Name"),strSender); pAdoRS2->Close(); } //�ڹ���ͨѶ¼�м������� strSelect.Format( _T("select * from corpsmsa.dbo.gaddress with(nolock) where CorpID=%d and Mobile='%s'"),lCorpID,sms.szSendNum ); if ( strSender.GetLength()<=0 && pAdoRS2->Open( strSelect ) && !pAdoRS2->IsEOF() ) { pAdoRS2->GetCollect(_T("Name"),strSender); pAdoRS2->Close(); } //���ʺŹ����м������� strSelect.Format( _T("select * from users with(nolock) where CorpID=%d and Mobile='%s'"),lCorpID,sms.szSendNum ); if ( strSender.GetLength()<=0 && pAdoRS2->Open( strSelect ) && !pAdoRS2->IsEOF() ) { pAdoRS2->GetCollect(_T("Name"),strSender); pAdoRS2->Close(); } //pAdoRS->MoveFirst(); SYSTEMTIME t;::GetLocalTime(&t); while( !pAdoRS->IsEOF() ) { SubmitData data = { 0 }; data.lCorpID = lCorpID; data.lUserID = lUserID; pAdoRS->GetCollect( _T("Name") , data.szName ); pAdoRS->GetCollect( _T("Mobile") , data.szMobile ); /* //�ȷ�����ʾ _stprintf( data.szMsg , _T("����ת��֪ͨ:\n���%s������%02d.%02d %02d:%02dʱ�յ�%s�Ķ��ţ����ݼ���һ�����š�") , sms.szRecvNum ,t.wMonth,t.wDay,t.wHour,t.wMinute,sms.szSendNum ); SubmitSms( data,pAdoRS2,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� //�ٷ���ת������ _tcscpy( data.szMsg , sms.szMsg ); SubmitSms( data,pAdoRS2,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� */ //�ϳ�һ������ memset(data.szSendNum,0,sizeof(data.szSendNum)); if ( strSender.GetLength()<=0 ) _stprintf( data.szMsg , _T("ת��%s:%s") , sms.szSendNum,sms.szMsg ); else _stprintf( data.szMsg , _T("%s:%s") , strSender,sms.szMsg ); data.lItem = 100; //�д˱�־����Ҫ��ǩ������ if (lZF&SMSZF_LONGSMS) //�Ƿ�ǿ��ʹ�ó�����ת�� { data.lItemID = 100; } SubmitSms( data,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� pAdoRS->MoveNext(); } } /* //����ͨ����� if ( bSWT ) { long lAddNum = 0; TCHAR szAddNum[32]={0}; _tcscpy(szAddNum , szExNumb+_tcslen(szExNum)+_tcslen(szExNum2) ); szAddNum[2]=0; lAddNum = _ttol(szAddNum); memset(data.szSendNum,0,sizeof(data.szSendNum)); if ( lAddNum>0 ) { strSelect.Format( _T("select top 1 * from SWT_Log where UserID=%d and AddNum=%d order by SubTime Desc") , lUserID , lAddNum ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { CString strMobile1; CString strMobile2; CString strRecvName; long lSWTID=0; long lWYID=0; pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("SendMobile") , strMobile1 ); pAdoRS->GetCollect( _T("RecvMobile") , strMobile2 ); pAdoRS->GetCollect( _T("RecvName") , strRecvName ); pAdoRS->GetCollect( _T("SWTID") , lSWTID ); pAdoRS->GetCollect( _T("WYID") , lWYID ); if ( strMobile1 == CString(sms.szSendNum) ) //Ϊ�ͻ��ظ��Ķ��� { if (isMobileNum(strMobile2)) //ͨ���ֻ�ת�� { SubmitData data={0}; data.lCorpID = lCorpID; data.lUserID = lUserID; _tcscpy(data.szSendNum,szAddNum); _tcscpy(data.szMobile , strMobile2 ); _tcscpy(data.szMsg , sms.szMsg ); data.lItem = 100; //�д˱�־����Ҫ��ǩ������ SubmitSms( data,pAdoRS2,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } //��¼������ͨ�� strSelect.Format( _T("insert into SWT_Log (CorpID,UserID,SWTID,WYID,SendMobile,RecvName,RecvMobile,Type,Msg,SubTime) values (%d,%d,%d,%d,'%s','%s','%s',0,'%s',GETDATE())"), lCorpID,lUserID,lSWTID,lWYID,strMobile1,strRecvName,strMobile2,strTempMsg); pAdoRS->Open(strSelect); } if ( strMobile2 == CString(sms.szSendNum) ) //Ϊ�ظ����ͻ��Ķ��� { if (isMobileNum(strMobile1)) //ͨ���ֻ�ת�� { SubmitData data={0}; data.lCorpID = lCorpID; data.lUserID = lUserID; _tcscpy(data.szSendNum,szAddNum); _tcscpy(data.szMobile , strMobile1 ); _tcscpy(data.szMsg , sms.szMsg ); data.lItem = 100; //�д˱�־����Ҫ��ǩ������ SubmitSms( data,pAdoRS2,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } //��¼������ͨ�� strSelect.Format( _T("insert into SWT_Log (CorpID,UserID,SWTID,WYID,SendMobile,RecvName,RecvMobile,Type,Msg,SubTime) values (%d,%d,%d,%d,'%s','%s','%s',4,'%s',GETDATE())"), lCorpID,lUserID,lSWTID,lWYID,strMobile1,strRecvName,strMobile2,strTempMsg); pAdoRS->Open(strSelect); } } } } */ if ( data.lUserID==DEFAULT_SEND_USERID ) //�ط������ { COleDateTime t=COleDateTime::GetCurrentTime()-COleDateTimeSpan(1,0,0,0); strSelect.Format(_T("select * from corp_bz where LXRMobile='%s' and NRType=1 and SendSms=1 and SmsRetType=0 and CreateTime>'%04d%02d%02d %02d:%02d' order by CreateTime desc") , sms.szSendNum , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute() ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { long lBZID=0; pAdoRS->GetCollect( _T("BZID") , lBZID ); long lRetType=_ttol(data.szMsg); if (lRetType>9 ) { strSelect.Format(_T("%d") , lRetType ); lRetType = _ttol(strSelect.Left(1)); } if ( lRetType<1 || lRetType>3 ) lRetType=0; strSelect.Format( _T("update corp_bz set SmsRetType='%d' , SmsRetMsg='%s' where BZID=%d") , lRetType,strTempMsg,lBZID); pAdoRS->Open(strSelect); } } return true; } catch(...) { LOG_APPERROR(_T("T")); return false; } } long CSendThread::SubmitSms(SubmitData &SendData,CAdoRecordSet * pAdoRS,CAdoRecordSet * pAdoRS2,CSmsCenterDlg * pSMSDlg,long lMobileType,long lSmsType,long lSmsKF) { #ifdef SMSCENTER_ADC_TEMP //��ʱ����ƽ̨�����ܷ��Ͷ��� return false; #endif try { if (SendData.lPrority == 876534 && CString(SendData.szName).MakeLower() == CString(_T("WxWork")).MakeLower()) //������ҵ�ŵ����� { CString strPT = _T("ƽ̨1"); #ifdef SMSCENTER_TWO //�ڶ�����ƽ̨ strPT = _T("ƽ̨2"); #endif #ifdef SMSCENTER_THREE //��������ƽ̨ strPT = _T("ƽ̨3"); #endif CString strSelect; SYSTEMTIME t; GetLocalTime(&t); strSelect.Format(_T("%s %04d.%02d.%02d %02d:%02d:%02d<br>%s"), strPT, t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, SendData.szMsg); REQ_WxWork_Send send; send.strSender = _T("ƽ̨֪ͨ"); send.strRecver = SendData.szMobile; send.strMsg = strSelect; pSMSDlg->m_WxWorkSend.AddTail(send); return 0; } TCHAR szSmsTD[32]={0}; TCHAR szCM[64]={0}; //ȡ��ҵǩ�� CString strSelect; if ( SendData.lUserID != 0 ) //���UserID==0��������ҵת�� { strSelect.Format( _T("select * from users with(nolock) where UserID=%d") , SendData.lUserID ); BOOL b = pAdoRS->Open( strSelect ); if ( b && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("CM2") , szCM ); } } strSelect.Format( _T("select * from corp with(nolock) where CorpID=%d") , SendData.lCorpID ); BOOL b = pAdoRS->Open( strSelect ); if ( b && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("SMSTD") , szSmsTD ); _tcscat(szSmsTD,_T("000000")); //ȡ�ö���ͨ�� if ( _tcslen(szCM)<=0 ) pAdoRS->GetCollect(_T("CM") , szCM ); } long lMaxSendLenB = MSG_MAXSENDLEN; long lZDCMLen = 0; #if defined(SMSCENTER_NX) && defined(SMSCENTER_GDDX) //ũ���Դ�ǩ��6���� lZDCMLen = 6; #endif #if defined(SMSCENTER_NX) && defined(SMSCENTER_DGSB) //�籣�ֵ�ǩ��������7���� lZDCMLen = 8; #endif #ifdef SMSCENTER_DGSB_SGYD lZDCMLen = 0; #endif ANS_GetTD2Data td={0}; if ( CSendPub::GetTDPro(pAdoRS,szSmsTD,td,MOBILE_TYPE_CMCC)) //ȡ����ҵ�����õ�ͨ�����ԣ����Ƿ�Ҫ�������� { if ( td.lContentLen>10 && td.lContentLen<70 ) lZDCMLen = MSG_MAXSENDLEN-td.lContentLen; } lMaxSendLenB = lMaxSendLenB-lZDCMLen; long lSignLen = 0; if ( SendData.lItem != 101 && _tcslen(szCM)>0) //��ϢԴ������ǩ�� { #ifdef UNICODE lSignLen = _tcslen(szCM); #else lSignLen = MultiByteToWideChar( CP_ACP,NULL,szCM,_tcslen(szCM), NULL,0); #endif if ( lSignLen>0 ) lSignLen = lSignLen+2; //�������� } long lMobileCount=0; if ( SendData.lMobileCount<=0 || SendData.lMobileCount>SubmitData_Mobile_Max) //���MobileCount<0,Ϊ�ɰ�Ķ��ŷ��ͣ���Ϊ�°� { SendData.lMobileCount=1; _tcscpy(SendData.Mobile[0].szName , SendData.szName); _tcscpy(SendData.Mobile[0].szMobile , SendData.szMobile); } lMobileCount = SendData.lMobileCount * 16; //ÿ���������16������ ANS_SendData2 * pSmsData = new ANS_SendData2[lMobileCount]; memset(pSmsData , 0 , sizeof(ANS_SendData2)*lMobileCount); srand(::GetTickCount()); long lMobileIndex = 0; for (int j=0 ; j< SendData.lMobileCount ; j++ ) { pSmsData[lMobileIndex].lCorpID = SendData.lCorpID; pSmsData[lMobileIndex].lUserID = SendData.lUserID; _tcscpy( pSmsData[lMobileIndex].szMobile , SendData.Mobile[j].szMobile ); _tcscpy( pSmsData[lMobileIndex].szName , SendData.Mobile[j].szName ); CString strNewMsg = SendData.szMsg; //ȡ�µĶ������ݣ���Ϊ��������ע��Ϣ��ÿ�����ݾ��п��ܲ�ͬ try { if ( SendData.Mobile[j].pMsg && SendData.Mobile[j].pMsg->GetLength()>0 ) { strNewMsg = *SendData.Mobile[j].pMsg; } } catch(...) { LOG_APPERROR(_T("T")); } //�Ƚ����ݷֶ� //����ֶ� CStringArray saMsg; //�ж��Ƿ���Ҫ�ֶη��� TCHAR szSrcMsg[2048]={0}; _tcscpy(szSrcMsg , strNewMsg); long lMsgAll=0; long lMsgIndex = 1; BOOL bGetMsg2; TCHAR szSendMsg1[512]={0}; TCHAR szSendMsg2[512]={0}; long lMsgLen =0; #ifdef UNICODE lMsgLen = _tcslen(szSrcMsg); #else lMsgLen = MultiByteToWideChar( CP_ACP,NULL,szSrcMsg,_tcslen(szSrcMsg), NULL,0); #endif //�ж��Ƿ��Գ����ŷ�ʽ���� BOOL bLongSms=false; long lRand=0; //����������������� long lMaxSendLen = lMaxSendLenB; if ( lMsgLen+lSignLen>lMaxSendLen && SendData.lItemID!=102) //102,ǿ�Ʒdz����� { if (SendData.lItem != 101 && _tcslen(szCM)>0) //�����ţ��������ݼ���ǩ�� { /* _tcscat(szSrcMsg , _T("��")); _tcscat(szSrcMsg , szCM ); _tcscat(szSrcMsg , _T("��")); */ //����ǩ��ǰ�� CString strSrcMsg22; strSrcMsg22.Format(_T("��%s��%s"), szCM, szSrcMsg); _tcscpy(szSrcMsg, strSrcMsg22); } bLongSms = true; } if ( bLongSms ) //������dz����� { lMaxSendLen = MSG_MAXSENDLEN-3; //�����ţ�Ĭ�϶���67���� } else { lMaxSendLen = lMaxSendLen-lSignLen; } while ( true ) { memset( szSendMsg2 , 0 , sizeof(szSendMsg2) ); //if ( isChinese( szSrcMsg,_tcslen(szSrcMsg) ) ) //{ bGetMsg2 = GetSpiltUnicodeMsg( szSrcMsg , szSendMsg1 , lMsgIndex , lMaxSendLen ,lMsgAll); //} //else //{ // bGetMsg2 = GetSpiltAsciiMsg( szSrcMsg , szSendMsg2 , lMsgIndex , MSG_MAXSENDLEN*2+MSG_MAXSENDLEN*2/7 ,lMsgAll); //} if ( bGetMsg2 ) { if ( bLongSms ) { saMsg.Add(szSendMsg1); } else { if (SendData.lItem != 101 && _tcslen(szCM)>0) //�����ţ��������ݼ���ǩ�� { /* _tcscat(szSendMsg1 , _T("[")); _tcscat(szSendMsg1 , szCM ); _tcscat(szSendMsg1 , _T("]")); */ //����ǩ��ǰ�� CString strSrcMsg22; strSrcMsg22.Format(_T("��%s��%s"), szCM, szSendMsg1); _tcscpy(szSendMsg1, strSrcMsg22); } saMsg.Add(szSendMsg1); } } else { break; } lMsgIndex ++; } if ( lZDCMLen >0 ) //���Դ�ǩ�� { if ( bLongSms && saMsg.GetSize()>0) { strSelect = saMsg.GetAt(saMsg.GetSize()-1); //���һ������ #ifdef UNICODE lMsgLen = _tcslen(strSelect); #else lMsgLen = MultiByteToWideChar( CP_ACP,NULL,strSelect,_tcslen(strSelect), NULL,0); #endif if ( lMsgLen>lMaxSendLen-lZDCMLen ) { saMsg.Add(CString(_T(""))); //�Ӷ�һ����������ǩ�� } } } long lZDSmsCount=saMsg.GetSize() * SendData.lMobileCount; //����Ӧ�ÿ۷����� long lKF=1; /* //�ճ��������ʼ�֪ͨ��һ����2���� if ( lSmsType == SMSTYPE_ALARM || lSmsType == SMSTYPE_EMAIL ) { lZDSmsCount = lZDSmsCount*2; lKF = 2; } if ( lSmsType == SMSTYPE_SP ) //��ֵҵ��Ŀ۷� { lZDSmsCount = lZDSmsCount*lSmsKF; lKF = lSmsKF; } */ if ( lMsgAll<0 || lMsgAll>15 ) { continue; } lMsgAll = saMsg.GetSize(); lRand = rand()%254; if ( lRand<0 ) lRand=-lRand; for ( int h=1 ; h<=lMsgAll ; h++ ) { if ( h>1 ) { pSmsData[lMobileIndex] = pSmsData[lMobileIndex-1]; //�������ݵ�����������������⸴��ǰһ��������������� } if ( bLongSms ) { _stprintf( pSmsData[lMobileIndex].szMsg , _T("����%02X%X%X:%s") , lRand,lMsgAll,h,saMsg.GetAt(h-1)); } else { _tcscpy(pSmsData[lMobileIndex].szMsg , saMsg.GetAt(h-1) ); } pSmsData[lMobileIndex].tOvrTime.wSecond = lRand; pSmsData[lMobileIndex].tOvrTime.wDayOfWeek =(WORD)(h*100+lMsgAll); lMobileIndex ++; if ( lMobileIndex >= lMobileCount ) break; } if ( lMobileIndex >= lMobileCount ) break; } CSendPub::SendPub_Mms Sms={0}; Sms.lCorpID = SendData.lCorpID; Sms.lUserID = SendData.lUserID; //_tcscpy(Sms.szIP , m_szIP); Sms.lPriority = SendData.lPrority; //Sms.lPriority = 0; //��SubmitMms�������ȼ� //Sms.lSendCount = m_dwSendCount; //�ܶ��ŷ����������ڼ��㷢������ Sms.tTimer = SendData.tTimer; Sms.bFirstCheckYE = true; //Ԥ�ȼ��������ʱ������ CString strErrMsg; long lRet = CSendPub::SubmitSms(Sms, pSmsData,lMobileIndex,strErrMsg,pAdoRS,pAdoRS2); delete pSmsData; return lRet; } catch (...) { LOG_APPERROR(_T("T")); } return -1; } BOOL CSendThread::SplitNum(TCHAR *pCorp, TCHAR *pMan) { TCHAR szBuf[32]={0}; _tcscpy( szBuf , pCorp ); #ifdef SMSCENTER_ADC memcpy(pCorp , szBuf , 4); //adc�����ط���Ϊ4λ _tcscpy(pMan , szBuf+4 ); pCorp[4]=0; pMan[3]=0; return true; #endif #ifdef SMSCENTER_TWO if ( szBuf[0] >= '0' && szBuf[0] <= '3' ) { memcpy( pCorp , szBuf , 2 ); //2λ _tcscpy( pMan , szBuf+2 ); //3λ pCorp[2]=0; pMan[3]=0; return true; //��һ�� } if ( szBuf[0] >= '4' && szBuf[0] <='5') { memcpy( pCorp , szBuf , 4 ); //3λ _tcscpy( pMan , szBuf+4 ); pCorp[4]=0; pMan[2]=0; return true; //��һ�� } if ( szBuf[0] >= '6' && szBuf[0] <='8') { memcpy( pCorp , szBuf , 1 ); //3λ _tcscpy( pMan , szBuf+1 ); pCorp[1]=0; pMan[3]=0; return true; //��һ�� } if ( szBuf[0] == '9' ) { memcpy( pCorp , szBuf , 5 ); //3λ _tcscpy( pMan , szBuf+5 ); pCorp[5]=0; pMan[1]=0; return true; //��һ�� } return false; #else if ( szBuf[0] >= '0' && szBuf[0] <='3' ) { memcpy( pCorp , szBuf , 3 ); //3λ _tcscpy( pMan , szBuf+3 ); pCorp[3]=0; pMan[3]=0; return true; //��һ�� } #endif if ( szBuf[0] == '5' ) //�����ٴ��û� { memcpy( pCorp , szBuf , 6 ); //3λ _tcscpy( pMan , szBuf+6 ); pCorp[6]=0; pMan[2]=0; return true; //��һ�� } if ( szBuf[0] >= '4' && szBuf[0] <='8') { memcpy( pCorp , szBuf , 4 ); //3λ _tcscpy( pMan , szBuf+4 ); pCorp[4]=0; pMan[2]=0; return true; //��һ�� } if ( szBuf[0] == '9' ) { memcpy( pCorp , szBuf , 5 ); //3λ _tcscpy( pMan , szBuf+5 ); pCorp[5]=0; pMan[1]=0; return true; //��һ�� } /* //����ͨר�� if ( szBuf[0] == '*' && szBuf[1] == '*' && szBuf[2] == '8' && szBuf[3] <='2' ) { memcpy( pCorp , szBuf , 4 ); //1λ _tcscpy( pMan , szBuf+4 ); pCorp[4]=0; pMan[1]=0; return true; //��һ�� } if ( szBuf[0] == '*' && szBuf[1] == '2' ) { memcpy( pCorp , szBuf , 2 ); //1λ _tcscpy( pMan , szBuf+2 ); pCorp[2]=0; pMan[1]=0; return true; //��һ�� } */ if ( szBuf[0] == '*' && szBuf[1] == '*' && szBuf[2] >= '0' && szBuf[2] <='3' ) { memcpy( pCorp , szBuf , 3 ); //1λ _tcscpy( pMan , szBuf+3 ); pCorp[3]=0; pMan[3]=0; return true; //��һ�� } if ( szBuf[0] == '*' && szBuf[1] == '*' && ( (szBuf[2] >= '4' && szBuf[2] <='6') || szBuf[2] =='8') ) { memcpy( pCorp , szBuf , 4 ); //1λ _tcscpy( pMan , szBuf+4 ); pCorp[4]=0; pMan[3]=0; return true; } if ( szBuf[0] == '*' && szBuf[1] == '*' && (szBuf[2] == '7' || szBuf[2] =='9') ) { memcpy( pCorp , szBuf , 5 ); //1λ _tcscpy( pMan , szBuf+5 ); pCorp[5]=0; pMan[3]=0; return true; } if ( szBuf[0] == '*' && szBuf[1] >= '0' && szBuf[1] <='3' ) { memcpy( pCorp , szBuf , 2 ); //1λ _tcscpy( pMan , szBuf+2 ); pCorp[2]=0; pMan[3]=0; return true; //��һ�� } if ( szBuf[0] == '*' && szBuf[1] =='6' ) { memcpy( pCorp , szBuf , 2 ); //1λ _tcscpy( pMan , szBuf+2 ); pCorp[2]=0; pMan[3]=0; return true; //��һ�� } if ( szBuf[0] == '*' && szBuf[1] >= '4' && szBuf[1] <='6' ) { memcpy( pCorp , szBuf , 3 ); //1λ _tcscpy( pMan , szBuf+3 ); pCorp[3]=0; pMan[3]=0; return true; } if ( szBuf[0] == '*' && szBuf[1] >= '7' && szBuf[1] <='9' ) { memcpy( pCorp , szBuf , 4 ); //1λ _tcscpy( pMan , szBuf+4 ); pCorp[4]=0; pMan[3]=0; return true; } return false; } DWORD CSendThread::Recv_Sms_UpSms(LPVOID pParam) { try { UpSmsS sms={0}; UpSmsS * pSms = (UpSmsS *)(pParam); sms = *pSms; delete pSms; CString strURL; CString strTemp; HINTERNET hNet = NULL; strTemp.Format(_T("UPSMS%d"),rand()); hNet = InternetOpen(strTemp,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); if ( !hNet ) { return -1; } DWORD dwTimeOut=20*1000; InternetSetOption(hNet,INTERNET_OPTION_CONNECT_TIMEOUT,&dwTimeOut,sizeof(dwTimeOut)); InternetSetOption(hNet,INTERNET_OPTION_SEND_TIMEOUT,&dwTimeOut,sizeof(dwTimeOut)); InternetSetOption(hNet,INTERNET_OPTION_RECEIVE_TIMEOUT,&dwTimeOut,sizeof(dwTimeOut)); strURL.Format( _T("%s?Type=MO&CorpID=%d&SendNum=%s&RecvNum=%s&AddNum=%s&Msg=%s"),sms.szUrl,sms.lCorpID,sms.szSendNum,sms.szRecvNum,sms.szAddNum,sms.szMsg); HINTERNET hUrl = InternetOpenUrl(hNet,strURL,NULL,0,INTERNET_FLAG_RELOAD,0); if ( hUrl ) { /* char buffer[1024]={0} ; DWORD dwBytesRead = 0; BOOL bRead = ::InternetReadFile(hUrl, buffer, sizeof(buffer), &dwBytesRead); */ ::InternetCloseHandle(hUrl); } ::InternetCloseHandle(hNet); } catch(...) { LOG_APPERROR(_T("T")); } return 0; } /* BOOL CSendThread::SetSmsAddOne(CAdoRecordSet *pAdoRS, long lCorpID, long lUserID, long lKF, const TCHAR *pRecvStatus,long lSendRet,BOOL bAdc) { BOOL b; CString strSelect; if ( lKF<=0 || lKF>50 ) lKF = 1; //��Ϊ״̬���淵��ʧ�ܣ����Կ۷Ѳ��ɹ� //��Ϊ����ʧ�ܣ����ö���Ӧ��1,�ѷ����ż�1 if ( lSendRet>=100000 ) //SendRetΪ��ҵID�����ƶ�ҵ���۷� { } else { if ( bAdc ) strSelect.Format( _T("update corp set MQ_SmsUsed=MQ_SmsUsed+%d,MQ_SmsSendAll=MQ_SmsSendAll-%d where CorpID=%d ") ,1,1,lCorpID ); //adcֻ�۷�1�� else #ifdef SMSCENTER_NX strSelect.Format( _T("update corp set SmsUsed=SmsUsed+%d,SmsSendAll=SmsSendAll-%d,Day_ReportFail=Day_ReportFail+%d where CorpID=%d ") ,lKF,lKF,lKF,lCorpID ); #else strSelect.Format( _T("update corp set SmsUsed=SmsUsed+%d,SmsSendAll=SmsSendAll-%d where CorpID=%d ") ,lKF,lKF,lCorpID ); #endif b = pAdoRS->Open( strSelect ); } //�û����ż�1 strSelect.Format( _T("update users set SMSUsed=SMSUsed+%d where UserID=%d AND SMSUsed != -100 ") , lKF,lUserID ); b = pAdoRS->Open( strSelect ); //�ѷ����ż�1 strSelect.Format( _T("update users set SmsSendAll=SmsSendAll-%d where UserID=%d ") ,lKF,lUserID ); b = pAdoRS->Open( strSelect ); //��������������� if ( pRecvStatus[0] == 'A' ) { long lAgentID=0; long lAgentType=0; //ȡ������ID strSelect.Format( _T("select * from corp with (nolock) where corpid=%d") , lCorpID ); if ( pAdoRS->Open( strSelect ) && !pAdoRS->IsEOF() ) { //pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("AgentID") , lAgentID ); pAdoRS->Close(); if ( lAgentID > 0 ) { //ȡ��������Ϣ strSelect.Format( _T("select * from agent with (nolock) where agentID=%d") , lAgentID ); if ( pAdoRS->Open( strSelect ) && !pAdoRS->IsEOF() ) { //pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("Type") , lAgentType ); pAdoRS->Close(); if ( lAgentType ==2 ) //���������� { strSelect.Format( _T("Update agent set used=used+%.2f where agentid=%d"),lKF*0.10f,lAgentID); pAdoRS->Open( strSelect ); pAdoRS->Close(); } } } } } return true; } BOOL CSendThread::SetSmsAddOne(CAdoRecordSet *pAdoRS, long lSendID,long lType) { CString strSelect; if ( lType ==2 ) strSelect.Format( _T("select * from corpsmsm.dbo.smssendt with (nolock) where SendID=%d") , lSendID); else strSelect.Format( _T("select * from smssend with (nolock) where SendID=%d") , lSendID); BOOL b =pAdoRS->Open( strSelect ); if ( b && !pAdoRS->IsEOF() ) { long lCorpID=0; long lUserID=0; long lKF=0; BOOL bAdc=false; long lSendRet=0; #ifdef SMSCENTER_ADC long lRecvNumType=0; long lStatus=0; long lSendFCS=0; #endif TCHAR szRecvStatus[32]={0}; //pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("CorpID") , lCorpID ); //ȡ�÷���ID pAdoRS->GetCollect( _T("UserID") , lUserID ); //ȡ�÷���ID pAdoRS->GetCollect( _T("KF") , lKF ); //ȡ�÷���ID pAdoRS->GetCollect( _T("RecvStatus") , szRecvStatus ); pAdoRS->GetCollect( _T("SendRet") , lSendRet ); #ifdef SMSCENTER_ADC pAdoRS->GetCollect( _T("Status") , lStatus ); //ȡ�÷���ID pAdoRS->GetCollect( _T("RecvNumType") , lRecvNumType ); //ȡ�÷���ID pAdoRS->GetCollect( _T("SendFCS") , lSendFCS ); if ( lStatus>=10 ) { if ( lRecvNumType==0 && lSendFCS==0 ) bAdc=true; } else { if ( lRecvNumType==0 && lSendRet==0 ) bAdc=true; } #endif if ( lKF<=0 || lKF>50 ) lKF = 1; return SetSmsAddOne(pAdoRS,lCorpID,lUserID,lKF,szRecvStatus,lSendRet,bAdc); } return false; } */ BOOL CSendThread::Recv_Mms(MmsRecv mms, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, CSmsCenterDlg *pSMSDlg) { try { CString str; CString strAllNum = mms.szRecvNum; CString strExTFH; CString strExCorpNum; CString strCorpNum; CString strUserNum; CString strExNum; CString strGroupID; CString strSender; CString strRecver; CString strProv,strCity; long lCorpID=0; long lUserID=0; long lTFHBegin=0; //��ͨ��ID CString strTDNum; long lLen = strAllNum.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strTDNum = strAllNum.Left(i); //����ʼ��λ�ж��Ƿ�Ϊ�ط��� str.Format(_T("select * from TD2 where Ability=1 and AccessPort='%s'") , strTDNum ); if (strTDNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { lTFHBegin = i; break; } } if ( lTFHBegin>0 ) { strExTFH = strAllNum.Right(strAllNum.GetLength()-lTFHBegin); //�ų����ط��ź�ʣ�µĺ��� //��ѯ��ҵID long lLen = strExTFH.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strCorpNum = strExTFH.Left(i); //���ҿ�ʼ��λ�ж��Ƿ���ҵ�ط��� str.Format(_T("select * from Corp with(nolock) where SMSNum='%s'") , strCorpNum ); if (strCorpNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("CorpID") , lCorpID ); break; } } //�����û�ID if (lCorpID>0 ) { strExCorpNum = strExTFH.Right(strExTFH.GetLength()-strCorpNum.GetLength()); //�ų���ҵ�ط��ź�ʣ�µĺ��� long lLen = strExCorpNum.GetLength(); for ( int i=lLen; i>=0 ; i-- ) { strUserNum = strExCorpNum.Left(i); //���ҿ�ʼ��λ�ж��Ƿ���ҵ�ط��� str.Format(_T("select * from Users with(nolock) where CorpID=%d and SMSNum='%s'") , lCorpID , strUserNum ); if (strUserNum.GetLength()>0 && pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("UserID") , lUserID ); pAdoRS->GetCollect(_T("Name") , strRecver ); pAdoRS->GetCollect(_T("GroupID") , strGroupID ); break; } } } strExNum = strExTFH.Right(strExTFH.GetLength()-strCorpNum.GetLength()-strUserNum.GetLength()); } /* //���յ��Ķ���ת����һ����ҳ�� if ( lCorpID2>0 && _tcslen(szUpSms) >0 && bSubmitSms ) { UpSmsS * pUpSms = new UpSmsS; _tcscpy(pUpSms->szSendNum , data.szSendNum ); _tcscpy(pUpSms->szRecvNum , data.szRecvNum ); _tcscpy(pUpSms->szMsg , data.szMsg ); _tcscpy(pUpSms->szUrl , szUpSms ); pUpSms->tSendTime = data.tSendTime; //�����߳̽��д��� ::AfxBeginThread((AFX_THREADPROC)UpSms,(LPVOID)pUpSms,THREAD_PRIORITY_BELOW_NORMAL); } */ //��ѯ���Ź����� long lMobileType=MOBILE_TYPE_UNKNOW; strSender = CSendPub::GetMobileProvCity(pAdoRS2,mms.szSendNum,lMobileType,strProv,strCity); //��ֹ'��������� CString strTempTitle = mms.szTitle; strTempTitle.Replace(_T("'"),_T("''")); //�����һ�ݵ�smsrecvlog���� str.Format( _T("insert into MmsRecvLog(corpid,userid,MmsFileID,groupid,Sender,sendnum,recver,recvnum,AddNum,recvnumtype,Title,mmSize,subtime) values (%d,%d,%d,'%s','%s','%s','%s','%s','%s',%d,'%s',%d,GetDate()) ") , lCorpID, lUserID, mms.lMmsFileID, strGroupID, strSender, mms.szSendNum, strRecver, mms.szRecvNum, strExNum, lMobileType, strTempTitle, mms.lmmSize ); BOOL b = pAdoRS->Open(str); pAdoRS->Close(); if ( b ) { //ȡSendID long lSendID=0; str = _T("SELECT SCOPE_IDENTITY()") ; if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( (long)0 , lSendID ); str.Format( _T("insert into corpsmsm.dbo.MmsSend (SendID,CorpID,UserID,MmsFileID,GroupID,Status,Sender,SendNum,RecvNum,RecvNumType,Recver,Title,mmSize,MsgType,SubTime,SendTime,RecvTime,RecvStatus,KF) values (%d,%d,%d,%d,'%s',%d,'%s','%s','%s',%d,'%s','%s',%d,%d,GetDate(),GetDate(),GetDate(),'%s',0) ") , lSendID, lCorpID, lUserID, mms.lMmsFileID, strGroupID, SEND_STATUS_RECV_OK, strSender, mms.szSendNum, mms.szRecvNum, lMobileType, strRecver, strTempTitle, mms.lmmSize, SMSTYPE_RECV, strExNum); pAdoRS->Open( str ); pAdoRS->Close(); //�յ����ţ�֪ͨ�����ӵ��û� //SmsSendData * psms = new SmsSendData; //*psms = data; //_tcscpy( psms->szMsg , sms.szMsg ); //pSMSDlg->On_User_PushMsg( SMS_PUSH , (WPARAM)psms , 0 ); /* if ( bSubmitSms ) { pSMSDlg->SocketPushMsg(pAdoRS, data,strProv,strCity ); } */ } } return TRUE; } catch(...) { LOG_APPERROR(_T("T")); } return false; } BOOL CSendThread:: ProcessUp(CSmsCenterDlg * pSMSDlg,DWORD dwType,long lMobileType,SmsSendData sms , CAdoRecordSet * pAdoRS, CAdoRecordSet * pAdoRS2,CAdoRecordSet * pAdoRS3,BOOL bReportNumber,long lCorpID,long lUserID,long lTDMode,CString strSName) { CString strSelect; CString strTemp; SubmitData Quitdata={0}; Quitdata.lCorpID = DEFAULT_SEND_CORPID; Quitdata.lUserID = DEFAULT_SEND_USERID; _tcscpy( Quitdata.szName , _T("ZF") ); //_tcscpy( Quitdata.szSendNum , sms.szRecvNum ); _tcscpy( Quitdata.szMobile , sms.szSendNum ); TCHAR szMsg[512]={0}; _tcscpy(szMsg , sms.szMsg ); ExChar(szMsg,_T("\r")); ExChar(szMsg,_T("\n")); ExChar(szMsg,_T(" ")); ExChar(szMsg,_T("��")); ExChar(szMsg,_T(":")); _tcsupr(szMsg); //ת��д //�ж��Ƿ�Ϊֹͣ��ͨ���� long lCorpID2 = lCorpID; long lCorpID3 = lCorpID; long lUserID2 = lUserID; long lUserID3 = lUserID; if ( lUserID2 <= 10000000 ) lUserID2 = -1; if ( lCorpID3 <100000 ) { lCorpID3 = DEFAULT_SEND_CORPID; //Ĭ��ʹ�ù�˾���ʺŷ��� lUserID3 = DEFAULT_SEND_USERID; lCorpID2 = -1; lUserID2 = -1; } if ( (!_tcsncmp(szMsg , _T("TD"),_tcslen(_T("TD")) )) || //5��0Ϊȡ��ҵ�� (!_tcsncmp(szMsg , _T("0000"),_tcslen(_T("0000")) ) ) || (!_tcscmp(szMsg , _T("N") ) ) || (!_tcscmp(szMsg, _T("R"))) || //2023 (!_tcscmp(szMsg, _T("T")))) //5��0Ϊȡ��ҵ�� { if (lCorpID2 < 100000) //��ȡ��ҵ���ͼ�¼������-1�ĺ����� { strSelect.Format(_T("select top 1 * from corpsmsm.dbo.smssend with(nolock) where recvnum='%s' and SendNum like '%s%%' order by sendtime desc"), sms.szSendNum, sms.szRecvNum); if (pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { pAdoRS->GetCollect(_T("CorpID"), lCorpID2); pAdoRS->GetCollect(_T("UserID"), lUserID2); } } //strSelect.Format( _T("insert into back (CorpID,UserID,Mobile,AddTime,BZ) values(%d,%d,'%s',GETDATE(),'�Է�00000ȡ��ҵ��!')"),lCorpID2,lUserID2,sms.szSendNum ); strSelect.Format( _T("insert into back (CorpID,UserID,Mobile,AddTime,BZ) values(%d,-1,'%s',GETDATE(),'�Է�00000ȡ��ҵ��!')"),lCorpID2,sms.szSendNum ); //��ȷ����ҵ //strSelect.Format( _T("insert into back (CorpID,UserID,Mobile,AddTime,BZ) values(-1,-1,'%s',GETDATE(),'�Է�00000ȡ��ҵ��!')"),sms.szSendNum ); //ȫ�� pAdoRS->Open( strSelect ); pAdoRS->Close(); if (lCorpID2 >= 100000) lCorpID3 = lCorpID2; if (lUserID2 >= 10000000) lUserID3 = lUserID2; /* if (lCorpID2>0 ) //������ͨ��,��Ҫɾ�������� { strSelect.Format( _T("delete from white2 where Mobile='%s' and CorpID=%d") , sms.szSendNum , lCorpID2 ); pAdoRS->Open(strSelect); pAdoRS->Close(); } */ if ( lCorpID3>0 && lCorpID3>0 ) { Sleep(2000); //��ʱ����ֹ״̬����Ľ��ղ��� //���Ͷ��� SubmitData data={0}; data.lCorpID = lCorpID3; data.lUserID = lUserID3; //data.lItem = 101; _tcscpy(data.szMobile,sms.szSendNum); //_stprintf( data.szMsg , _T("�ѳɹ���������%s����Ϣ��") , sms.szRecvNum); _stprintf( data.szMsg , _T("���ѳɹ���������%s�Ķ��ţ��ٴο�ͨ����%s�Ķ����뷢��11111��%s��") ,strSName,strSName,sms.szRecvNum); //_stprintf( data.szMsg , _T("���û�������ȡ�������������յ������ǽ��������������������Ϣ��������������µ�02033242290ȡ����[%s]") ,szSName); SubmitSms( data,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } #ifdef SMSCENTER_GDDX if ( !_tcsncmp(szMsg , _T("DG"),_tcslen(_T("DG")) ) ) //5��0Ϊȡ��ҵ�� #else if ( !_tcsncmp(szMsg , _T("1111"),_tcslen(_T("1111")) ) ) //5��0Ϊȡ��ҵ�� #endif { //if ( lCorpID2>0 ) // strSelect.Format( _T("delete from back where Mobile='%s' and CorpID=%d"),sms.szSendNum,lCorpID2); //else strSelect.Format( _T("delete from back where Mobile='%s' "),sms.szSendNum); pAdoRS->Open( strSelect ); pAdoRS->Close(); if (lTDMode==1 && lCorpID2>0 ) //������ͨ��,��Ҫ��������� { strSelect.Format( _T("select * from white2 with (index(White2_Mobile),nolock ) where Mobile='%s' and CorpID=%d") , sms.szSendNum , lCorpID2 ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { //�Ѵ��ڼ�¼ long lWhiteID=0; pAdoRS->GetCollect(_T("WhiteID") , lWhiteID ); strSelect.Format( _T("update white2 set Status=%d where WhiteID=%d") ,1, lWhiteID ); pAdoRS->Open(strSelect); pAdoRS->Close(); } else { //�����µİ�������¼ strSelect.Format(_T("insert into White2 (CorpID,Mobile,AddTime,Status) values (%d,'%s',GetDate(),%d)") ,lCorpID2, sms.szSendNum ,1); pAdoRS->Open(strSelect); pAdoRS->Close(); } } if ( lCorpID3>0 && lCorpID3>0 ) { Sleep(2000); //��ʱ����ֹ״̬����Ľ��ղ��� //���Ͷ��� SubmitData data={0}; data.lCorpID = lCorpID3; data.lUserID = lUserID3; //data.lItem = 101; _tcscpy(data.szMobile,sms.szSendNum); //_stprintf( data.szMsg , _T("�ѳɹ���������%s����Ϣ��") , sms.szRecvNum); _stprintf(data.szMsg, _T("�����ٴο�ͨ�������Ϣ���չ��ܣ���ֹ���ո���Ϣ�뷢��00000��%s��"), sms.szRecvNum); //_stprintf( data.szMsg , _T("�����ٴο�ͨ�������Ϣ���չ��ܣ���ֹ���ո���Ϣ�뷢��00000��%s��[%s]") , sms.szRecvNum,strSName); SubmitSms( data,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } //�����յ��������ж��Ƿ����ڶ��Ų�ѯ���û� if ( lCorpID2 >0 ) //��������������ҵ�����в�ѯ { BOOL bQueryData=false; CString strCmd2=szMsg; strCmd2.Replace( _T("'") , _T("''")); if ( lUserID2 >0 ) strSelect.Format( _T("select * from Query where CorpID=%d and UserID=%d and Cmd='%s' and Status=1"),lCorpID2,lUserID2,strCmd2 ); else strSelect.Format( _T("select * from Query where CorpID=%d and Cmd='%s' and Status=1"),lCorpID2,strCmd2 ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) bQueryData = true; //�����IJ�ѯ��������ѯ���е�Ĭ��ָ�� if (!bQueryData) { if ( lUserID2 >0 ) strSelect.Format( _T("select * from Query where CorpID=%d and UserID=%d and Cmd='*' and Status=1"),lCorpID2,lUserID2 ); else strSelect.Format( _T("select * from Query where CorpID=%d and Cmd='*' and Status=1"),lCorpID2 ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) bQueryData = true; } if ( bQueryData ) { CString strRet; long lQueryID=0; pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("QueryID"), lQueryID ); pAdoRS->GetCollect( _T("UserID") , lUserID2 ); pAdoRS->GetCollect( _T("Ret") , strRet ); pAdoRS->Close(); //��ѯ���Ƿ�ͨ�˲�ѯȨ�� strSelect.Format( _T("select * from users where userid=%d ") , lUserID2 ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { pAdoRS->MoveFirst(); long lSDK = 0; pAdoRS->GetCollect( _T("SDK") , lSDK ); BOOL bQuery = lSDK & SDK_AUTOQUERY ? true:false; if ( bQuery ) { BOOL bAllowQuery=true; //�жϼ�Ȩ���� strSelect.Format( _T("select * from QueryFilt where UserID=%d and mobile='����' and Status=1 and Type=0"),lUserID2); //��ѯ�Ƿ��н�ֹ���� if ( bAllowQuery && pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { bAllowQuery = false; //��ֹ������ } strSelect.Format( _T("select * from QueryFilt where UserID=%d and mobile='%s' and Status=1"),lUserID2 , sms.szSendNum ); if (pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { //pAdoRS->MoveFirst(); pAdoRS->GetCollect(_T("Type"), bAllowQuery ); } if ( bAllowQuery ) { Sleep(2000); //��ʱ����ֹ״̬����Ľ��ղ��� //���Ͷ��� SubmitData data={0}; data.lCorpID = lCorpID2; data.lUserID = lUserID2; data.lSendID = -100; //��Ҫ��ѯ����ID _tcscpy(data.szMobile,sms.szSendNum); _stprintf( data.szMsg , strRet); SubmitSms( data,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� //��ѯ������1 strSelect.Format( _T("update Query set QueryCount=QueryCount+1 where QueryID=%d"),lQueryID); pAdoRS->Open(strSelect); pAdoRS->Close(); //����ѯ�ļ�¼����QueryLog���С� CString strmsg=sms.szMsg; strmsg.Replace( _T("'") , _T("''") ); strSelect.Format( _T("insert into QueryLog(QueryID,CorpID,UserID,SendID,Mobile,RecvMsg,RetMsg,Reader,SendTime) values(%d,%d,%d,%d,'%s','%s','%s',0,GETDATE())"), lQueryID,lCorpID2,lUserID2,data.lSendID, sms.szSendNum,strmsg,strRet); pAdoRS->Open(strSelect); pAdoRS->Close(); strSelect.Format( _T("select top 1 * from QueryLog where UserID=%d order by SendTime desc") , lUserID2 ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { //pAdoRS->MoveFirst(); ANS_QueryLog_Data QueryLog={0}; pAdoRS->GetCollect( _T("QueryLogID") , QueryLog.lQueryLogID ); pAdoRS->Close(); //�յ���ѯ���ţ�֪ͨ�����ӵ��û� //SmsSendData * psms = new SmsSendData; //*psms = data; //_tcscpy( psms->szMsg , sms.szMsg ); //pSMSDlg->On_User_PushMsg( SMS_PUSH , (WPARAM)psms , 0 ); QueryLog.lQueryID = lQueryID; QueryLog.lSendID = data.lSendID; QueryLog.lCorpID = lCorpID2; QueryLog.lUserID = lUserID2; _tcscpy(QueryLog.szMobile,sms.szSendNum); _tcscpy(QueryLog.szRecvMsg,sms.szMsg); _tcscpy(QueryLog.szRetMsg,strRet); ::GetLocalTime(&QueryLog.tSendTime); pSMSDlg->SocketPushQueryLog(pAdoRS, QueryLog ); } } } } } } if ( !bReportNumber ) //���ǹ���Ա���룬����IJ����� return false; if (CString(sms.szRecvNum).MakeUpper() == CString(_T("WxWork")).MakeUpper()) //������ҵ�ŵ����� { _tcscpy(Quitdata.szName, sms.szRecvNum); Quitdata.lPrority = 876534; } if ( dwType&REPORT_MANAGER && !_tcsncmp( szMsg , _T("RESTART"),_tcslen(_T("RESTART")) ) ) { _stprintf( Quitdata.szMsg , _T("�ɹ��յ�%s��������Ϣ%s!") , sms.szSendNum , szMsg ); Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� pSMSDlg->PostMessage( SMS_RESTART , 1 , 0 ); //���� } if (dwType&REPORT_MANAGER && !_tcsncmp( szMsg , _T("REBOOT"),_tcslen(_T("REBOOT")) ) ) { _stprintf( Quitdata.szMsg , _T("�ɹ��յ�%s��ǿ�������������Ϣ%s!") , sms.szSendNum , szMsg ); Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� pSMSDlg->PostMessage( SMS_RESTART , 1 , 0 ); //���� CProcessSocket::Reboot(); //ǿ������ } if (dwType&REPORT_MANAGER && !_tcsncmp( szMsg , _T("QUIT") , _tcslen(_T("QUIT"))) ) { _stprintf( Quitdata.szMsg , _T("�ɹ��յ�%s���˳���Ϣ%s!") , sms.szSendNum , szMsg ); Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� pSMSDlg->PostMessage( SMS_RESTART , 2 , 0 ); //�˳� } if ((dwType&REPORT_MANAGER || dwType&REPORT_CHECKUP ) && !_tcsncmp( szMsg , _T("OFF") , _tcslen(_T("OFF"))) ) { TCHAR szCorpID[512]={0}; _tcscpy( szCorpID,szMsg+3 ); if ( _tcslen(szCorpID)>=8 ) { szCorpID[8]=0; strSelect.Format( _T("select * from users where userid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { //pAdoRS->MoveFirst(); //����Ϊ֪ͨsocket,�������͵Ķ�����Ҳ������ͨ�� Checkup up={0}; pAdoRS->GetCollect( _T("CorpID") , up.lCorpID ); pAdoRS->GetCollect( _T("UserID") , up.lUserID ); up.bCheckup= true; pSMSDlg->SocketPushCheck(up); //ǿ���߳��û� REQ_CloseClient close={0}; close.lUserID = up.lUserID; close.ucUserType = LOGINTYPE_ALL; pSMSDlg->SocketPushClose(pAdoRS2,&close); Sleep(200); long lPurview=0; pAdoRS->GetCollect( _T("Purview"),lPurview ); pAdoRS->Close(); lPurview &= ~(PURVIEW_LOGIN); strSelect.Format( _T("update users set Purview=%d where userid=%d") ,lPurview,_ttol(szCorpID) ); pAdoRS->Open(strSelect); //���ѷ��͵Ķ���ȫ����Ϊ��� strSelect.Format( _T("update smssend set Status=1 where userid=%d and status=0") , _ttol(szCorpID) ); pAdoRS->Open(strSelect); //����ʱ�Ķ���ȫ����Ϊ��� strSelect.Format(_T("update corpsmsm.dbo.smssendT set Status=1 where userid=%d and status=0"), _ttol(szCorpID)); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("�ɹ��������û�IDΪ%s�Ķ��ţ�����δ��������ת����б�!") , szCorpID ); //������־ strTemp.Format( _T("(%s)�ɹ��������û�IDΪ%s�Ķ��ţ�����δ��������ת����б�!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); } else { _stprintf( Quitdata.szMsg , _T("�û�ID:%s�����ڣ�����!") , szCorpID ); } } else { szCorpID[6]=0; strSelect.Format( _T("select * from corp where corpid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { //pAdoRS->MoveFirst(); //����Ϊ֪ͨsocket,�������͵Ķ���Ҳ����ͨ�� Checkup up={0}; pAdoRS->GetCollect( _T("CorpID") , up.lCorpID ); pAdoRS->Close(); up.bCheckup= true; pSMSDlg->SocketPushCheck(up); //ǿ���߳��û� REQ_CloseClient close={0}; close.lUserID = up.lCorpID; close.ucUserType = LOGINTYPE_ALL; pSMSDlg->SocketPushClose(pAdoRS2,&close); Sleep(200); //������ҵ strSelect.Format( _T("update corp set Status=1 where corpid=%d") , _ttol(szCorpID) ); pAdoRS->Open(strSelect); //���ѷ��͵Ķ���ȫ����Ϊ��� strSelect.Format( _T("update smssend set Status=1 where corpid=%d and status=0") , _ttol(szCorpID) ); pAdoRS->Open(strSelect); //����ʱ�Ķ���ȫ����Ϊ��� strSelect.Format(_T("update corpsmsm.dbo.smssendT set Status=1 where corpid=%d and status=0"), _ttol(szCorpID)); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("�ɹ���������ҵIDΪ%s�Ķ��ţ�����δ��������ת����б�!") , szCorpID ); strTemp.Format( _T("(%s)�ɹ���������ҵIDΪ%s�Ķ��ţ�����δ��������ת����б�!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ //�����ɹ������Ӳ�����¼ CString str; str.Format( _T("insert into Corp_Oper ( CorpID,UserType,OperType,OperMsg,BZ,CreateUser,CreateTime ) values( %d,%d,%d,'%s','%s','%s',GetDate())") , //�����¼ up.lCorpID, 0, //�û� 1, //�رղ��� _T(""), strTemp, Quitdata.szMobile); pAdoRS->Open(str); } else { _stprintf( Quitdata.szMsg , _T("��ҵID:%s�����ڣ�����!") , szCorpID ); } } Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if ((dwType&REPORT_MANAGER || dwType&REPORT_CHECKUP ) && !_tcsncmp( szMsg , _T("ON") , _tcslen(_T("ON"))) ) { TCHAR szCorpID[512]={0}; _tcscpy( szCorpID,szMsg+2 ); if ( _tcslen(szCorpID)>=8 ) { szCorpID[8]=0; strSelect.Format( _T("select * from users where userid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { long lPurview=0; //pAdoRS->MoveFirst(); pAdoRS->GetCollect( _T("Purview"),lPurview ); pAdoRS->Close(); lPurview |= PURVIEW_LOGIN; strSelect.Format( _T("update users set Purview=%d where userid=%d") ,lPurview,_ttol(szCorpID) ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("�ɹ��������û�IDΪ%s�Ķ���!") , szCorpID ); strTemp.Format( _T("(%s)�ɹ��������û�IDΪ%s�Ķ���!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } else { _stprintf( Quitdata.szMsg , _T("�û�ID:%s�����ڣ�����!") , szCorpID ); } } else { szCorpID[6]=0; strSelect.Format( _T("select * from corp where corpid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { strSelect.Format( _T("update corp set Status=0 where corpid=%d and status=1") , _ttol(szCorpID) ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("�ɹ���������ҵIDΪ%s�Ķ���!") , szCorpID ); strTemp.Format( _T("(%s)�ɹ���������ҵIDΪ%s�Ķ���!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ //�����ɹ������Ӳ�����¼ CString str; str.Format( _T("insert into Corp_Oper ( CorpID,UserType,OperType,OperMsg,BZ,CreateUser,CreateTime ) values( %d,%d,%d,'%s','%s','%s',GetDate())") , //�����¼ _ttol(szCorpID), 0, //�û� 0, //���ò��� _T(""), strTemp, Quitdata.szMobile); pAdoRS->Open(str); } else { _stprintf( Quitdata.szMsg , _T("��ҵID:%s�����ڣ�����!") , szCorpID ); } } Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if ((dwType&REPORT_MANAGER || dwType&REPORT_CHECKUP ) && !_tcsncmp( szMsg , _T("TG") , _tcslen(_T("TG"))) ) { TCHAR szCorpID[512]={0}; _tcscpy( szCorpID,szMsg+2 ); if ( _tcslen(szCorpID)>=8 ) { szCorpID[8]=0; strSelect.Format( _T("select * from users where userid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { //����Ϊ֪ͨsocket,�������͵Ķ���Ҳ����ͨ�� Checkup up={0}; pAdoRS->GetCollect( _T("CorpID") , up.lCorpID ); pAdoRS->GetCollect( _T("UserID") , up.lUserID ); pAdoRS->Close(); up.bCheckup= false; pSMSDlg->SocketPushCheck(up); Sleep(200); strSelect.Format( _T("update smssend set Status=0 where userid=%d and Status=%d") , _ttol(szCorpID),SEND_STATUS_SUB_FILT ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("���ͨ�����û�IDΪ%s�Ķ���!") , szCorpID ); strTemp.Format( _T("(%s)���ͨ�����û�IDΪ%s�Ķ���!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } else { _stprintf( Quitdata.szMsg , _T("�û�ID:%s�����ڣ�����!") , szCorpID ); } } else { szCorpID[6]=0; strSelect.Format( _T("select * from corp where corpid=%d"),_ttol(szCorpID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { //����Ϊ֪ͨsocket,�������͵Ķ���Ҳ����ͨ�� Checkup up={0}; pAdoRS->GetCollect( _T("CorpID") , up.lCorpID ); pAdoRS->Close(); up.bCheckup= false; pSMSDlg->SocketPushCheck(up); Sleep(200); strSelect.Format( _T("update smssend set Status=0 where corpid=%d and Status=%d") , _ttol(szCorpID),SEND_STATUS_SUB_FILT ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("���ͨ������ҵIDΪ%s�Ķ���!") , szCorpID ); strTemp.Format( _T("(%s)���ͨ������ҵIDΪ%s�Ķ���!"),Quitdata.szMobile,szCorpID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } else { _stprintf( Quitdata.szMsg , _T("��ҵID:%s�����ڣ�����!"), szCorpID ); } } Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if ((dwType&REPORT_MANAGER || dwType&REPORT_CHECKUP ) && !_tcsncmp( szMsg , _T("SG") , _tcslen(_T("SG"))) ) { TCHAR szTaskID[512]={0}; _tcscpy( szTaskID,szMsg+2 ); long lTaskID = _ttol(szTaskID); if ( lTaskID>1 ) { strSelect.Format( _T("update PLTaskSms set Status=1 where PLTaskSmsID=%d and Status=2") ,lTaskID ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("���ͨ����IDΪ%d�Ķ�������!") , lTaskID ); strTemp.Format( _T("(%s)���ͨ����IDΪ%d�Ķ�������!"),Quitdata.szMobile,lTaskID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if ((dwType&REPORT_MANAGER || dwType&REPORT_CHECKUP ) && !_tcsncmp( szMsg , _T("SF") , _tcslen(_T("SF"))) ) { TCHAR szTaskID[512]={0}; _tcscpy( szTaskID,szMsg+2 ); long lTaskID = _ttol(szTaskID); if ( lTaskID>1 ) { strSelect.Format( _T("update PLTaskSms set Status=3 where PLTaskSmsID=%d and Status=2") ,lTaskID ); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("���ʧ����IDΪ%d�Ķ�������!") , lTaskID ); strTemp.Format( _T("(%s)���ʧ����IDΪ%d�Ķ�������!"),Quitdata.szMobile,lTaskID); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if (dwType&REPORT_MANAGER && ( !_tcsncmp( szMsg , _T("BZ") , _tcslen(_T("BZ"))) || !_tcsncmp( szMsg , _T("HELP") , _tcslen(_T("HELP")))) ) { SYSTEMTIME t;::GetLocalTime(&t); _stprintf(Quitdata.szMsg , _T("RESTART��QUIT��REBOOT��OFF��ON��QUERYLL��NEXT��CJ��ACJ��QJTD��TD��%02d:%02d:%02d") ,t.wHour,t.wMinute,t.wSecond ); Sleep(2000); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if (dwType&REPORT_CM && !_tcsncmp( szMsg , _T("CMG") , _tcslen(_T("CMG"))) ) { TCHAR szBBSID[512]={0}; _tcscpy( szBBSID,szMsg+3 ); szBBSID[8]=0; TCHAR szErrMsg[512]={0}; _tcscpy(szErrMsg,szMsg+11); Sleep(2000); strSelect.Format( _T("select * from BBS with(nolock) where BBSID=%d AND BBSType=1"),_ttol(szBBSID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { long lUserID=0; long lCorpID=0; long lRCorpID=0; long lRUserID=0; TCHAR szCM[512]={0}; CString strMobile; CString strBZ; CString strType; CString strName; pAdoRS->GetCollect( _T("CorpID") , lCorpID ); pAdoRS->GetCollect( _T("UserID") , lUserID ); pAdoRS->GetCollect( _T("SCorpID") , lRCorpID ); pAdoRS->GetCollect( _T("SUserID") , lRUserID ); pAdoRS->GetCollect( _T("CM") , szCM ); pAdoRS->GetCollect( _T("Tel") , strMobile ); pAdoRS->GetCollect( _T("BZ") , strBZ ); pAdoRS->GetCollect( _T("Type") , strType ); pAdoRS->GetCollect( _T("Email") , strName ); CString strTemp=strBZ + _T("\r\nǩ�����ͨ�������ǽ��ύ����Ӫ����ˣ���1-2�������պ�õ���ʽ��˽������ǩ��:")+CString(szCM); pAdoRS->PutCollect( _T("BZ") , strTemp ); //ʧ�� pAdoRS->PutCollect( _T("BBSType") , 2 ); //�ɹ� pAdoRS->PutCollect( _T("ExpTime") , COleDateTime::GetCurrentTime() ); //����ʱ�� pAdoRS->Update(); pAdoRS->Close(); if ( _tcslen(szErrMsg)>=2 ) { ExChar(szErrMsg , _T("\r") ); ExChar(szErrMsg , _T("\n") ); ExChar(szErrMsg , _T("\t") ); _tcscpy(szCM,szErrMsg); } //��¼���¼� strTemp=_T("ǩ�����ͨ�������ǽ��ύ����Ӫ����ˣ���1-2�������պ�õ���ʽ��˽������ǩ��:")+CString(szCM); strTemp=strTemp+_T("��\r\n"); strBZ=strTemp+strBZ; BBS_Insert bbs={0}; bbs.SCorpID = 0; bbs.SUserID = 0; _tcscpy(bbs.SCorpName , _T("ϵͳ��Ϣ") ); _tcscpy(bbs.SUserName , _T("ϵͳ��Ϣ") ); bbs.RCorpID = lRCorpID; bbs.RUserID = lRUserID; _tcscpy(bbs.Type , strType ); _tcscpy(bbs.BZ , strBZ ); bbs.Status = 0; bbs.BBSType = 0; Bbs_Insert(pAdoRS,bbs); //����һ��ϵͳ��Ϣ strTemp.Format( _T("(%s)"),Quitdata.szMobile); strBZ=strTemp+strBZ; Bbs_Insert_Sys(pAdoRS,strBZ); //����ϵͳ��Ϣ��־ if ( lUserID<=0 ) strSelect.Format( _T("update corp set CM='%s' where CorpID=%d") , szCM,lCorpID); else strSelect.Format( _T("update users set CM2='%s' where CorpID=%d AND UserID=%d ") , szCM,lCorpID,lUserID); pAdoRS->Open(strSelect); _stprintf( Quitdata.szMsg , _T("���ͨ����%s��ǩ������ǩ��:%s!") , strName,szCM ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� //����֪ͨ������ if ( strMobile.GetLength()>= 8 ) { _tcscpy( Quitdata.szMobile , strMobile ); _stprintf( Quitdata.szMsg , _T("�����ͨ����%s��ǩ������ǩ��:%s��1-2�������պ�õ���ʽ��˽����") , strName,szCM ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } else { _stprintf( Quitdata.szMsg , _T("ǩ��ID:%s�����ڣ�����!") , szBBSID ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } if (dwType&REPORT_CM && !_tcsncmp( szMsg , _T("CMJ") , _tcslen(_T("CMJ"))) ) { TCHAR szBBSID[512]={0}; _tcscpy( szBBSID,szMsg+3 ); szBBSID[8]=0; TCHAR szErrMsg[512]={0}; _tcscpy(szErrMsg,szMsg+11); Sleep(2000); strSelect.Format( _T("select * from BBS where BBSID=%d and BBSType=1"),_ttol(szBBSID)); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF()) { long lUserID=0; long lCorpID=0; long lRCorpID=0; long lRUserID=0; TCHAR szCM[512]={0}; CString strMobile; CString strBZ; CString strType; CString strName; pAdoRS->GetCollect( _T("CorpID") , lCorpID ); pAdoRS->GetCollect( _T("UserID") , lUserID ); pAdoRS->GetCollect( _T("SCorpID") , lRCorpID ); pAdoRS->GetCollect( _T("SUserID") , lRUserID ); pAdoRS->GetCollect( _T("CM") , szCM ); pAdoRS->GetCollect( _T("Tel") , strMobile ); pAdoRS->GetCollect( _T("BZ") , strBZ ); pAdoRS->GetCollect( _T("Type") , strType ); pAdoRS->GetCollect( _T("Email") , strName ); CString strTemp=strBZ + _T("\r\nǩ�����ʧ�ܣ�ԭ��:")+CString(szErrMsg); pAdoRS->PutCollect( _T("BZ") , strTemp ); //ʧ�� pAdoRS->PutCollect( _T("BBSType") , 3 ); //ʧ�� pAdoRS->PutCollect( _T("ExpTime") , COleDateTime::GetCurrentTime() ); //����ʱ�� pAdoRS->Update(); pAdoRS->Close(); strTemp=_T("ǩ�����ʧ�ܣ�ԭ��:")+CString(szErrMsg); strTemp=strTemp+_T("\r\n"); strBZ=strTemp+strBZ; BBS_Insert bbs={0}; bbs.SCorpID = 0; bbs.SUserID = 0; _tcscpy(bbs.SCorpName , _T("ϵͳ��Ϣ") ); _tcscpy(bbs.SUserName , _T("ϵͳ��Ϣ") ); bbs.RCorpID = lRCorpID; bbs.RUserID = lRUserID; _tcscpy(bbs.Type , strType ); _tcscpy(bbs.BZ , strBZ ); bbs.Status = 0; bbs.BBSType = 0; Bbs_Insert(pAdoRS,bbs); //����һ��ϵͳ��Ϣ strTemp.Format( _T("(%s)"),Quitdata.szMobile); strBZ=strTemp+strBZ; Bbs_Insert_Sys(pAdoRS,strBZ); //����ϵͳ��Ϣ��־ _stprintf( Quitdata.szMsg , _T("%s��ǩ�������ʧ�ܣ�ԭ��:%s��") , strName,szErrMsg ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� //����֪ͨ������ if ( strMobile.GetLength()>= 8 ) { _tcscpy( Quitdata.szMobile , strMobile ); _stprintf( Quitdata.szMsg , _T("%s��ǩ�����룬���ʧ�ܣ�ԭ��:%s��") , strName,szErrMsg ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } else { _stprintf( Quitdata.szMsg , _T("ǩ��ID:%s�����ڣ�����!") , szBBSID ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } if (dwType&REPORT_MANAGER && !_tcsncmp( szMsg , _T("QUERYLL") , _tcslen(_T("QUERYLL"))) ) { Sleep(200); ANS_QueryLL RetLL={0}; CString strRet; CProcessSocket::Process_QueryLL_Query(*pAdoRS,RetLL,strRet); _stprintf(Quitdata.szMsg, strRet ); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } if (dwType&REPORT_MANAGER && !_tcsncmp( szMsg , _T("NEXT") , _tcslen(_T("NEXT"))) ) { Sleep(2000); COleDateTime t = COleDateTime::GetCurrentTime() - COleDateTimeSpan(0,0,10,0); //10����ǰ�Ķ��� COleDateTime tn= COleDateTime::GetCurrentTime() + COleDateTimeSpan(1,0,0,0); //�ڶ���Ķ��� CString strNow,strNext; strNow.Format( _T("%04d%02d%02d %02d:%02d") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute() ); strNext.Format( _T("%04d%02d%02d 08:00") , tn.GetYear(),tn.GetMonth(),tn.GetDay()); strSelect.Format( _T("update smssend set timer='%s' where status=0 and Subtime<='%s' and (Timer is null or timer<getdate())"),strNext,strNow ); if ( pAdoRS->Open(strSelect) ) { pAdoRS->Close(); strTemp.Format( _T("(%s)���õ�ǰδ������ת����8:00����!"),Quitdata.szMobile); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } _stprintf( Quitdata.szMsg , _T("�ѳɹ���%sǰ���͵Ķ���ת����08:00���ͣ�"),strNow); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } //��ҵ���ų�ֵ if (dwType&REPORT_CJ && !_tcsncmp( szMsg , _T("CJ") , _tcslen(_T("CJ"))) ) { Sleep(2000); //�ֽ�ָ��,CJ,��ҵID,�ɷѷ�ʽ,�ɷѽ��,���ŷ���,��������,�Ƿ�Ӧ��,�Ƿ����,��ע TCHAR szCorpID[32]={0}; TCHAR szPayMode[32]={0}; TCHAR szPrice[32]={0}; TCHAR szPriceOne[32]={0}; TCHAR szPresent[32]={0}; TCHAR szYS[32]={0}; TCHAR szTest[32]={0}; TCHAR szBZ[256]={0}; TCHAR szMsgt[256]={0}; _tcscpy(szMsgt,szMsg); _tcscat(szMsgt , _T(",,,,,,,,,,,,,,") ); long lLen = _tcslen(szMsgt); ::GetReqMess(szMsgt,szCorpID,1,',',lLen);AllTrim(szCorpID);szCorpID[6]=0; ::GetReqMess(szMsgt,szPayMode,2,',',lLen);AllTrim(szPayMode);szPayMode[15]=0; ::GetReqMess(szMsgt,szPrice,3,',',lLen);AllTrim(szPrice);szPrice[8]=0; ::GetReqMess(szMsgt,szPriceOne,4,',',lLen);AllTrim(szPriceOne);szPriceOne[8]=0; ::GetReqMess(szMsgt,szPresent,5,',',lLen);AllTrim(szPresent);szPresent[8]=0; ::GetReqMess(szMsgt,szYS,6,',',lLen);AllTrim(szYS);szYS[4]=0; ::GetReqMess(szMsgt,szTest,7,',',lLen);AllTrim(szTest);szTest[4]=0; ::GetReqMess(szMsgt,szBZ,8,',',lLen);AllTrim(szBZ);szBZ[250]=0; long lCorpID = _ttol(szCorpID); #ifdef UNICODE double fPrice = atof(CW2A(szPrice)); double fPriceOne = atof(CW2A(szPriceOne)); #else double fPrice = atof(szPrice); double fPriceOne = atof(szPriceOne); #endif long lPresent = _ttol(szPresent); BOOL bYS = _ttol(szYS); BOOL bTest = _ttol(szTest); double l = fPrice/fPriceOne; long lSMSCount = long(l+0.5f); if ( l< 0 ) lSMSCount = long(l-0.5f); lSMSCount = lSMSCount + lPresent; if ( !bYS && !_tcscmp(szYS,_T("��")) ) bYS = true; if ( !bTest && !_tcscmp(szTest,_T("��")) ) bTest = true; if ( lCorpID<100000 || lCorpID>1000000 || fPrice<-10000.0f || fPrice>10000.0f || fPriceOne<0 || fPriceOne>1.0f || lPresent<-10000 || lPresent>10000 ) { _tcscpy(Quitdata.szMsg , _T("��ֵ��ʽ������ȷ��CJ,��ҵID,�ɷѷ�ʽ,�ɷѽ��,���ŷ���,��������,�Ƿ�Ӧ��,�Ƿ����,��ע")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { TCHAR szSMSCount[32]={0}; _stprintf( szCorpID,_T("%d") , lCorpID ); _stprintf( szPrice,_T("%.4f") , fPrice ); _stprintf( szPriceOne,_T("%.4f") , fPriceOne ); _stprintf( szPresent,_T("%d") , lPresent ); _stprintf( szSMSCount,_T("%d") , lSMSCount ); _stprintf( szYS,_T("%d") , bYS ); _stprintf( szTest,_T("%d") , bTest ); strSelect.Format( _T("select * from corp where corpid=%d") , lCorpID ); if (pAdoRS2->Open(strSelect) && !pAdoRS2->IsEOF() ) { long lAgentID; CString strCorpName; pAdoRS2->GetCollect( _T("AgentID") , lAgentID ); pAdoRS2->GetCollect( _T("CorpName") , strCorpName ); pAdoRS2->Close(); if ( lAgentID>0 ) { _tcscpy(Quitdata.szMsg , _T("����Ϊ�����̵���ҵ��ֵ��")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { strSelect = CString("insert into corp_Pay (CorpID,AgentID,PayMan,PayMode,Price,PriceOne,Present,SMSCount,YS,Test,CreateUser,PayTime,OvrTime,BZ) values(") + CString(" '") + CString(szCorpID) + CString("',") + CString(" '") + CString("0") + CString("',") + CString(" '") + CString("���ų�ֵ") + CString("',") + CString(" '") + CString(szPayMode) + CString("',") + CString(szPrice) + CString(",") + CString(szPriceOne) + CString(",") + CString(szPresent) + CString(",") + CString(szSMSCount) + CString(",") + CString(szYS) + CString(",") + CString(szTest) + CString(",") + CString(" '") + CString(sms.szSendNum) + CString("',") + //������ CString( "GETDATE(),") + CString( "DATEADD(Year,1,GETDATE()),") + CString(" '") + CString(szBZ) + CString("' )"); if ( pAdoRS2->Open(strSelect) ) { strSelect.Format(_T("update corp set SMSUsed=SMSUsed+%d,Total=Total+%.4f,TotalSms=TotalSms+%d,LastPay=GetDate(),OvrTime=DATEADD(Year,1,GETDATE()) where CorpID=%d") , lSMSCount,fPrice,lSMSCount,lCorpID); pAdoRS2->Open(strSelect); _stprintf(Quitdata.szMsg , _T("��ֵ�ɹ�:%s(%d),��%d�����ţ�"),strCorpName ,lCorpID,lSMSCount); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� strTemp.Format( _T("(%s)%s!"),Quitdata.szMobile,Quitdata.szMsg); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } else { _tcscpy(Quitdata.szMsg , _T("��ֵ�����쳣�����飡")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } } else { _stprintf(Quitdata.szMsg , _T("��ֵ����ҵID(%d)�����ڣ����飡"),lCorpID); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } } //�����̶��ų�ֵ if (dwType&REPORT_CJ && !_tcsncmp( szMsg , _T("ACJ") , _tcslen(_T("ACJ"))) ) { Sleep(2000); //�ֽ�ָ��,CJA,������ID,�ɷѷ�ʽ,�ɷѽ��,���ŷ���,��������,�Ƿ�Ӧ��,�Ƿ����,��ע TCHAR szCorpID[32]={0}; TCHAR szPayMode[32]={0}; TCHAR szPrice[32]={0}; TCHAR szPriceOne[32]={0}; TCHAR szPresent[32]={0}; TCHAR szYS[32]={0}; TCHAR szTest[32]={0}; TCHAR szBZ[256]={0}; TCHAR szMsgt[256]={0}; _tcscpy(szMsgt,szMsg); _tcscat(szMsgt , _T(",,,,,,,,,,,,,,") ); long lLen = _tcslen(szMsgt); ::GetReqMess(szMsgt,szCorpID,1,',',lLen);AllTrim(szCorpID);szCorpID[6]=0; ::GetReqMess(szMsgt,szPayMode,2,',',lLen);AllTrim(szPayMode);szPayMode[15]=0; ::GetReqMess(szMsgt,szPrice,3,',',lLen);AllTrim(szPrice);szPrice[8]=0; ::GetReqMess(szMsgt,szPriceOne,4,',',lLen);AllTrim(szPriceOne);szPriceOne[8]=0; ::GetReqMess(szMsgt,szPresent,5,',',lLen);AllTrim(szPresent);szPresent[8]=0; ::GetReqMess(szMsgt,szYS,6,',',lLen);AllTrim(szYS);szYS[4]=0; ::GetReqMess(szMsgt,szTest,7,',',lLen);AllTrim(szTest);szTest[4]=0; ::GetReqMess(szMsgt,szBZ,8,',',lLen);AllTrim(szBZ);szBZ[250]=0; long lAgentID = _ttol(szCorpID); #ifdef UNICODE double fPrice = atof(CW2A(szPrice)); double fPriceOne = atof(CW2A(szPriceOne)); #else double fPrice = atof(szPrice); double fPriceOne = atof(szPriceOne); #endif long lPresent = _ttol(szPresent); BOOL bYS = _ttol(szYS); BOOL bTest = _ttol(szTest); double l = fPrice/fPriceOne; long lSMSCount = long(l+0.5f); if ( l< 0 ) lSMSCount = long(l-0.5f); lSMSCount = lSMSCount + lPresent; if ( !bYS && !_tcscmp(szYS,_T("��")) ) bYS = true; if ( !bTest && !_tcscmp(szTest,_T("��")) ) bTest = true; if ( lAgentID<100000 || lAgentID>1000000 || fPrice<-10000.0f || fPrice>10000.0f || fPriceOne<0 || fPriceOne>1.0f || lPresent<-10000 || lPresent>10000 ) { _tcscpy(Quitdata.szMsg , _T("��ֵ��ʽ������ȷ��ACJ,��ҵID,�ɷѷ�ʽ,�ɷѽ��,���ŷ���,��������,�Ƿ�Ӧ��,�Ƿ����,��ע")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { TCHAR szSMSCount[32]={0}; _stprintf( szCorpID,_T("%d") , lAgentID ); _stprintf( szPrice,_T("%.4f") , fPrice ); _stprintf( szPriceOne,_T("%.4f") , fPriceOne ); _stprintf( szPresent,_T("%d") , lPresent ); _stprintf( szSMSCount,_T("%d") , lSMSCount ); _stprintf( szYS,_T("%d") , bYS ); _stprintf( szTest,_T("%d") , bTest ); float fPrice2 = (float)lSMSCount/10.0f; CString strPrice; strPrice.Format( _T("%.4f") , fPrice2); strSelect.Format( _T("select * from agent where agentid=%d") , lAgentID ); if (pAdoRS2->Open(strSelect) && !pAdoRS2->IsEOF() ) { CString strAgentName; pAdoRS2->GetCollect( _T("Name") , strAgentName ); pAdoRS2->Close(); strSelect = CString("insert into Agent_Pay (AgentID,PayMan,PayMode,JFPrice,PriceOne,Present,Price,CreateUser,PayTime,YS,Test,BZ) values(") + CString(" '") + CString(szCorpID) + CString("',") + CString(" '") + CString("���ų�ֵ") + CString("',") + //������ CString(" '") + CString(szPayMode) + CString("',") + CString(szPrice) + CString(",") + CString(szPriceOne) + CString(",") + CString(szPresent) + CString(",") + strPrice + CString(",") + CString(" '") + CString(sms.szSendNum) + CString("',") + //������ CString( "GETDATE(),") + CString(szYS) + CString(",") + CString(szTest) + CString(",") + CString(" '") + CString(szBZ) + CString("' )"); if ( pAdoRS2->Open(strSelect) ) { strSelect.Format(_T("update Agent set Used=Used+%.4f,JFTotal=JFTotal+%.4f,Total=Total+%.4f where AgentID='%d'") , fPrice2,fPrice,fPrice2,lAgentID); pAdoRS2->Open( strSelect ); _stprintf(Quitdata.szMsg , _T("��ֵ�ɹ�:%s(%d),��%d�����ţ�"),strAgentName ,lAgentID,lSMSCount); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� strTemp.Format( _T("(%s)%s!"),Quitdata.szMobile,Quitdata.szMsg); Bbs_Insert_Sys(pAdoRS,strTemp); //����ϵͳ��Ϣ��־ } else { _tcscpy(Quitdata.szMsg , _T("��ֵ�����쳣�������飡")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } else { _stprintf(Quitdata.szMsg , _T("��ֵ�Ĵ�����ID(%d)�����ڣ����飡"),lAgentID); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } } //�Ķ���ͨ�� #ifdef SMSCENTER_GDDX if (dwType&REPORT_CJ && !_tcsncmp( szMsg , _T("GTD") , _tcslen(_T("GTD"))) ) #else if (dwType&REPORT_CJ && !_tcsncmp( szMsg , _T("GTD") , _tcslen(_T("GTD"))) ) #endif { Sleep(2000); //�ֽ�ָ��,TD,��ҵID,��Ӫ������,ͨ����,�Ƿ�ǿ��ȫ�� TCHAR szCorpID[32]={0}; TCHAR szYYS[32]={0}; TCHAR szTD[32]={0}; TCHAR szOutAll[32]={0}; TCHAR szMsgt[256]={0}; _tcscpy(szMsgt,szMsg); _tcscat(szMsgt , _T(",,,,,,,,,,,,,,") ); long lLen = _tcslen(szMsgt); ::GetReqMess(szMsgt,szCorpID,1,',',lLen);AllTrim(szCorpID);szCorpID[6]=0; ::GetReqMess(szMsgt,szYYS,2,',',lLen);AllTrim(szYYS);szYYS[1]=0; ::GetReqMess(szMsgt,szTD,3,',',lLen);AllTrim(szTD);szTD[2]=0; ::GetReqMess(szMsgt,szOutAll,4,',',lLen);AllTrim(szOutAll);szOutAll[1]=0; long lCorpID = _ttol(szCorpID); long lYYS = _ttol(szYYS); long lTD = _ttol(szTD); if ( lCorpID<100000 || lCorpID>1000000 || lYYS<1 || lYYS>3 || lTD<0 || lTD>20 ) { _tcscpy(Quitdata.szMsg , _T("��ͨ����ʽ������ȷ��TD,��ҵID,��Ӫ������(1-3),ͨ����(1-6)(11-17),�Ƿ�ǿ��ȫ��(0-1)��")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { strSelect.Format( _T("select * from corp where corpid=%d") , lCorpID ); if (pAdoRS2->Open(strSelect) && !pAdoRS2->IsEOF() ) { TCHAR szTD2[32]={0}; pAdoRS2->GetCollect( _T("SMSTD") , szTD2 ); szTD2[lYYS-1] =(TCHAR)('0'+lTD); pAdoRS2->Close(); if ( szOutAll[0] == '1' || szOutAll[0] == '0') { strSelect.Format(_T("Update corp set SMSTD='%s',OutAll=%d where corpid=%d") ,szTD2, _ttol(szOutAll),lCorpID ); } else { strSelect.Format(_T("Update corp set SMSTD='%s' where corpid=%d") , szTD2,lCorpID ); } pAdoRS2->Open(strSelect); _stprintf(Quitdata.szMsg , _T("��ͨ��(%d),%d��Ӫ�̸�Ϊ%dͨ����"),lCorpID ,lYYS,lTD); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { _stprintf(Quitdata.szMsg , _T("��ͨ������ҵID(%d)�����ڣ����飡"),lCorpID); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } } //��ǿ�ƶ���ͨ�� if (dwType&REPORT_CJ && !_tcsncmp( szMsg , _T("QJTD") , _tcslen(_T("QJTD"))) ) { Sleep(2000); //�ֽ�ָ��,QJTD,��Ӫ������,ͨ����,�Ƿ�ǿ��ȫ�� TCHAR szYYS[32]={0}; TCHAR szTD[32]={0}; TCHAR szOutAll[32]={0}; TCHAR szMsgt[256]={0}; _tcscpy(szMsgt,szMsg); _tcscat(szMsgt , _T(",,,,,,,,,,,,,,") ); long lLen = _tcslen(szMsgt); ::GetReqMess(szMsgt,szYYS,1,',',lLen);AllTrim(szYYS);szYYS[1]=0; ::GetReqMess(szMsgt,szTD,2,',',lLen);AllTrim(szTD);szTD[2]=0; ::GetReqMess(szMsgt,szOutAll,3,',',lLen);AllTrim(szOutAll);szOutAll[1]=0; long lYYS = _ttol(szYYS); long lTD = _ttol(szTD); if ( lYYS<1 || lYYS>3 || lTD<0 || lTD>20 ) { _tcscpy(Quitdata.szMsg , _T("��ǿ��ͨ����ʽ������ȷ��QJTD,��Ӫ������,ͨ����(1-3),�Ƿ�ǿ��ȫ��(0-2)��")); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } else { pSMSDlg->m_Setup.szQZSmsTD[lYYS-1]=(TCHAR)('0'+lTD); if ( szOutAll[0] == '2' || szOutAll[0] == '1' || szOutAll[0] == '0' ) { pSMSDlg->m_Setup.szQZSmsOutAll[lYYS-1]=(TCHAR)('0'+_ttol(szOutAll)); } pSMSDlg->SaveSetup(); //���� _stprintf(Quitdata.szMsg , _T("��ǿ��ͨ���ɹ���%d��Ӫ�̸�Ϊ%dͨ����"),lYYS ,lTD); SubmitSms( Quitdata,pAdoRS2,pAdoRS3,pSMSDlg,lMobileType,SMSTYPE_ZF); //���Ͷ��� } } #ifdef SMSCENTER_GDYD_ADC if ( lCorpID == DEFAULT_SEND_CORPID ) { BOOL bQR=false; long lQRType=0; long lWhiteID = 0; long lCorpID = 0; if ( !_tcsncmp( szMsg , _T("��") , _tcslen(_T("��"))) ) { strSelect.Format(_T("select top 1 * from white2 with(nolock) where mobile='%s' and status=0 and QRType=1 order by AddTime desc") , sms.szSendNum ); if (pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("WhiteID") , lWhiteID ); pAdoRS->GetCollect(_T("CorpID") , lCorpID ); strSelect.Format( _T("update white2 set status=1,QRType=11 where whiteid=%d") ,lWhiteID ); pAdoRS->Open(strSelect); bQR = true; lQRType = 1; } } if ( !_tcsncmp( szMsg , _T("��") , _tcslen(_T("��"))) ) { strSelect.Format(_T("select top 1 * from white2 with(nolock) where mobile='%s' and (status=0 or status=1) and QRType=2 order by AddTime desc") , sms.szSendNum ); if (pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("WhiteID") , lWhiteID ); pAdoRS->GetCollect(_T("CorpID") , lCorpID ); strSelect.Format( _T("delete from white2 where whiteid=%d") ,lWhiteID ); pAdoRS->Open(strSelect); lQRType = 2; bQR = true; } } CString strRetMsg; if ( bQR ) { CString strSName; CString strSmsNum2; strSelect.Format(_T("select * from corp with(nolock) where corpid=%d") ,lCorpID ); if ( pAdoRS->Open(strSelect) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("SName") , strSName); pAdoRS->GetCollect(_T("SmsNum2") , strSmsNum2); } if ( lQRType==1 ) { strRetMsg.Format(_T("����ȷ��%s��CRM���ֵķ�������Ҫȡ����������\"TD\"��106573440025%s��") ,strSName, strSmsNum2); } else { strRetMsg.Format(_T("���Ѿܾ�%s��CRM���ֵķ���������룬������\"DG\"��106573440025%s��") ,strSName, strSmsNum2); } } else { strRetMsg.Format(_T("�Բ����㷢��ָ���������Ѿ�����ȷ�ϲ�����")); } SubmitData data={0}; //_tcscpy(data.szSendNum,_T("99999")); data.lCorpID = DEFAULT_SEND_CORPID; data.lUserID = DEFAULT_SEND_USERID; data.lItem = 101; _tcscpy(data.szMobile,sms.szSendNum); _tcscpy(data.szMsg,strRetMsg); CSendThread::SubmitSms( data,pAdoRS2,pAdoRS3,pSMSDlg,0,SMSTYPE_ZF); //���Ͷ��� } #endif return false; } BOOL CSendThread::Bbs_Insert(CAdoRecordSet *pAdoRS,BBS_Insert & bbs) { try { CString strExpTime = _T("NULL"); COleDateTime tExpTime(bbs.expTime); if (tExpTime.GetStatus() == COleDateTime::valid) { strExpTime.Format(_T("'%04d.%02d.%02d %02d:%02d:%02d'"), tExpTime.GetYear(), tExpTime.GetMonth(), tExpTime.GetDay(), tExpTime.GetHour(), tExpTime.GetMinute(), tExpTime.GetSecond()); } CString str; str.Format( _T("insert into BBS (SCorpID,SUserID,SCorpName,SUserName,RCorpID,RUserID,RAgentID,Status,Type,Name,Tel,Email,BZ,BBSType,CorpID,UserID,CM,AgentID,AgentYJ,SendTime,ExpTime) values (%d,%d,'%s','%s',%d,%d,%d,%d,'%s','%s','%s','%s','%s',%d,%d,%d,'%s',%d,%d,GetDate(),%s)") , bbs.SCorpID, bbs.SUserID, SqlStr(bbs.SCorpName), SqlStr(bbs.SUserName), bbs.RCorpID, bbs.RUserID, bbs.RAgentID, bbs.Status, SqlStr(bbs.Type), SqlStr(bbs.Name), SqlStr(bbs.Tel), SqlStr(bbs.Email), SqlStr(bbs.BZ), bbs.BBSType, bbs.CorpID, bbs.UserID, SqlStr(bbs.CM), bbs.AgentID, bbs.AgentYJ, strExpTime); BOOL b = pAdoRS->Open(str); if ( b ) { str = _T("SELECT SCOPE_IDENTITY()") ; if ( pAdoRS->Open( str ) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect((long)0 , bbs.BBSID ); } } pAdoRS->Close(); return b; } catch(...) { LOG_APPERROR(_T("T")); return false; } return false; } BOOL CSendThread::Bbs_Insert_Sys(CAdoRecordSet *pAdoRS,CString strBZ,COleDateTime * pExpTime) { BBS_Insert bbs={0}; bbs.SCorpID = 0; bbs.SUserID = 0; _tcscpy(bbs.SCorpName , _T("ϵͳ��Ϣ") ); _tcscpy(bbs.SUserName , _T("ϵͳ��Ϣ") ); bbs.RCorpID = 0; bbs.RUserID = 0; _tcscpy(bbs.Type , _T("ϵͳ��Ϣ") ); _tcscpy(bbs.BZ , strBZ ); bbs.Status = 0; bbs.BBSType = 10; if (pExpTime && pExpTime->GetStatus() == COleDateTime::valid) { pExpTime->GetAsSystemTime(bbs.expTime); COleDateTimeSpan span = COleDateTime::GetCurrentTime() - *pExpTime; _stprintf(bbs.Email, _T("%d"), span.GetMinutes()); } return Bbs_Insert(pAdoRS,bbs); } BOOL CSendThread::PushRecvSmsToOtherCenter(HANDLE & hPipe,SmsSendData data, CString strProv,CString strCity) { BOOL bOK=false; #ifdef _UNICODE try { if ( hPipe == INVALID_HANDLE_VALUE ) { hPipe=CreateFile(SMS_PIPE_RECVSMS,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hPipe==INVALID_HANDLE_VALUE) { return false; } //���ӳɹ� DWORD dwMode=PIPE_TYPE_BYTE|PIPE_NOWAIT; SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL); //��ɷ�����ģʽ } tagPipeReport report={0}; report.lType = 1; //���ж��� report.lSendID = data.lSendID; report.lCorpID = data.lCorpID; report.lUserID = data.lUserID; report.lStatus = data.lStatus; report.tSendTime= data.tSendTime; strcpy( report.szSendNum , CW2A(data.szSendNum) ); strcpy( report.szRecvNum , CW2A(data.szRecvNum) ); strcpy( report.szMsg , CW2A(data.szMsg) ); strcpy( report.szAddNum , CW2A(data.szRecvStatus) ); //��չ�� strcpy( report.szProv , CW2A(strProv)); //���͵��� strcpy( report.szCity , CW2A(strCity)); //���͵��� DWORD dwWrite=0; WriteFile(hPipe, &report, sizeof(report), &dwWrite, NULL); if ( dwWrite == sizeof(report) ) { bOK = true; } else { hPipe = INVALID_HANDLE_VALUE; } } catch(...) { LOG_APPERROR(_T("T")); } #endif return bOK; } BOOL CSendThread::PushRecvSmsToOtherCenter(long lType,CAdoRecordSet *pAdoRS, SmsSendData data, CString strProv, CString strCity) { BOOL bOK = false; #ifndef SMSCENTER_DEMO try { CString strSql; if (lType == 1) //�������ж��� { strSql.Format(_T("insert into PushToOther (PushTime,Type,CorpID,UserID,SendID,SendNum,RecvNum,AddNum,Msg,LongMsg,Prov,City) values (GetDate(),%d,%d,%d,%d,'%s','%s','%s','%s','%s','%s','%s')"), 1, //Type,����1Ϊ�������� data.lCorpID, data.lUserID, data.lSendID, data.szSendNum, data.szRecvNum, data.szRecvStatus, //��չ�� SqlStr(data.szMsg), data.szMsgID, //������ strProv, strCity); bOK = pAdoRS->Open(strSql); } if (lType == 2) //���رտͻ������� { strSql.Format(_T("insert into PushToOther (PushTime,Type,CorpID,UserID,SendID) values (GetDate(),%d,%d,%d,%d)"), 2, //Type,����1Ϊ�������� data.lCorpID, data.lUserID, data.lSendID); bOK = pAdoRS->Open(strSql); } if (rand() % 10 == 1)//10��֮1����Ҫɾ��2����ǰ������ { strSql.Format(_T("delete from PushToOther where DATEDIFF(second,PushTime,GETDATE())>120")); pAdoRS->Open(strSql); } } catch (...) { LOG_APPERROR(_T("T")); } #endif return bOK; } BOOL CSendThread::Recv_QQT(long lCorpID,long lUserID,long lRtx_GroupTaskID, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, CSmsCenterDlg *pSMSDlg) { try { CString str; if ( lCorpID<=0 || lRtx_GroupTaskID<=0 ) return -1; str.Format(_T("select * from Rtx_GroupTask where Rtx_GroupTaskID=%d and CorpID=%d and Received=0") , lRtx_GroupTaskID , lCorpID ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { REQ_QXBox_Group_SendData SendData={0}; CString strDataMsg; pAdoRS->GetCollect(_T("Rtx_GroupTaskID") , SendData.lRtx_GroupTaskID ); pAdoRS->GetCollect(_T("Rtx_GroupID") , SendData.lRtx_GroupID ); pAdoRS->GetCollect(_T("GroupID") , SendData.szGroupID ); pAdoRS->GetCollect(_T("Sender") , SendData.szSender ); pAdoRS->GetCollect(_T("Mobile") , SendData.szMobile ); pAdoRS->GetCollect(_T("GroupName") , SendData.szGroupName ); pAdoRS->GetCollect(_T("Status") , SendData.lStatus ); pAdoRS->GetCollect(_T("CorpID") , SendData.lCorpID ); pAdoRS->GetCollect(_T("UserID") , SendData.lUserID ); pAdoRS->GetCollect(_T("Timer") , SendData.tTimer ); pAdoRS->GetCollect(_T("MsgType") , SendData.lMsgType ); pAdoRS->GetCollect(_T("MsgImageName") , SendData.szMsgImageName ); //pAdoRS->GetCollect(_T("MsgImageLen") , pSendData->lImageLen ); pAdoRS->GetCollect(_T("MsgDataType") , SendData.lMsgDataType ); pAdoRS->GetCollect(_T("MsgData") , strDataMsg); pAdoRS->GetCollect(_T("MobileAll") , SendData.lMobileAll ); pAdoRS->GetCollect(_T("MobileSent") , SendData.lMobileSent ); pAdoRS->GetCollect(_T("SubTime") , SendData.tSubTime ); if ( pSMSDlg ) { pSMSDlg->SocketPushQQT(pAdoRS, SendData,strDataMsg ); } } return 1; } catch(...) { LOG_APPERROR(_T("T")); } return 0; }