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

📄 suanming_20060205.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	"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 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 char sp_id_extern[20];static char linkid[9];static char service_phone[20];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,"更新接受指令表出错!");			return 0;		}		strcpy(msg,"请输入您的姓名,然后直接回复,不要修改发送号码!");		strcpy(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,"更新接受指令表出错!");			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];	int i,pos,retval,num,j,count,id,nameid,state;	char msg[1000],demo[1000],username[30];	char sql[500],months[3];	id=0;nameid=0;	pos = 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,"请输入您的姓名!");		strcpy(sp_id_extern,"011");		SendUser(msisdn,msg,dcode,fee,1);		return 0;	}		checksql(name);	strcpy(msg,name);	strcat(msg," ");	sprintf(sql,"SELECT ID,USERNAME FROM USER_SUANMING WHERE USERNAME='%s'",name);	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询指令失败1");		return 0;	}	if(res == NULL)	{		return 0;	}	while (row = mysql_fetch_row(res))	{		id=atoi(row[0]);		strcpy(username,row[1]);		if(strcmp(username,name)==0)		{				nameid=id;		}			}	mysql_free_result(res);	if(nameid==0)	{		sprintf(sql,"INSERT INTO USER_SUANMING(USERNAME) VALUES('%s')",name);		if(DoSQL(sql,&myconn) != 0)		{			writelog(SELF_TYPE,"更新接受指令表出错!");			return 0;		}		nameid=mysql_insert_id(myconn);		sprintf(sql,"SELECT MAX(ID) FROM QUESTION_SUANMING");		retval = QuerySQL(sql,&myconn,&res);		if(retval != 0)		{			writelog(SELF_TYPE,"查询指令失败");			return 0;		}		if(res == NULL)		{			return 0;		}		row = mysql_fetch_row(res);		num = atoi(row[0]);		mysql_free_result(res);		for(j=1;j<9;j++)		{			sprintf(sql,"SELECT SM%d FROM QUESTION_SUANMING WHERE ID>=%d LIMIT 0,1",j,getrand_num(num));			retval = QuerySQL(sql,&myconn,&res);			if(retval != 0)			{				writelog(SELF_TYPE,"查询指令失败");				return 0;			}			if(res == NULL)			{				return 0;			}			if( row = mysql_fetch_row(res))			{				strcat(msg,row[0]);			}			mysql_free_result(res);			if(strcmp(msg,"")!=0)			{				sprintf(sp_id_extern,"");				SendUser(msisdn,msg,dcode,fee,1);			}			else			{				break;			}			sprintf(sql,"UPDATE USER_SUANMING SET DEMO%d='%s' WHERE USERNAME='%s' AND ID=%d",j,msg,name,nameid);			if(DoSQL(sql,&myconn) != 0)			{				writelog(SELF_TYPE,"更新接受指令表出错!");				return 0;			}			strcpy(msg,"");		}	}	else	{		for(j=1;j<9;j++)		{			sprintf(sql,"SELECT DEMO%d FROM USER_SUANMING WHERE USERNAME='%s' AND ID=%d",j,name,nameid);			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]);			}			mysql_free_result(res);			if(strcmp(msg,"")!=0)			{				sprintf(sp_id_extern,"");				SendUser(msisdn,msg,dcode,fee,1);				strcpy(msg,"");				strcpy(sql,"");			}			else			{				break;			}		}	}		sprintf(sql,"UPDATE USER_SUANMING SET NUM=NUM+1 WHERE USERNAME='%s' AND ID=%d",name,nameid);	if(DoSQL(sql,&myconn) != 0)	{		writelog(SELF_TYPE,"更新接受指令表出错!");		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,"MO");	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);	puts(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);	puts(linkid);	return 0;}

⌨️ 快捷键说明

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