📄 quest_zldbp.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"#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 + -