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

📄 suanming.cpp

📁 移动梦网平台主程序
💻 CPP
字号:
/*姓名与人生	点播:先发送100 到 9020,再发送姓名到9020011        用户表:USER_SUANMING,信息表:QUESTION_SUANMING XM,1.00元/条将现在的菜单改为 1.含义2.综合3.财运4.爱情5.健康2006.02.05由于原来的用户上一条下五条的时候,我们只能扣到一条钱,所有改为上一条下一条的模式新的用户上行记录表:USER_SUANMING_CONFIG	2006.04.13在流程里增加五星电器合作短信投票业务流程(发送WX编号到5566099),增加用户表USER_FIVE_STAR*/#include <stdio.h>#include <string.h>#include <time.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include "../include/define.h"#include "../include/CMPPAPI.h"#include "mysql/mysql.h"#include "../include/sm_tools.h"#include "../include/sm_db.h"#define SELF_TYPE	"suanming"#define INIFILE "../config/sm.ini"extern char db_host[100],db_user[100],db_passwd[100],db_dbname[100];extern MYSQL *myconn;extern char SP_ID[20];static int ScanMsg();static int ScanMsgSession();static int haveuser(char *msisdn);static int havefriend(char *tname,char *id);static int DoService(char *code,char *ocode,char *content,char *msisdn,char *dcode,float fee);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);static int GoTo_WX(char *msisdn,char *content,char *dcode,float fee);static char sp_id_extern[20];static char service_phone[20];static char linkid[9];int InitSuanMing(){	GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);	srand(time(NULL));	return 0;}int DoSuanMing(){	int retval;	retval = ScanMsg();	if(retval < 0)	{		return 0;	}	retval = ScanMsgSession();		return retval;}static int getrand_num(int max_num){	float retval;	int i;		retval = (float)(rand())/(float)(RAND_MAX);	retval = retval * max_num;	i = (int)(retval);	i++;		return i;}static int ScanMsg(){	char sql[500];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	int retval,i;	float fee,fee_mon;	int feetype;	char id[11],icpid[3],code[11],msisdn[22],dcode[11];	char day[20];	char msg[500];		memset(sql,0,sizeof(sql));		sprintf(sql,	        "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,DCODE,FEE,LINKID\	         FROM COM_RECV RECV,COD_SERVICE COD\	         WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='SM' limit 200");	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询指令失败");		return 0;	}	if(res == NULL)	{		return 0;	}	while( row = mysql_fetch_row(res))	{		strcpy(id,row[0]);		strcpy(icpid,row[1]);		strcpy(code,row[2]);		strcpy(msisdn,row[3]);		strcpy(dcode,row[4]);		fee = atof(row[5]);		strcpy(linkid,row[6]);		sprintf(sql,"UPDATE COM_RECV SET FLAG=1,DEAL_DATE='%s' WHERE ID=%s",getnowdate(day),id);		if(DoSQL(sql,&myconn) != 0)		{			writelog(SELF_TYPE,"更新接受指令表出错!");			mysql_free_result(res);			return 0;		}		strcpy(msg,"请输入您的姓名,然后直接回复,不要修改发送号码!");		sprintf(sp_id_extern,"011");		SendUser(msisdn,msg,dcode,fee,1);	}	mysql_free_result(res);		return 0;}static int ScanMsgSession(){	char sql[2000];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	int retval,i,feetype;	float fee,fee_mon;	char id[11],icpid[3],code[11],msisdn[22],dcode[11],ocode[11];	char day[20];	char msg[500];		memset(sql,0,sizeof(sql));		sprintf(sql,	        "SELECT ID,ICPID,UPPER(SERVICECODE),OTHERCODE,MSGCONTENT,SRCTERMID,DCODE,FEE,LINKID\	         FROM COM_RECV_SESSION RECV,COD_SERVICE_SESSION COD\	         WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='SM' limit 200");	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询指令失败");		return 0;	}	if(res == NULL)	{		return 0;	}	while( row = mysql_fetch_row(res))	{		strcpy(id,row[0]);		strcpy(icpid,row[1]);		strcpy(code,row[2]);		strcpy(ocode,row[3]);		strcpy(msg,row[4]);		strcpy(msisdn,row[5]);		strcpy(dcode,row[6]);		fee = atof(row[7]);		strcpy(linkid,row[8]);		sprintf(sql,"UPDATE COM_RECV_SESSION SET FLAG=1,DEAL_DATE='%s' WHERE ID=%s",getnowdate(day),id);		if(DoSQL(sql,&myconn) != 0)		{			writelog(SELF_TYPE,"更新接受指令表出错!");			mysql_free_result(res);			return 0;		}		DoService(code,ocode,msg,msisdn,dcode,fee);	}	mysql_free_result(res);		return 0;}static int DoService(char *code,char *ocode,char *content,char *msisdn,char *dcode,float fee){	MYSQL_ROW row;	MYSQL_RES *res = NULL;	char name[30],day[20];	int i,pos,retval,num,j,count,id,nameid,state,intnum;	char msg[1000],msg1[1000],demo[1000],username[30];	char sql[500],months[3];	id=0;nameid=0;	pos = 0;		trim(content,' ');//**************start******************2006.04.17*************************	if(strcmp(ocode,"1")==0)	{		upper(content);		GoTo_WX(msisdn,content,dcode,fee);		return 0;	}//***************end******************2006.04.17*************************	if(strcmp(ocode,"")==0)	{		for(i = 0;i<20;i++)		{			while(content[pos] == ' ')			{				pos ++;			}			if(content[pos] == '\0') break;			name[i] = content[pos];			pos ++;		}		name[i] = '\0';		if(i == 0)		{			strcpy(msg,"请输入您的姓名,然后直接回复");			sprintf(sp_id_extern,"%s",code);			SendUser(msisdn,msg,dcode,fee,1);			return 0;		}		sprintf(sql,"INSERT INTO USER_SUANMING_CONFIG(MSISDN,NAME,RECENT_DATE) VALUES('%s','%s','%s')",msisdn,name,getnowdate(day));		if(DoSQL(sql,&myconn) != 0)		{			writelog(SELF_TYPE,"更新USER_SUANMING_CONFIG指令表出错!");			return 0;		}		sprintf(msg,"破译姓名密码,提示06年人生风云!回复相应数字解析人生命理:1.含义2.综合3.财运4.爱情5.健康");		sprintf(sp_id_extern,"%s0",code);		SendUser(msisdn,msg,dcode,fee,1);	}	else if(strcmp(ocode,"0")==0)	{		intnum = atoi(content);		if(intnum>0 && intnum<6)		{			sprintf(sql,"SELECT NAME FROM USER_SUANMING_CONFIG WHERE MSISDN='%s' ORDER BY ID DESC LIMIT 1",msisdn);			retval = QuerySQL(sql,&myconn,&res);			if(retval != 0)			{				writelog(SELF_TYPE,"查询USER_SUANMING_CONFIG指令失败");				return 0;			}			if(res == NULL)			{				return 0;			}			if(row = mysql_fetch_row(res))			{				strcpy(name,row[0]);				mysql_free_result(res);								sprintf(sql,"SELECT DEMO%d FROM USER_SUANMING WHERE USERNAME='%s'",intnum,name);				retval = QuerySQL(sql,&myconn,&res);				if(retval != 0)				{					writelog(SELF_TYPE,"查询USER_SUANMING指令失败");					return 0;				}				if(res == NULL)				{					return 0;				}				if(row = mysql_fetch_row(res))				{					strcpy(msg1,row[0]);					mysql_free_result(res);					if(strcmp(msg1,"")!=0)					{						if(intnum!=3)						{							sprintf(msg,"%s %s",name,msg1);						}						else						{							sprintf(msg,"%s",msg1);						}						sprintf(sp_id_extern,"%s0",code);						SendUser(msisdn,msg,dcode,fee,1);					}					else					{						sprintf(sql,"SELECT SM%d FROM QUESTION_SUANMING ORDER BY RAND() LIMIT 1",intnum);						retval = QuerySQL(sql,&myconn,&res);						if(retval != 0)						{							writelog(SELF_TYPE,"查询QUESTION_SUANMING指令失败");							return 0;						}						if(res == NULL)						{							return 0;						}						if(row = mysql_fetch_row(res))						{							strcpy(msg1,"");							strcpy(msg1,row[0]);							sprintf(msg,"%s %s",name,msg1);														sprintf(sp_id_extern,"%s0",code);							SendUser(msisdn,msg,dcode,fee,1);														if(intnum==3)							{								sprintf(sql,"UPDATE USER_SUANMING SET DEMO%d='%s' WHERE USERNAME='%s'",intnum,msg,name);							}							else							{								sprintf(sql,"UPDATE USER_SUANMING SET DEMO%d='%s' WHERE USERNAME='%s'",intnum,msg1,name);							}							if(DoSQL(sql,&myconn) != 0)							{								writelog(SELF_TYPE,"更新接受指令表出错!");								mysql_free_result(res);								return 0;							}							strcpy(msg,"");						}						mysql_free_result(res);					}				}				else				{					mysql_free_result(res);					sprintf(sql,"SELECT SM%d FROM QUESTION_SUANMING ORDER BY RAND() LIMIT 1",intnum);					retval = QuerySQL(sql,&myconn,&res);					if(retval != 0)					{						writelog(SELF_TYPE,"查询QUESTION_SUANMING指令失败");						return 0;					}					if(res == NULL)					{						return 0;					}					if(row = mysql_fetch_row(res))					{						strcpy(msg1,"");						strcpy(msg1,row[0]);						sprintf(msg,"%s %s",name,msg1);						sprintf(sp_id_extern,"%s0",code);						SendUser(msisdn,msg,dcode,fee,1);												if(intnum==3)						{							sprintf(sql,"INSERT INTO USER_SUANMING(USERNAME,DEMO%d) VALUES('%s','%s')",intnum,name,msg);						}						else						{							sprintf(sql,"INSERT INTO USER_SUANMING(USERNAME,DEMO%d) VALUES('%s','%s')",intnum,name,msg1);						}						if(DoSQL(sql,&myconn) != 0)						{							writelog(SELF_TYPE,"更新接受指令表出错!");							mysql_free_result(res);							return 0;						}						strcpy(msg,"");											}					mysql_free_result(res);				}				sprintf(sql,"UPDATE USER_SUANMING_CONFIG SET NUM%d=NUM%d+1,RECENT_DATE='%s' WHERE MSISDN='%s' AND NAME='%s'",intnum,intnum,getnowdate(day),msisdn,name);				if(DoSQL(sql,&myconn) != 0)				{					writelog(SELF_TYPE,"更新USER_SUANMING_CONFIG指令表出错!");					return 0;				}			}			else			{				mysql_free_result(res);				strcpy(msg,"您的输入方法有误,请直接回复您的姓名");				sprintf(sp_id_extern,"%s",code);				SendUser(msisdn,msg,dcode,fee,1);			}		}		else		{			strcpy(msg,"您输入的数字有误,请输入1到5中的任一数字并直接回复");			sprintf(sp_id_extern,"%s0",code);			SendUser(msisdn,msg,dcode,fee,1);		}	}	else	{		strcpy(msg,"请输入您的姓名,然后直接回复,不要修改发送号码.");		sprintf(sp_id_extern,"%s",code);		SendUser(msisdn,msg,dcode,fee,1);	}	return 0;	}static int GoTo_WX(char *msisdn,char *content,char *dcode,float fee){	int retval,i=0,iFlag=0,iBuf=0;	char msg[500],sql[1000],buf[500],day[20];		memset(msg,0,sizeof(msg));	memset(sql,0,sizeof(sql));	memset(buf,0,sizeof(buf));	memset(day,0,sizeof(day));		if(strncmp(content,"WX",2)==0)	{		strncpy(buf,content+2,strlen(content)-2);		buf[strlen(content)-2]='\0';		iBuf=atoi(buf);		if(iBuf<=0)		{			iFlag=1;		}	}	else	{		iFlag=1;	}		if(1==iFlag)	{		sprintf(msg,"对不起,您发送的内容有误.正确格式为:WX选手编号,请重新投票.");		sprintf(sql,"INSERT INTO USER_FIVE_STAR(MSISDN,CONTENT,REG_DATE,SIGN) VALUES('%s','%s','%s','F')",msisdn,content,getnowdate(day));	}	else	{		sprintf(msg,"感谢您给%d号选手投票,五星电器为您提供五星级商品、五星级服务.",iBuf);		sprintf(sql,"INSERT INTO USER_FIVE_STAR(MSISDN,CONTENT,REG_DATE,SIGN) VALUES('%s','%d','%s','T')",msisdn,iBuf,getnowdate(day));	}	sprintf(sp_id_extern,"0111");	SendUser(msisdn,msg,dcode,fee,1);		if(DoSQL(sql,&myconn) != 0)	{		writelog(SELF_TYPE,"插入USER_FIVE_STAR用户表错误!");		return 0;	}		return 0;}static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag){	SEND_STRUC sendstruc;	char buf[100];	memset(&sendstruc,0,sizeof(sendstruc));	strcpy(sendstruc.icpid,"UN");	sendstruc.nMsgLevel = 3;	strcpy(sendstruc.sServiceID,dcode);	sendstruc.nMsgFormat = MSG_FORMAT_ASCII;	strcpy(sendstruc.sValidTime,"");	strcpy(sendstruc.sAtTime,"");	strcpy(sendstruc.sSrcTermID,SP_ID);	strcat(sendstruc.sSrcTermID,sp_id_extern);	strcpy(sendstruc.sDesTermID,msisdn);	sendstruc.sFeeCode = fee;	sendstruc.cFeeUserType=0;	strcpy(sendstruc.sFeeTerminalID,"");	sendstruc.cTpPid = 0;	sendstruc.cTpUdhi = 0;	strcpy(sendstruc.step,"9");	getnowdate(sendstruc.Send_Date);	strcpy(sendstruc.sMsgContent,msg);	checksql(sendstruc.sMsgContent);	strcpy(sendstruc.linkid,linkid);	switch(flag)	{		case 0:		//免费、错误信息			strcpy(sendstruc.sServiceID,"ERROR");			strcpy(sendstruc.sFeeType,"01");			sendstruc.nNeedReply = 0;			break;		case 1:		//按条点播(收费)			strcpy(sendstruc.sFeeType,"02");			sendstruc.nNeedReply = 1;			break;		case 2:		//包月点播(不收费的)			strcpy(sendstruc.sFeeType,"03");			sendstruc.nNeedReply = 1;			break;		case 3:		//包月扣费			strcpy(sendstruc.sFeeType,"03");			sendstruc.nNeedReply = 2;			break;		case 8:		//定购成功包			strcpy(sendstruc.sFeeType,"08");			sendstruc.nNeedReply = 1;			break;		case 9:		//取消成功包			strcpy(sendstruc.sFeeType,"09");			sendstruc.nNeedReply = 1;			break;		default:	//其它						strcpy(sendstruc.sServiceID,"ERROR");			strcpy(sendstruc.sFeeType,"01");			sendstruc.nNeedReply = 0;			break;	}	SendMsg(&sendstruc,&myconn);	return 0;}

⌨️ 快捷键说明

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