📄 deliverthread.cpp
字号:
return TRUE ;
for( i = 0 ; i < m_nValidMbCount ; i++ )
{
if( ( m_psValidMb[ i ].strStart <= strMobile ) &&
( strMobile <= m_psValidMb[ i ].strEnd ) )
return TRUE ;
}
if(m_nValidMbCount == 0)
return TRUE ;
return FALSE ;
}
void CDeliverThread::LoadMobile()
{//add by ssiyong for loading valid mobile Number
LoadScrapMobile() ;//载入离散零星号码表(包括有效和无效两种)
if(m_bMbCtrlFlag)//载入连续号码控制表
{//1,载入号码区间段(11位数)
LoadConsecutiveMobile() ;//(包括有效和无效两种)
}
else{//载入号码段头表(包括有效和无效两种)
LoadMobileHead() ;
}
}
BOOL CDeliverThread::LoadMobileHead()
{
CSqlExec sql_get(&m_database) ;
CString strSql;
int row, iRecCount;
//.....................................................
//以下是:载入有效号码段头到m_saValidMobileHead
strSql.Format("select startMb from gr_mobile_ctrl where ctrlType=1 and validState=1 order by startMb asc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
iRecCount = sql_get.RowCount();
m_saValidMbHead.RemoveAll() ;
for(row=0 ; row < iRecCount ; row++ )
{
m_saValidMbHead.Add(TrimStr(sql_get.GetFieldValue(row,"startMb")));
}
//以上是:载入有效号码段头到m_saValidMobileHead
//.....................................................
//-------------------------------------------------
//以下是:载入无效号码段头到m_saInvdMbHead
strSql.Format("select startMb from gr_mobile_ctrl where ctrlType=1 and validState=0 order by startMb asc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
iRecCount = sql_get.RowCount();
m_saInvdMbHead.RemoveAll() ;
for(row=0 ; row < iRecCount ; row++ )
{
m_saInvdMbHead.Add(TrimStr(sql_get.GetFieldValue(row,"startMb")));
}
return TRUE ;
}
BOOL CDeliverThread::LoadConsecutiveMobile()
{//表空时,返回false ; //
CSqlExec sql_get(&m_database) ;
CString strSql;
int row;
//.....................................................
//以下是:载入无效号码段到m_psInvalidMobile
strSql.Format("select startMb,endMb from gr_mobile_ctrl where ctrlType=1 and validState=0 order by startMb asc ,endMb desc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
m_nInvalidMbCount = sql_get.RowCount();//无效号码段个数,号码段位数为11
if(m_nInvalidMbCount > 0)
{
if(m_psInvalidMb != NULL )//无效号码段,号码段位数为11
{
delete [] m_psInvalidMb ;
m_psInvalidMb = NULL;
}
m_psInvalidMb = new SMobileCtrl[ m_nInvalidMbCount ];
for(row=0 ; row < m_nInvalidMbCount ; row++ )
{
m_psInvalidMb[row].strStart = TrimStr(sql_get.GetFieldValue(row,"startMb"));
m_psInvalidMb[row].strEnd = TrimStr(sql_get.GetFieldValue(row,"endMb"));
}
}
//---------------------------------
//以下是:有效号码段到m_psValidMb
strSql.Format("select startMb,endMb from gr_mobile_ctrl where ctrlType=1 and validState=1 order by startMb asc ,endMb desc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
m_nValidMbCount = sql_get.RowCount();////有效号码段个数,号码段位数为11
if(m_nValidMbCount > 0)
{
if(m_psValidMb != NULL )//有效号码段,号码段位数为11
{
delete [] m_psValidMb ;
m_psValidMb = NULL;
}
m_psValidMb = new SMobileCtrl[ m_nValidMbCount ];
for(row=0 ; row < m_nValidMbCount ; row++ )
{
m_psValidMb[row].strStart = TrimStr(sql_get.GetFieldValue(row,"startMb"));
m_psValidMb[row].strEnd = TrimStr(sql_get.GetFieldValue(row,"endMb"));
}
}
return TRUE ;
}
BOOL CDeliverThread::LoadScrapMobile()
{//表空时,返回false ; //
CSqlExec sql_get(&m_database) ;
CString strSql;
int row;
//---------------------------------
//以下是:载入有效离散零星号码段到m_psValidScrapMb
strSql.Format("select startMb from gr_mobile_ctrl where ctrlType=0 and validState=1 order by startMb asc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
m_nValidScrapMbCount = sql_get.RowCount();////有效号码段个数,号码段位数为11
if(m_nValidScrapMbCount > 0)
{
if(m_psValidScrapMb != NULL )///离散零星号码段,号码段位数为11
{
delete [] m_psValidScrapMb ;
m_psValidScrapMb = NULL;
}
m_psValidScrapMb = new SMobileCtrl[ m_nValidScrapMbCount ];
for(row=0 ; row < m_nValidScrapMbCount ; row++ )
{
m_psValidScrapMb[row].strStart = TrimStr(sql_get.GetFieldValue(row,"startMb"));
}
//以上是:载入有效离散零星号码段到m_psValidScrapMb
//---------------------------------
}
//.....................................................
//以下是:载入无效离散零星号码段到m_psValidScrapMb
strSql.Format("select startMb from gr_mobile_ctrl where ctrlType=0 and validState=0 order by startMb asc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return FALSE;
}
sql_get.FetchAllData();
m_nInvdScrapMbCount = sql_get.RowCount();////有效号码段个数,号码段位数为11
if(m_nInvdScrapMbCount > 0)
{
if(m_psInvdScrapMb != NULL )///离散零星号码段,号码段位数为11
{
delete [] m_psInvdScrapMb ;
m_psInvdScrapMb = NULL;
}
m_psInvdScrapMb = new SMobileCtrl[ m_nInvdScrapMbCount ];
for(row=0 ; row < m_nInvdScrapMbCount ; row++ )
{
m_psInvdScrapMb[row].strStart = TrimStr(sql_get.GetFieldValue(row,"startMb"));
}
}
return TRUE ;
}
void CDeliverThread::GetMoTabName(CString strMsg, CString &strMoTab, const char * szDestAddr)
{
CString strCmd ,strSender, strDestAddr,_strDestAddr;
int i;
strCmd = TrimStr(strMsg);
strCmd.MakeUpper();
_strDestAddr = TrimStr(szDestAddr);
if (_strDestAddr.Find(m_szSPNumber) > 1)
{
if(_strDestAddr.Find("86") == 0)
strDestAddr = _strDestAddr.Right(_strDestAddr.GetLength()-2);
else
strDestAddr = _strDestAddr;
}
else
strDestAddr = _strDestAddr;
strMoTab.Empty() ;
for(i = 0; i< m_nNumOfGameCmd ; i++ ) {
strSender = TrimStr(m_astCmdTab[i].strSender);
if(m_astCmdTab[i].iSenderType == 1) { //根据接入号精确匹配
if((strDestAddr.CompareNoCase(strSender) == 0)
&& (IsFindedMoTable(i, strCmd,strMoTab)))
break ;
}
else { //根据接入号模糊匹配
//-- add by gyh 2003.8.1
if( ( strDestAddr.Find("81288") == 0 ) && ( strDestAddr.GetLength()==10 ) ){//倾城之恋的会员
strMoTab.Format( "%s",m_szChatTable ) ;
break ;
}
//-- add by gyh 2003.8.1
if((strDestAddr.Find(strSender) == 0)
&& (IsFindedMoTable(i,strCmd,strMoTab)))
break ;
}
}
if((!strMoTab.IsEmpty()) && (m_astCmdTab[i].iMoTabNum > 1)) {
CString strTmp;
int iRandom = rand();
iRandom = iRandom % m_astCmdTab[i].iMoTabNum + 1;
strTmp.Format("%s_%d",strMoTab, iRandom) ;
strMoTab = strTmp ;
}
//开启聊天功能
if (strMoTab.IsEmpty())
{
if (m_bChat)
{
if ( strDestAddr.GetLength() >= (strlen(m_szSPNumber)+m_nChatLen) || IncludeChinese(strCmd))
strMoTab.Format("%s",m_szChatTable);
}
}
}
BOOL CDeliverThread::IsFindedMoTable(int nIndex,CString strCmd, CString &strMoTab )
{
CString strCommand;
bool IsFinded = false ;
strCommand = TrimStr(m_astCmdTab[nIndex].strCmd);
if (m_astCmdTab[nIndex].iMatchType == 1)
{ //根据指令精确匹配
if (strCommand.CompareNoCase("00000") == 0) //指令全部分配表中,条件是精确匹配且配置指令为"00000"
{
strMoTab = m_astCmdTab[nIndex].strMoTab ;
IsFinded = true ;
}
else
{
if( strCmd.CompareNoCase(strCommand) == 0 ) {
strMoTab = m_astCmdTab[nIndex].strMoTab ;
IsFinded = true ;
}
}
}
else
{ //根据指令模糊匹配
if( strCmd.Find(strCommand) == 0 )
{
strMoTab = m_astCmdTab[nIndex].strMoTab ;
IsFinded = true ;
}
}
return IsFinded ;
}
BOOL CDeliverThread::IncludeChinese(CString strMsg)
{
int iStrLength = strMsg.GetLength();
char *m_newBuffer = new char [iStrLength];
LPSTR newTempPtr = m_newBuffer;
BOOL bIncludeChinese = false;
unsigned short halfChinese=0;
int iNumOfWords = 0;
int iPos=0;
while( iPos<iStrLength ){
*newTempPtr = strMsg.GetAt(iPos);
if((unsigned char)*newTempPtr >= 0xa1){//大于0xa1的字节为汉字字节
bIncludeChinese = true ;
break;
}
iPos++;
}
delete m_newBuffer;
return bIncludeChinese;
}
BOOL CDeliverThread::IsTimeToForbidMobile()
{
BOOL bForbid = false;
CTime tm = CTime::GetCurrentTime();
CString strCurTime,strForbidTime,strCurDate,strLastDate;
strCurDate.Format("%04d-%02d-%02d",tm.GetYear(),tm.GetMonth(),tm.GetDay());
GetPrivateProfileString("系统","当前日期","2002-11-27",m_szCurrentDate,11,SGIP_INI_FILE);
strLastDate.Format("%s",m_szCurrentDate);
strCurTime.Format("%02d%02d",tm.GetHour(),tm.GetMinute());
strForbidTime.Format("%s",m_szForbidTime);
m_bForbidFlag = GetPrivateProfileInt("系统","搜索禁止用户标志",0,SGIP_INI_FILE);
if (!m_bForbidFlag && strCurTime >= strForbidTime)
{
bForbid = true;
WritePrivateProfileString("系统","搜索禁止用户标志","1",SGIP_INI_FILE);
}
if (strCurDate != strLastDate)
{
WritePrivateProfileString("系统","搜索禁止用户标志","0",SGIP_INI_FILE);
WritePrivateProfileString("系统","当前日期",strCurDate,SGIP_INI_FILE);
}
return bForbid;
}
void CDeliverThread::LoadInValidMobile()
{
//载入零星号段
CSqlExec sql_get(&m_database);
CString strSql;
int nRecCount = -1;
strSql.Format("select startMb from gr_mobile_ctrl where ctrlType=0 and validState=0 order by startMb asc");
sql_get.SetSqlStatement( strSql );
if( !sql_get.Open() )
{
CString strTmp ;
strTmp.Format("查询数据库失败,SQL语句是:%s",strSql) ;
LogFile(strTmp) ;
return ;
}
sql_get.FetchAllData();
nRecCount = sql_get.RowCount();////有效号码段个数,号码段位数为11
if (nRecCount <= 0)
return;
m_nInvdScrapMbCount = nRecCount;
if(m_psInvdScrapMb != NULL )///离散零星号码段,号码段位数为11
{
delete [] m_psInvdScrapMb ;
m_psInvdScrapMb = NULL;
}
m_psInvdScrapMb = new SMobileCtrl[m_nInvdScrapMbCount];
for(int row=0 ; row < m_nInvdScrapMbCount ; row++ )
{
m_psInvdScrapMb[row].strStart = TrimStr(sql_get.GetFieldValue(row,"startMb"));
}
}
BOOL CDeliverThread::IsGameUser(CString strSrc)
{//是否定制了其中的任何一项
CString strGameSql ;
for (int i=0;i<m_nGameQuitNum;i++) {
strGameSql = TrimStr(m_sGameQuit[i].strGameSQL);
if (strGameSql.IsEmpty())
continue;
if (IsGameUser(strGameSql,strSrc))
return true ;
}
return false ;
}
CString CDeliverThread::GetResMsg(CString &shortmsg,CString &servicetype,CString &csRegMobile,int iFlag)
{
CString strTemp = "8001 ";
if(iFlag == 2)
strTemp = "8003";
char chSeparator = ' ';
shortmsg = shortmsg.Mid(7);
int iPos = shortmsg.Find(chSeparator);
if(iPos > 0)
{
strTemp += shortmsg.Mid(0,iPos); //SequenceID
shortmsg = shortmsg.Mid(iPos+1); //UserID
iPos = shortmsg.Find(chSeparator);
if(iPos > 0)
{
// servicetype = shortmsg.Mid(0,iPos);
csRegMobile = shortmsg.Mid(0,iPos);
shortmsg = shortmsg.Mid(iPos+1); //SvcID
iPos = shortmsg.Find(chSeparator);
if(iPos > 0)
{
servicetype = shortmsg.Mid(iPos+1);
}else
servicetype = shortmsg;
}
}
strTemp += " 0";
return strTemp;
}
void CDeliverThread::SubmitToOrderSend(const char *szMsg, const char *szSAddr, const char *szDAddr, const char *szLinkID, const char *szServiceType)
{
CSqlExec sql_deliver(&m_database);
CString strSql,strMsg;
CString strSAddr,_strSAddr,strDAddr,_strDAddr;
_strSAddr = szSAddr;
_strDAddr = szDAddr;
//8686008600 868188 8188
if (_strSAddr.Find("86") == 0)
strSAddr = _strSAddr.Right(_strSAddr.GetLength()-2);
else
strSAddr = _strSAddr;
if (_strDAddr.Find(m_szSPNumber) > 1)
{
if(_strDAddr.Find("86") == 0)
strDAddr = _strDAddr.Right(_strDAddr.GetLength()-2);
else
strDAddr = _strDAddr;
}
else
strDAddr = _strDAddr;
strSql.Format("insert into %s(message,mobile,sender,linkid,servicetype,feetype,feevalue,givenvalue,motomtflag,dataencode) \
values('%s','%s','%s','%s','%s','1','0','0','0',0)",
m_szTableName,
szMsg,
strSAddr,
strDAddr,
szLinkID,
szServiceType);
sql_deliver.SetSqlStatement(strSql);
if(!sql_deliver.Open())
{
strMsg.Format("执行SQL语句出错:%s",strSql);
LogMsg(strMsg);
LogFile(strMsg);
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -