⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsoperate.cpp

📁 Web URL 解析程序客户端
💻 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 + -