📄 quest_zldbp.cpp
字号:
}static int ScanMsgSession(){ int retval,i,feetype; float fee,fee_mon; char id[11],icpid[3],code[11],msisdn[22],dcode[11]; char day[20],msg[500],question[500],answer[10]; char sql[500]; MYSQL_ROW row; MYSQL_RES *res = NULL; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT ID,ICPID,UPPER(SERVICECODE),MSGCONTENT,SRCTERMID,DCODE,FEE_MON FROM COM_RECV_SESSION RECV,COD_SERVICE_SESSION 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(msg,row[3]); strcpy(msisdn,row[4]); strcpy(dcode,row[5]); fee_mon=atof(row[6]); 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; } trim(msg,' '); upper(msg); //注册 if (strcmp(msg,"ZL")==0) { retval=HaveUser(msisdn); //用户存在但已退出 if (retval==1) { 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; } //2003。02。08改,将联通信息中的资费去除 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); } strcpy(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee_mon,8); //包月订购 } //用户不存在 else if (retval==2) { sprintf(sql,"INSERT INTO USER_ZLDBP(MSISDN,FLAG,FREE_FLAG,REG_DATE,MONTH_FLAG) VALUES('%s','1','0','%s','0')", msisdn,getnowdate(day)); if (DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"更新数据库出错!"); return 0; } //2003。02。08改,将联通信息中的资费去除 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); } strcpy(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee_mon,8); //包月订购 } //发送题目 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); //包月点播 } //判断答案,给出新题 else { CheckAnswer(msg,msisdn); strcpy(sp_id_extern,"210"); SendUser(msisdn,msg,dcode,fee_mon,2); //包月点播 } } mysql_free_result(res); return 0;}//判别答案static int CheckAnswer(char *msg, char *msisdn){ char question[500],answer[10],day[30]; int retval; int con_ok_num,score,step; char sql[1000]; MYSQL_ROW row; MYSQL_RES *res = NULL; trim(msg,' '); upper(msg); //取出一个新题 if(getquestion(question,answer) != 1) { return 0; } checksql(answer); sprintf(sql, "SELECT END_FLAG,ANSWER,CON_OK_NUM,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)) { if(strcmp(row[1],msg)==0) /*答对了*/ { con_ok_num = atoi(row[2]); score = atoi(row[3]); step = atoi(row[4]); con_ok_num ++; score += 10; if(con_ok_num >= OK_NUMS) { con_ok_num = 0; score+=10; step ++; sprintf(msg,"您答对了.\n%s",question); } else { sprintf(msg,"您答对了.\n%s",question); } sprintf(sql, "UPDATE USER_ZLDBP SET END_FLAG='1', OK_NUM = OK_NUM + 1, DOWN_NUM = DOWN_NUM+1, SCORE = %d, CON_OK_NUM = %d, STEP = %d, ANSWER = '%s', RECENT_DATE='%s' WHERE MSISDN='%s'", score,con_ok_num,step,answer,getnowdate(day),msisdn); } else /*答错了*/ { sprintf(msg,"您答错了,答案是%s.\n%s",row[1],question); sprintf(sql, "UPDATE USER_ZLDBP SET END_FLAG='1', ANSWER='%s', CON_OK_NUM = 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; } } else { strcpy(msg,"欢迎参加全城智力大比拼游戏,答对一题加10分,连对5题升一级!"); if(msisdn[2]>'3') //修改于2004.08.30 { strcat(msg,"要参加这个游戏,请发送ZL到5566。"); } else { strcat(msg,"要参加这个游戏,请发送ZL到9020。"); } } mysql_free_result(res); return 0;}//取题目和标准答案static int getquestion(char *question,char *answer){ int id,retval; char sql[500]; MYSQL_ROW row; MYSQL_RES *res = NULL; srand(time(NULL)); id = (int)((float)(rand())/(float)(RAND_MAX) * QUESTIONNUM) + 1; sprintf(sql, "SELECT LOCK1,KEY1 FROM QUESTION WHERE ID>=%d LIMIT 0,1", id); 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(question,row[0]); strcpy(answer,row[1]); trim(answer,' '); mysql_free_result(res); return 1; } mysql_free_result(res); return 0;}//判断是不是已注册用户//1:存在未注册; 2:不存在; 3:存在已注册 9:二次确认中static int HaveUser(char *msisdn){ int flag,retval; char sql[500]; MYSQL_ROW row; MYSQL_RES *res = NULL; sprintf(sql,"SELECT MSISDN,FLAG FROM USER_ZLDBP WHERE MSISDN='%s'",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)) { flag=atoi(row[1]); mysql_free_result(res); if (flag==1) { return 3; } else if(flag==9) { return 9; } else { return 1; } } else { mysql_free_result(res); return 2; }}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); switch(flag) { case 0: //免费、错误信息 strcpy(sendstruc.sServiceID,"ERROR"); strcpy(sendstruc.sFeeType,"01"); sendstruc.nNeedReply = 0; break; case 1: //按条点播(收费) strcpy(sendstruc.sFeeType,"02"); sendstruc.nNeedReply = 0; 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 + -