📄 smsoperate.cpp
字号:
#include "SMSOperate.h"
int CSMSOperate::GetSendSMS(SENDSM& ssm, int iProvider)
{
if(NULL == m_pDB) return -1;
if(NULL == m_pLog) return -1;
if(NULL == &ssm) return -1;
string strSQL;
if(iProvider == 0)//china union
{
ssm.strProvider = "0";
strSQL = "SELECT sendid, sournum, destnum, ServiceType, FeeType, FeeValue, content, LinkID"; strSQL += " FROM platform.tblSendSms WHERE ProvinceId = 250 AND ((SendFlag = 0 and RetryNum < 5) OR (SendFlag = 2 and RetryNum < 5)) AND rownum < 2 ";
}
else if(iProvider == 1)//china mobile
{
ssm.strProvider = "1";
strSQL = "SELECT sendid, SrcId, DestTerminalId, ServiceType, FeeType, FeeCode, MsgContentGB, LinkID"; strSQL += " FROM platform.tblSendSmsCM WHERE ProvinceId = 150 AND SendStatus = 0 AND RepeatNum < 6 AND rownum < 2 ";
}
else
return -1;
Cursor cursor;
if(m_pDB->Select(strSQL, cursor))
{
try{
if(!cursor.fetch())
{
cursor.drop();
return -1;
}
cursor.getStr(0, ssm.strSendID); cursor.getStr(1, ssm.strSourNum); cursor.getStr(2, ssm.strDestNum);
cursor.getStr(3, ssm.strServiceType);
cursor.getStr(4, ssm.strFeeType);
cursor.getStr(5, ssm.strCost); cursor.getStr(6, ssm.strContent); cursor.getStr(7, ssm.strLinkID);
cursor.drop();
Filter(ssm);
*m_pLog<<TIME<<"["<<ssm.strSourNum<<"]["<<ssm.strDestNum<<"]["<<ssm.strLinkID<<"]["<<ssm.strServiceType<<"]["<<ssm.strCost.c_str()<<"]"<<ssm.strContent.c_str()<<END;
if(iProvider == 0)//china union
strSQL = "Update platform.tblSendSms set RetryNum = RetryNum + 1 where sendid=" + ssm.strSendID;
else if(iProvider == 1)//china mobile
strSQL = "Update platform.tblSendSmsCM set RepeatNum = RepeatNum + 1 where sendid=" + ssm.strSendID;
m_pDB->TransStart();
if(m_pDB->Update(strSQL))
{
m_pDB->TransCommit();
return 0;
}
else
{
m_pDB->TransRollback();
return -1;
}
}catch(OraError& ex){
cursor.drop();
*m_pLog<<TIME<<"CSMSOperate::GetSendSMS. SQL="<<strSQL<<"\n the cause="<<ex.message<<END;
}
}
return -1;
}
int CSMSOperate::UpdateSended(const SENDSM ssm)
{
if(NULL == m_pDB) return -1;
if(NULL == m_pLog) return -1;
if(NULL == &ssm) return -1;
string strSQL;
if("0" == ssm.strProvider)//china union
strSQL = "Update platform.tblSendSms set SendFlag=1,SendDate=sysdate where sendid=" + ssm.strSendID;
else if("1" == ssm.strProvider)//china mobile
strSQL = "Update platform.tblSendSmsCM set SendStatus=3,SendTime=sysdate where sendid=" + ssm.strSendID;
m_pDB->TransStart();
if(m_pDB->Update(strSQL))
{
m_pDB->TransCommit();
return 0;
}
else
{
m_pDB->TransRollback();
return -1;
}
}
void CSMSOperate::Filter(SENDSM& p_ssm){ int iPos; while (( iPos = p_ssm.strContent.find(" ")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find("+")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find("+")) != -1) { p_ssm.strContent.replace(iPos, 2, ""); } while (( iPos = p_ssm.strContent.find("'")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find("\"")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find("&")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find(":")) != -1) { p_ssm.strContent.replace(iPos, 1, ""); } while (( iPos = p_ssm.strContent.find(":")) != -1) { p_ssm.strContent.replace(iPos, 2, ""); }
//for people port
while (( iPos = p_ssm.strContent.find("\r\n")) != -1) { p_ssm.strContent.replace(iPos, 2, "@10@"); }
while (( iPos = p_ssm.strContent.find("\n\r")) != -1) { p_ssm.strContent.replace(iPos, 2, "@10@"); }
while (( iPos = p_ssm.strContent.find("\r")) != -1) { p_ssm.strContent.replace(iPos, 1, "@10@"); }
while (( iPos = p_ssm.strContent.find("\n")) != -1) { p_ssm.strContent.replace(iPos, 1, "@10@"); }
while (( iPos = p_ssm.strContent.find("?")) != -1) { p_ssm.strContent.replace(iPos, 1, "@1@"); }
while (( iPos = p_ssm.strContent.find("=")) != -1) { p_ssm.strContent.replace(iPos, 1, "@2@"); }
while (( iPos = p_ssm.strContent.find("%")) != -1) { p_ssm.strContent.replace(iPos, 1, "@3@"); }
while (( iPos = p_ssm.strContent.find("\\")) != -1) { p_ssm.strContent.replace(iPos, 1, "@6@"); }
while (( iPos = p_ssm.strContent.find("#")) != -1) { p_ssm.strContent.replace(iPos, 1, "@7@"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -