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

📄 destiny.cpp

📁 这个一个联通短信网关程序.并且在SP已经运行稳定.很有学习价值
💻 CPP
字号:
// destiny.cpp : 实现文件
//

#include "stdafx.h"
#include "moUniteService.h"
#include "destiny.h"


// Cdestiny

IMPLEMENT_DYNAMIC(Cdestiny, CWnd)
Cdestiny::Cdestiny()
{
}

Cdestiny::~Cdestiny()
{
}
void Cdestiny::getDestiny(CString strCmd,CString strCPhone,BOOL blSource)
{
	CString strCode;
	CString strClientPhone;	
	CString strQuery;
	CADODatabase mo_db;
	CADORecordset rsc(&mo_db);
	CADORecordset rs(&mo_db);
	strCode=strCmd.Mid(2,2).MakeUpper();
	strClientPhone=strCPhone;
	strQuery=strCmd.Mid(4).MakeUpper();
	CString strMsgSend="";
	CString strSource="1259197";

	if(mo_db.OpenSQLServerDirect(MyReg::GetDBIP(),MyReg::GetDBUserID(),MyReg::GetDBPassword(),"ewsv3"))
	{
		CString strSql;
		//先将到来的数据天家到表SMS_SM01_MO中
		rsc.Open("select * from sms_sm01_mo where 1=0");
		rsc.AddNew();
		rsc.SetFieldValue("FromMobile",strClientPhone);
		if(strCode.GetLength()>0)
			rsc.SetFieldValue("SmsType",strCode);
		else
			rsc.SetFieldValue("SmsType",strCmd);
		rsc.SetFieldValue("SmsMsg",strQuery);
		if(blSource)rsc.SetFieldValue("FromSource",strSource);
		rsc.Update();

		if(strCode.GetLength()>0)
		{
			if(strCode=="01")
			{
				/*
				号码占卜:
				手机号码是13XX8888888,将8888÷80=111.1,再将111.1-111=0.1,
				然后0.1×80=8,这个“8”就是你的命运数了,最后你在命运数对表
				里可以查到你是“吉”了!
				*/
				CString strTemp=strClientPhone.Right(4);
				char temp[50];
				strcpy(temp,strTemp.GetBuffer(0));
				int iTemp=atoi(temp);				
				double dTemp=(double)iTemp/80;
				iTemp=(dTemp-(int)dTemp)*80;
				strTemp.Format("%d",iTemp);				
				strSql="select * from sms_sm01_luck where smsType='01' and numbers='"+strTemp+"'";
				rs.Open(strSql);
				if(rs.IsBOF() && rs.IsEOF())
				{
					strMsgSend.Format("计算结果%s,拥有此号之人,不富则贵,此号为稀号呀!",strTemp);
				}
				else
				{
					while(!rs.IsEOF())
					{
						rs.GetFieldValue("luck",strMsgSend);
						rs.MoveNext();
					}
				}
				rs.Close();
			}
			else if(strCode=="02")
			{
				/*
				手机号码占卜命运
				Step1
				先将所属手机号码(如13909876556)分拆,然后逐个数目单一加起来。
				例:1+3+9+0+9+0+1+2+3+4+5+6=43

				Step2
				得出结果43后(一般为两位数),再一次拆开计算。
				例:4+3=7

				Step3
				最后计出的个位数「7」,就是你手机所属的命运数,也正是与机主唇齿相依的数字。详细情况请参阅下文。
				*/
				CString strTemp;
				int iTemp=0;
				char temp[10];
				CString strPhoneTemp=strClientPhone.Right(11);
				for(int i=0;i<strPhoneTemp.GetLength();i++)
				{
					strcpy(temp,strPhoneTemp.Mid(i,1));
					iTemp=iTemp+atoi(temp);
				}
				strTemp.Format("%d",iTemp);
				
				if(strTemp.GetLength()>1)
				{
					strTemp=getLuckNum(strTemp);//getLuckNum()为一个递归函数
				}
				strSql="select * from sms_sm01_luck where smsType='02' and numbers='"+strTemp+"'";
				rs.Open(strSql);
				if(rs.IsBOF() && rs.IsEOF())
				{
					strMsgSend.Format("计算结果%s,拥有此号之人,不富则贵,此号为稀号呀!",strTemp);
				}
				else
				{
					while(!rs.IsEOF())
					{
						rs.GetFieldValue("luck",strMsgSend);
						rs.MoveNext();
					}
				}
				rs.Close();
			}
			else if(strCode=="03")
			{
				//根据用户输入的出生日查询数据
				if(strQuery.GetLength()>0)
				{
					strSql="select * from sms_sm01_luck where smstype='03' and numbers='"+strQuery+"'";
					rs.Open(strSql);
					if(rs.IsBOF() && rs.IsEOF())
					{
						strMsgSend.Format("没有%s日这一天呀!是不是您输入错误呀!",strQuery);
					}
					else
					{
						while(!rs.IsEOF())
						{
							rs.GetFieldValue("luck",strMsgSend);
							rs.MoveNext();
						}
					}
					rs.Close();
				}
				else
				{
					strMsgSend="没有输入出生日,或输入格式错误。格式6603+出生日,如660304为查询4日出生的人的性格。";
				}
			}
			else if(strCode=="04")
			{
				//根据用户输入的笔画差查询爱情数据
				if(strQuery.GetLength()>0)
				{
					strSql="select * from sms_sm01_luck where smstype='04' and numbers='"+strQuery+"'";
					rs.Open(strSql);
					if(rs.IsBOF() && rs.IsEOF())
					{
						strMsgSend.Format("没有这么多的笔画吧!是不是您计算错误呀!",strQuery);
					}
					else
					{
						while(!rs.IsEOF())
						{
							rs.GetFieldValue("luck",strMsgSend);
							rs.MoveNext();
						}
					}
					rs.Close();
				}
				else
				{
					strMsgSend="格式6604+姓名笔画差。笔画差计算方法:数数你和他的姓名笔画,笔画多的减去少的,你减别人,他是你的?他减你,你是他的?";
				}
			}
			else
			{
				strMsgSend="对不起!还没有开展该服务呀!查询服务发66到8765查询。";
			}
			
		}
		else
		{
			strMsgSend="01.手机号码占卜;02.手机号码占卜命运;03.出生日占卜你的性格;04.姓名笔画占卜爱情。如发短信6601到8765可知号码的凶吉。";
		}
		/*::CMPP_Send("8765","66",strClientPhone,"60",MyReg::GetYidongUsername(),
			MyReg::GetYidongPassword(),MyReg::GetYidongIP(),MyReg::GetYidongPort(),
			strClientPhone,strMsgSend,"02");*/
		::SGIP_Send("66",MyReg::GetUnionSPNumber(),strClientPhone,MyReg::GetUnionUsername(),
			MyReg::GetUnionPassword(),MyReg::GetUnionIP(),MyReg::GetUnionPort(),strClientPhone,
			strMsgSend,MyReg::GetPayTypeUnion(),"60");

		//将发送数据添加到表sms_sm01_mo中,记录发送的数据。
		rsc.AddNew();
		rsc.SetFieldValue("FromMobile",strClientPhone);
		if(strCode.GetLength()>0)
			rsc.SetFieldValue("SmsType",strCode);
		else
			rsc.SetFieldValue("SmsType",strCmd);
		rsc.SetFieldValue("SmsMsg",strMsgSend);
		if(blSource)rsc.SetFieldValue("FromSource",strSource);
		rsc.SetFieldValue("MTFlag",1);
		rsc.Update();
		rsc.Close();
		mo_db.Close();
	}
	else
	{	
		/*::CMPP_Send("8765","",strClientPhone,"10",MyReg::GetYidongUsername(),
			MyReg::GetYidongPassword(),MyReg::GetYidongIP(),MyReg::GetYidongPort(),
			strClientPhone,"","02");*/
		::SGIP_Send("66",MyReg::GetUnionSPNumber(),strClientPhone,MyReg::GetUnionUsername(),
			MyReg::GetUnionPassword(),MyReg::GetUnionIP(),MyReg::GetUnionPort(),strClientPhone,
			"手机算命服务处理失败,请等片刻重新查询。",MyReg::GetPayTypeUnion(),"60");
	}
}

/*
*********************************************************************
功能:将多字符的字符串计算成个位数字并转换成字符串的函数。

实现:函数是一个递归。想将字符串拆分成单个数字,再将数字相加,如果结果
	  为多个字符则继续调用本省拆分字符串。

*********************************************************************
*/
CString Cdestiny::getLuckNum(CString str)
{
	CString strTemp;
	int iTemp=0;
	char temp[10];
	strTemp=str;
	for(int j=0;j<strTemp.GetLength();j++)
	{
		strcpy(temp,strTemp.Mid(j,1));
		iTemp=iTemp+atoi(temp);
	}
	strTemp.Format("%d",iTemp);
	if(iTemp>9)getLuckNum(strTemp);
	return strTemp;
}
// Cdestiny 消息处理程序



BEGIN_MESSAGE_MAP(Cdestiny, CWnd)
END_MESSAGE_MAP()



// Cdestiny 消息处理程序

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -