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

📄 menu.cpp

📁 移动梦网平台主程序
💻 CPP
字号:
#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	"menu"#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 DoService(char *icpid,char *code,char *ocode,                     char *content,char *msisdn,char *dcode,int feetype,float fee,float fee_mon);static int SendUser(char *icpid,char *msisdn,char *msg,       		         char *dcode,int fee_type,float fee,float fee_mon,char *fee_msisdn,int flag);static int GetPort(char *msg,char *code);static char WEL_INFO[200];static int MSGLEVEL;extern int webflag;static char service_phone[20];static char sp_id_extern[20];static char linkid[9];int InitMenu(){	GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);	srand(time(NULL));	return 0;}int DoMenu(){	int retval;	retval = ScanMsg();	if(retval < 0)	{		return 0;	}	retval = ScanMsgSession();		return retval;}static int ScanMsg(){	char sql[2000];	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,WEBFLAG,FEETYPE,FEE_MON,LINKID	         FROM COM_RECV RECV,COD_SERVICE COD	         WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='BZ' 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]);		webflag = atoi(row[6]);		feetype = atoi(row[7]);		fee_mon = atof(row[8]);		strcpy(linkid,row[9]);		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,"更新接受指令表出错1!");			return 0;		}		if(GetPort(msg,code) == 0)		{			writelog(SELF_TYPE,"更新接受指令表出错2!");			return 0;		}		else		{				SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0);		}		return 0;	}	mysql_free_result(res);		return 0;}static int GetPort(char *msg,char *code){	char sql[2000];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	char ocode[10];	int retval;		sprintf(sql,"SELECT MENU_ITEM,PORT.PORT FROM MENU,MENU_PORT PORT WHERE MENU.CODE=PORT.PORT AND PORT.UPCODE='%s'",code);	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询指令失败");		return 0;	}	if(res == NULL)	{		return 0;	}	if( row = mysql_fetch_row(res))	{		strcpy(msg,row[0]);		sprintf(sp_id_extern,"010%s",row[1]);		mysql_free_result(res);				return 1;	}	else	{		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,FEETYPE,FEE_MON,LINKID	         FROM COM_RECV_SESSION RECV,COD_SERVICE_SESSION COD	         WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='BZ' 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]);		feetype = atoi(row[8]);		fee_mon = atof(row[9]);		strcpy(linkid,row[10]);		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,"更新接受指令表出错3!");			return 0;		}				DoService(icpid,code,ocode,msg,msisdn,dcode,feetype,fee,fee_mon);	}	mysql_free_result(res);		return 0;}static int DoService(char *icpid,char *code,char *ocode,                     char *content,char *msisdn,char *dcode,int feetype,float fee,float fee_mon){	int len,type,retval;	int flag;	char msg[500];	char sql[2000];	char fun[10],day[20];	char *argv[2];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	len = strlen(ocode);	if(len < 3)	{		sprintf(msg,"请在原来的短信上直接回复,不要修改发送号码,如果有问题请拨打客服热线:%s,谢谢",service_phone);		SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0);		return 0;	}	strncpy(fun,ocode,3);	fun[3] = '\0';	type = atoi(content);	if(type > 9 || type <= 0)	{		sprintf(msg,"您的选择有错误,请核实后重新发送,如果有问题请拨打客服热线:%s,谢谢",service_phone);		SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0);		return 0;	}		sprintf(sql,"SELECT SEL%d,END_FLAG,MENU_ITEM FROM MENU WHERE CODE='%s'",type,fun);	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询指令失败");		return 0;	}	if(res == NULL)	{		return 0;	}	if( row = mysql_fetch_row(res))	{		strcpy(fun,row[0]);		flag = atoi(row[1]);		strcpy(msg,row[2]);		mysql_free_result(res);			}	else	{		mysql_free_result(res);		sprintf(msg,"请在原来的短信上直接回复,不要修改发送号码,如果有问题请拨打客服热线:%s,谢谢",service_phone);		SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0);		return 0;	}		if(flag != 1)	{		sprintf(sql,"SELECT END_FLAG,MENU_ITEM FROM MENU WHERE CODE='%s'",fun);		retval = QuerySQL(sql,&myconn,&res);		if(retval != 0)		{			writelog(SELF_TYPE,"查询指令失败");			return 0;		}		if(res == NULL)		{			return 0;		}		if( row = mysql_fetch_row(res))		{			flag = atoi(row[0]);			strcpy(msg,row[1]);			mysql_free_result(res);						if(flag != 1)			{				sprintf(sp_id_extern,"010%s",fun);				SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0);				return 0;			}		}		else		{			mysql_free_result(res);			sprintf(msg,"Menu联接有错误:ocode=[%s],sel%d=[%s],找不到!",ocode,type,fun);			SendUser(icpid,"13905159912",msg,"-XX",0,fee,fee_mon,msisdn,0);			return 0;		}	}		if(splitarg(msg,argv,2) != 2)	{		argv[1] = " ";	}		sprintf(sql,"INSERT INTO COM_RECV(ICPID,MSGID,MSGLEVEL,SERVICEID,SERVICECODE,MSGFORMAT,SRCTERMID,ISREPLY,MSGCONTENT,DESTTERMID,TPPID,TPUDHI,RECV_DATE,FLAG)	             VALUES('BZ','0',0,'9999','%s',15,'%s',0,'%s','5566',0,0,'%s',0)",	             argv[0],msisdn,argv[1],getnowdate(day));	if(DoSQL(sql,&myconn) != 0)	{		writelog(SELF_TYPE,"更新接受指令表出错4!");		return 0;	}		return 0;}static int SendUser(char *icpid,char *msisdn,char *msg,       		         char *dcode,int feetype,float fee,float fee_mon,char *fee_msisdn,int flag){	SEND_STRUC sendstruc;	char *day;	char buf[100];	if(strcmp(msisdn,fee_msisdn) == 0)	{		sendstruc.cFeeUserType=0;		strcpy(sendstruc.sFeeTerminalID,"");	}	else	{		sendstruc.cFeeUserType=3;		strcpy(sendstruc.sFeeTerminalID,fee_msisdn);	}		memset(&sendstruc,0,sizeof(sendstruc));	strcpy(sendstruc.icpid,icpid);	sendstruc.nMsgLevel = 3;	sendstruc.nMsgFormat = MSG_FORMAT_ASCII;	strcpy(sendstruc.sServiceID,dcode);	strcpy(sendstruc.sValidTime,"");	strcpy(sendstruc.sAtTime,"");	strcpy(sendstruc.sSrcTermID,SP_ID);	strcat(sendstruc.sSrcTermID,sp_id_extern);	strcpy(sendstruc.sDesTermID,msisdn);	sendstruc.cTpPid = 0;	sendstruc.cTpUdhi = 0;	strcpy(sendstruc.step,"9");	day = getnowdate(sendstruc.Send_Date);	strcpy(sendstruc.sMsgContent,msg);	checksql(sendstruc.sMsgContent);	strcpy(sendstruc.linkid,linkid);		switch(feetype)	{	case 0:	/*免费*/		sendstruc.nNeedReply = NEED_REPLY_NO;		sendstruc.sFeeCode = 0.10;		strcpy(sendstruc.sFeeType,"00");		break;			case 3:	/*包月*/		if(flag == 0)		{			sendstruc.nNeedReply = NEED_REPLY_NO;			sendstruc.sFeeCode = 0.10;			strcpy(sendstruc.sFeeType,"00");		}		else		{			sendstruc.nNeedReply = 2;			sendstruc.sFeeCode = fee_mon;			strcpy(sendstruc.sFeeType,"03");			SendMsg(&sendstruc,&myconn);			sendstruc.nNeedReply = NEED_REPLY_NO;			sendstruc.sFeeCode = 0.10;			strcpy(sendstruc.sFeeType,"00");		}		break;	default:	/*按条*/		sendstruc.nNeedReply = NEED_REPLY_NO;		sendstruc.sFeeCode = fee;		strcpy(sendstruc.sFeeType,"02");	}	SendMsg(&sendstruc,&myconn);	return 0;}

⌨️ 快捷键说明

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