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

📄 quest_zldbp.cpp

📁 移动梦网平台主程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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"#include "main.h"#define SELF_TYPE        "zldbp"		//智力大比拼#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 char linkid[9];static char service_phone[20];static int ScanMsg();static int ScanMsgSession();static int DoService(char *code,char *msisdn,char *dcode,char *content,float fee_mon,int bitlong);static int getquestion(char *question,char *answer);static int CheckAnswer(char *msg, char *msisdn);static int HaveUser(char *msisdn);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);static int OK_NUMS;static int QUESTIONNUM;static char sp_id_extern[20];int InitZldbp(){	OK_NUMS = GetProfileInt(INIFILE,"ZLDBP","OK_NUM",5);	QUESTIONNUM = GetProfileInt(INIFILE,"ZLDBP","QUESTIONNUM",18);	GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);	srand(time(NULL));	return 0;}int DoZldbp(){    	int retval;    	retval = ScanMsg();    	    	retval = ScanMsgSession();    	    	return retval;}static int ScanMsg(){ 	int retval,i,want_num,feetype,bitlong;    	float fee,fee_mon;    	char id[11],icpid[3],code[11],msisdn[22],msg[161],dcode[11],day[20];	char sql[500];           	MYSQL_ROW row;           	MYSQL_RES *res = NULL;       	memset(sql,0,sizeof(sql));    	sprintf(sql,        	   "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,MSGCONTENT,DCODE,FEE_MON,BITLONG,LINKID             	   FROM COM_RECV RECV,COD_SERVICE COD             	   WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='ZL' 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(msg,row[4]);            	strcpy(dcode,row[5]);            	fee_mon=atof(row[6]);            	bitlong = atoi(row[7]);            	strcpy(linkid,row[8]);            		                    	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;    		}         	            	            	if(DoService(code,msisdn,dcode,msg,fee_mon,bitlong)==0)            	{                    	continue;            	}            	else            	{                    	writelog(SELF_TYPE,"申请业务失败!");            	}            	    	}    	mysql_free_result(res);	    	return 0;}static int DoService(char *code,char *msisdn,char *dcode,char *content,float fee_mon,int bitlong){    	int retval,myscore,con_ok_num,step,maxscore,minscore,answer_flag=0;    	char day[20];    	char question[500],answer[10],msg[2000];	char sql[500];           	MYSQL_ROW row;           	MYSQL_RES *res = NULL;   	//判断用户是否是注册用户		retval=HaveUser(msisdn);	trim(code,' ');	upper(code);		//退出ZLTC,退出后将用户资料保留,把FLAG置为0,CANCEL_DATE置为当前日期	if(strcmp(code,"ZLTC") == 0 )	{			strcpy(sp_id_extern,"");		switch(retval)		{		case 3:						sprintf(sql,"UPDATE USER_ZLDBP SET FLAG='0',CANCEL_DATE='%s'				 WHERE MSISDN='%s'",getnowdate(day),msisdn);			if(DoSQL(sql,&myconn) != 0)			{				writelog(SELF_TYPE,"更新数据库出错!");				return 0;			}			strcpy(msg,"您已经成功退出了全城智力大比拼游戏,您的资料删除成功,感谢您的参与!");			SendUser(msisdn,msg,dcode,fee_mon,9);		//取消			break;				case 1:						sprintf(msg,"您已经退出了全城智力大比拼游戏。如有疑问,请拨服务热线%s",service_phone);			SendUser(msisdn,msg,dcode,fee_mon,0);				break;				default:						strcpy(msg,"您还没有注册,所以不必退出。");			SendUser(msisdn,msg,dcode,fee_mon,0);			break;		}	}		//查询ZLCX	else if(strcmp(code,"CX")==0)	{			strcpy(sp_id_extern,"");		switch(retval)		{			case 3:				//求出表中的最高成绩和最低成绩				sprintf(sql,"SELECT MAX(SCORE),MIN(SCORE) FROM USER_ZLDBP WHERE FLAG='1'");				retval = QuerySQL(sql,&myconn,&res);					    			if(retval != 0)	    			{		            		writelog(SELF_TYPE,"查询指令失败");	            			return 0;	    			}	    			if(res == NULL)	    			{		            		return 0;	    			}				if (row=mysql_fetch_row(res))				{					maxscore=atoi(row[0]);					minscore=atoi(row[1]);				}				mysql_free_result(res);				//求出当前用户的成绩和级别				sprintf(sql,"SELECT MSISDN,SCORE,STEP FROM USER_ZLDBP WHERE MSISDN='%s' AND FLAG='1'",msisdn);				retval = QuerySQL(sql,&myconn,&res);	    			if(retval != 0)	    			{		            		writelog(SELF_TYPE,"查询指令失败");	            			return 0;	    			}	    			if(res == NULL)	    			{		            		return 0;	    			}							if( row = mysql_fetch_row(res))						{					myscore=atoi(row[1]);					step=atoi(row[2]);					sprintf(msg,"您现在的积分为%d,级别是%d.当前最高分%d,最低分%d.",myscore,step,maxscore,minscore);							}				mysql_free_result(res);				SendUser(msisdn,msg,dcode,fee_mon,2);		//包月点播				break;						default:				if(msisdn[2]>'3')        //修改于2004.08.30				{					sprintf(msg,"对不起,没有您的记录。要参加全城智力大比拼游戏,请发送ZL到5566。");				}				else				{					sprintf(msg,"对不起,没有您的记录。要参加全城智力大比拼游戏,请发送ZL到8566。");				}				SendUser(msisdn,msg,dcode,fee_mon,0);				break;		}	}		//其余均默认为是答题ZL	else if (strncmp(code,"ZL",2)==0)	{		switch(retval)		{			case 2:				if(bitlong==0)				{					sprintf(sql,"INSERT INTO USER_ZLDBP(MSISDN,FLAG,FREE_FLAG,REG_DATE,MONTH_FLAG) 						VALUES('%s','1','0','%s','0')",						msisdn,getnowdate(day));					if(msisdn[2]>'3')       //修改于2004.08.30					{						sprintf(msg,"您已成功加入智力大比拼游戏.资费:5元/月.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);					}					else					{						sprintf(msg,"您已成功加入智力大比拼游戏.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);					}					answer_flag=1;				}				else				{					sprintf(sql,"INSERT INTO USER_ZLDBP(MSISDN,FLAG,FREE_FLAG,REG_DATE,MONTH_FLAG) 						VALUES('%s','9','0','%s','0')",						msisdn,getnowdate(day));					if(msisdn[2]>'3')       //修改于2004.08.30					{						sprintf(msg,"欢迎参加智力大比拼,答对一题加10分,连对5题升一级!精美奖品等你拿.资费:5元/月.若确定要加入本游戏,请直接回复ZL.");					}					else					{						sprintf(msg,"欢迎参加智力大比拼,答对一题加10分,连对5题升一级!精美奖品等你拿.若确定要加入本游戏,请直接回复ZL.");					}				}				if (DoSQL(sql,&myconn)!=0)				{										writelog(SELF_TYPE,"更新数据库出错!");					return 0;				}				strcpy(sp_id_extern,"");				if (answer_flag==1)				{					SendUser(msisdn,msg,dcode,fee_mon,8);		//包月订购				}				else				{					SendUser(msisdn,msg,dcode,fee_mon,2);		//				}				break;			case 9:				sprintf(sql,"UPDATE USER_ZLDBP SET FLAG='1',FREE_FLAG='0',SCORE='0',REG_DATE='%s',					MONTH_FLAG='0' WHERE MSISDN='%s'",getnowdate(day),msisdn);				if (DoSQL(sql,&myconn)!=0)				{					writelog(SELF_TYPE,"更新数据库出错!");					return 0;				}				if(msisdn[2]>'3')        //修改于2004.08.30				{					sprintf(msg,"您已成功加入智力大比拼游戏.资费:5元/月.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);				}				else				{					sprintf(msg,"您已成功加入智力大比拼游戏.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);				}				answer_flag=1;				strcpy(sp_id_extern,"");				if (answer_flag==1)				{					SendUser(msisdn,msg,dcode,fee_mon,8);		//包月订购				}				else				{					SendUser(msisdn,msg,dcode,fee_mon,2);		//				}				break;			case 1:				if(bitlong==0)				{					sprintf(sql,"UPDATE USER_ZLDBP SET FLAG='1',FREE_FLAG='0',SCORE='0',REG_DATE='%s',						MONTH_FLAG='0' WHERE MSISDN='%s'",getnowdate(day),msisdn);					if(msisdn[2]>'3')       //修改于2004.08.30					{						sprintf(msg,"您已成功加入智力大比拼游戏.资费:5元/月.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);					}					else					{						sprintf(msg,"您已成功加入智力大比拼游戏.退出请发ZLTC.收到题目后,请选择A,B,C并直接回复.客服电话%s",service_phone);					}					answer_flag=1;				}				else				{					sprintf(sql,"UPDATE USER_ZLDBP SET FLAG='9',FREE_FLAG='0',SCORE='0',REG_DATE='%s',						MONTH_FLAG='0' WHERE MSISDN='%s'",getnowdate(day),msisdn);					if(msisdn[2]>'3')        //修改于2004.08.30					{						sprintf(msg,"欢迎参加智力大比拼,答对一题加10分,连对5题升一级!精美奖品等你拿.资费:5元/月.若确定要加入本游戏,请直接回复ZL.");					}					else					{						sprintf(msg,"欢迎参加智力大比拼,答对一题加10分,连对5题升一级!精美奖品等你拿.若确定要加入本游戏,请直接回复ZL.");					}				}				if (DoSQL(sql,&myconn)!=0)				{										writelog(SELF_TYPE,"更新数据库出错!");					return 0;				}				strcpy(sp_id_extern,"");				if (answer_flag==1)				{					SendUser(msisdn,msg,dcode,fee_mon,8);		//包月订购				}				else				{					SendUser(msisdn,msg,dcode,fee_mon,2);		//				}								break;				default:				answer_flag=1;				break;					}				if (answer_flag==1)		{			if(getquestion(question,answer) != 1)			{				return 0;			}						checksql(answer);						sprintf(sql ,			        "UPDATE USER_ZLDBP			         SET ANSWER='%s' ,END_FLAG='0',DOWN_NUM=DOWN_NUM+1,RECENT_DATE='%s'		        	 WHERE MSISDN='%s'",		        	answer,getnowdate(day),msisdn);			if(DoSQL(sql,&myconn) != 0)			{				writelog(SELF_TYPE,"更新数据库出错!");				return 0;			}					sprintf(msg,"%s",question);			strcpy(sp_id_extern,"210");						SendUser(msisdn,msg,dcode,fee_mon,2);		//包月点播		}	}	return 0;

⌨️ 快捷键说明

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