?? suanming.cpp
字號(hào):
/*姓名與人生 點(diǎn)播:先發(fā)送100 到 9020,再發(fā)送姓名到9020011 用戶表:USER_SUANMING,信息表:QUESTION_SUANMING XM,1.00元/條將現(xiàn)在的菜單改為 1.含義2.綜合3.財(cái)運(yùn)4.愛(ài)情5.健康2006.02.05由于原來(lái)的用戶上一條下五條的時(shí)候,我們只能扣到一條錢,所有改為上一條下一條的模式新的用戶上行記錄表:USER_SUANMING_CONFIG 2006.04.13在流程里增加五星電器合作短信投票業(yè)務(wù)流程(發(fā)送WX編號(hào)到5566099),增加用戶表USER_FIVE_STAR*/#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 haveuser(char *msisdn);static int havefriend(char *tname,char *id);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 int GoTo_WX(char *msisdn,char *content,char *dcode,float fee);static char sp_id_extern[20];static char service_phone[20];static char linkid[9];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,"更新接受指令表出錯(cuò)!"); mysql_free_result(res); return 0; } strcpy(msg,"請(qǐng)輸入您的姓名,然后直接回復(fù),不要修改發(fā)送號(hào)碼!"); sprintf(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(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,"更新接受指令表出錯(cuò)!"); mysql_free_result(res); 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],day[20]; int i,pos,retval,num,j,count,id,nameid,state,intnum; char msg[1000],msg1[1000],demo[1000],username[30]; char sql[500],months[3]; id=0;nameid=0; pos = 0; trim(content,' ');//**************start******************2006.04.17************************* if(strcmp(ocode,"1")==0) { upper(content); GoTo_WX(msisdn,content,dcode,fee); return 0; }//***************end******************2006.04.17************************* if(strcmp(ocode,"")==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,"請(qǐng)輸入您的姓名,然后直接回復(fù)"); sprintf(sp_id_extern,"%s",code); SendUser(msisdn,msg,dcode,fee,1); return 0; } sprintf(sql,"INSERT INTO USER_SUANMING_CONFIG(MSISDN,NAME,RECENT_DATE) VALUES('%s','%s','%s')",msisdn,name,getnowdate(day)); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新USER_SUANMING_CONFIG指令表出錯(cuò)!"); return 0; } sprintf(msg,"破譯姓名密碼,提示06年人生風(fēng)云!回復(fù)相應(yīng)數(shù)字解析人生命理:1.含義2.綜合3.財(cái)運(yùn)4.愛(ài)情5.健康"); sprintf(sp_id_extern,"%s0",code); SendUser(msisdn,msg,dcode,fee,1); } else if(strcmp(ocode,"0")==0) { intnum = atoi(content); if(intnum>0 && intnum<6) { sprintf(sql,"SELECT NAME FROM USER_SUANMING_CONFIG WHERE MSISDN='%s' ORDER BY ID DESC LIMIT 1",msisdn); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查詢USER_SUANMING_CONFIG指令失敗"); return 0; } if(res == NULL) { return 0; } if(row = mysql_fetch_row(res)) { strcpy(name,row[0]); mysql_free_result(res); sprintf(sql,"SELECT DEMO%d FROM USER_SUANMING WHERE USERNAME='%s'",intnum,name); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查詢USER_SUANMING指令失敗"); return 0; } if(res == NULL) { return 0; } if(row = mysql_fetch_row(res)) { strcpy(msg1,row[0]); mysql_free_result(res); if(strcmp(msg1,"")!=0) { if(intnum!=3) { sprintf(msg,"%s %s",name,msg1); } else { sprintf(msg,"%s",msg1); } sprintf(sp_id_extern,"%s0",code); SendUser(msisdn,msg,dcode,fee,1); } else { sprintf(sql,"SELECT SM%d FROM QUESTION_SUANMING ORDER BY RAND() LIMIT 1",intnum); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查詢QUESTION_SUANMING指令失敗"); return 0; } if(res == NULL) { return 0; } if(row = mysql_fetch_row(res)) { strcpy(msg1,""); strcpy(msg1,row[0]); sprintf(msg,"%s %s",name,msg1); sprintf(sp_id_extern,"%s0",code); SendUser(msisdn,msg,dcode,fee,1); if(intnum==3) { sprintf(sql,"UPDATE USER_SUANMING SET DEMO%d='%s' WHERE USERNAME='%s'",intnum,msg,name); } else { sprintf(sql,"UPDATE USER_SUANMING SET DEMO%d='%s' WHERE USERNAME='%s'",intnum,msg1,name); } if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新接受指令表出錯(cuò)!"); mysql_free_result(res); return 0; } strcpy(msg,""); } mysql_free_result(res); } } else { mysql_free_result(res); sprintf(sql,"SELECT SM%d FROM QUESTION_SUANMING ORDER BY RAND() LIMIT 1",intnum); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) writelog(SELF_TYPE,"查詢QUESTION_SUANMING指令失敗"); return 0; } if(res == NULL) { return 0; } if(row = mysql_fetch_row(res)) { strcpy(msg1,""); strcpy(msg1,row[0]); sprintf(msg,"%s %s",name,msg1); sprintf(sp_id_extern,"%s0",code); SendUser(msisdn,msg,dcode,fee,1); if(intnum==3) { sprintf(sql,"INSERT INTO USER_SUANMING(USERNAME,DEMO%d) VALUES('%s','%s')",intnum,name,msg); } else { sprintf(sql,"INSERT INTO USER_SUANMING(USERNAME,DEMO%d) VALUES('%s','%s')",intnum,name,msg1); } if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新接受指令表出錯(cuò)!"); mysql_free_result(res); return 0; } strcpy(msg,""); } mysql_free_result(res); } sprintf(sql,"UPDATE USER_SUANMING_CONFIG SET NUM%d=NUM%d+1,RECENT_DATE='%s' WHERE MSISDN='%s' AND NAME='%s'",intnum,intnum,getnowdate(day),msisdn,name); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新USER_SUANMING_CONFIG指令表出錯(cuò)!"); return 0; } } else { mysql_free_result(res); strcpy(msg,"您的輸入方法有誤,請(qǐng)直接回復(fù)您的姓名"); sprintf(sp_id_extern,"%s",code); SendUser(msisdn,msg,dcode,fee,1); } } else { strcpy(msg,"您輸入的數(shù)字有誤,請(qǐng)輸入1到5中的任一數(shù)字并直接回復(fù)"); sprintf(sp_id_extern,"%s0",code); SendUser(msisdn,msg,dcode,fee,1); } } else { strcpy(msg,"請(qǐng)輸入您的姓名,然后直接回復(fù),不要修改發(fā)送號(hào)碼."); sprintf(sp_id_extern,"%s",code); SendUser(msisdn,msg,dcode,fee,1); } return 0; }static int GoTo_WX(char *msisdn,char *content,char *dcode,float fee){ int retval,i=0,iFlag=0,iBuf=0; char msg[500],sql[1000],buf[500],day[20]; memset(msg,0,sizeof(msg)); memset(sql,0,sizeof(sql)); memset(buf,0,sizeof(buf)); memset(day,0,sizeof(day)); if(strncmp(content,"WX",2)==0) { strncpy(buf,content+2,strlen(content)-2); buf[strlen(content)-2]='\0'; iBuf=atoi(buf); if(iBuf<=0) { iFlag=1; } } else { iFlag=1; } if(1==iFlag) { sprintf(msg,"對(duì)不起,您發(fā)送的內(nèi)容有誤.正確格式為:WX選手編號(hào),請(qǐng)重新投票."); sprintf(sql,"INSERT INTO USER_FIVE_STAR(MSISDN,CONTENT,REG_DATE,SIGN) VALUES('%s','%s','%s','F')",msisdn,content,getnowdate(day)); } else { sprintf(msg,"感謝您給%d號(hào)選手投票,五星電器為您提供五星級(jí)商品、五星級(jí)服務(wù).",iBuf); sprintf(sql,"INSERT INTO USER_FIVE_STAR(MSISDN,CONTENT,REG_DATE,SIGN) VALUES('%s','%d','%s','T')",msisdn,iBuf,getnowdate(day)); } sprintf(sp_id_extern,"0111"); SendUser(msisdn,msg,dcode,fee,1); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"插入U(xiǎn)SER_FIVE_STAR用戶表錯(cuò)誤!"); 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,"UN"); 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: //免費(fèi)、錯(cuò)誤信息 strcpy(sendstruc.sServiceID,"ERROR"); strcpy(sendstruc.sFeeType,"01"); sendstruc.nNeedReply = 0; break; case 1: //按條點(diǎn)播(收費(fèi)) strcpy(sendstruc.sFeeType,"02"); sendstruc.nNeedReply = 1; break; case 2: //包月點(diǎn)播(不收費(fèi)的) strcpy(sendstruc.sFeeType,"03"); sendstruc.nNeedReply = 1; break; case 3: //包月扣費(fèi) strcpy(sendstruc.sFeeType,"03"); sendstruc.nNeedReply = 2; break; case 8: //定購(gòu)成功包 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;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -