// 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;
}