📄 menu.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 "menu"#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 *icpid,char *code,char *ocode, char *content,char *msisdn,char *dcode,int feetype,float fee,float fee_mon);static int SendUser(char *icpid,char *msisdn,char *msg, char *dcode,int fee_type,float fee,float fee_mon,char *fee_msisdn,int flag);static int GetPort(char *msg,char *code);static char WEL_INFO[200];static int MSGLEVEL;extern int webflag;static char service_phone[20];static char sp_id_extern[20];static char linkid[9];int InitMenu(){ GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone); srand(time(NULL)); return 0;}int DoMenu(){ int retval; retval = ScanMsg(); if(retval < 0) { return 0; } retval = ScanMsgSession(); return retval;}static int ScanMsg(){ char sql[2000]; 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,WEBFLAG,FEETYPE,FEE_MON,LINKID FROM COM_RECV RECV,COD_SERVICE COD WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='BZ' 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]); webflag = atoi(row[6]); feetype = atoi(row[7]); fee_mon = atof(row[8]); strcpy(linkid,row[9]); 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,"更新接受指令表出错1!"); return 0; } if(GetPort(msg,code) == 0) { writelog(SELF_TYPE,"更新接受指令表出错2!"); return 0; } else { SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0); } return 0; } mysql_free_result(res); return 0;}static int GetPort(char *msg,char *code){ char sql[2000]; MYSQL_ROW row; MYSQL_RES *res = NULL; char ocode[10]; int retval; sprintf(sql,"SELECT MENU_ITEM,PORT.PORT FROM MENU,MENU_PORT PORT WHERE MENU.CODE=PORT.PORT AND PORT.UPCODE='%s'",code); 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]); sprintf(sp_id_extern,"010%s",row[1]); mysql_free_result(res); return 1; } else { 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,FEETYPE,FEE_MON,LINKID FROM COM_RECV_SESSION RECV,COD_SERVICE_SESSION COD WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='BZ' 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]); feetype = atoi(row[8]); fee_mon = atof(row[9]); strcpy(linkid,row[10]); 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,"更新接受指令表出错3!"); return 0; } DoService(icpid,code,ocode,msg,msisdn,dcode,feetype,fee,fee_mon); } mysql_free_result(res); return 0;}static int DoService(char *icpid,char *code,char *ocode, char *content,char *msisdn,char *dcode,int feetype,float fee,float fee_mon){ int len,type,retval; int flag; char msg[500]; char sql[2000]; char fun[10],day[20]; char *argv[2]; MYSQL_ROW row; MYSQL_RES *res = NULL; len = strlen(ocode); if(len < 3) { sprintf(msg,"请在原来的短信上直接回复,不要修改发送号码,如果有问题请拨打客服热线:%s,谢谢",service_phone); SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0); return 0; } strncpy(fun,ocode,3); fun[3] = '\0'; type = atoi(content); if(type > 9 || type <= 0) { sprintf(msg,"您的选择有错误,请核实后重新发送,如果有问题请拨打客服热线:%s,谢谢",service_phone); SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0); return 0; } sprintf(sql,"SELECT SEL%d,END_FLAG,MENU_ITEM FROM MENU WHERE CODE='%s'",type,fun); 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(fun,row[0]); flag = atoi(row[1]); strcpy(msg,row[2]); mysql_free_result(res); } else { mysql_free_result(res); sprintf(msg,"请在原来的短信上直接回复,不要修改发送号码,如果有问题请拨打客服热线:%s,谢谢",service_phone); SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0); return 0; } if(flag != 1) { sprintf(sql,"SELECT END_FLAG,MENU_ITEM FROM MENU WHERE CODE='%s'",fun); 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[0]); strcpy(msg,row[1]); mysql_free_result(res); if(flag != 1) { sprintf(sp_id_extern,"010%s",fun); SendUser(icpid,msisdn,msg,dcode,feetype,fee,fee_mon,msisdn,0); return 0; } } else { mysql_free_result(res); sprintf(msg,"Menu联接有错误:ocode=[%s],sel%d=[%s],找不到!",ocode,type,fun); SendUser(icpid,"13905159912",msg,"-XX",0,fee,fee_mon,msisdn,0); return 0; } } if(splitarg(msg,argv,2) != 2) { argv[1] = " "; } sprintf(sql,"INSERT INTO COM_RECV(ICPID,MSGID,MSGLEVEL,SERVICEID,SERVICECODE,MSGFORMAT,SRCTERMID,ISREPLY,MSGCONTENT,DESTTERMID,TPPID,TPUDHI,RECV_DATE,FLAG) VALUES('BZ','0',0,'9999','%s',15,'%s',0,'%s','5566',0,0,'%s',0)", argv[0],msisdn,argv[1],getnowdate(day)); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新接受指令表出错4!"); return 0; } return 0;}static int SendUser(char *icpid,char *msisdn,char *msg, char *dcode,int feetype,float fee,float fee_mon,char *fee_msisdn,int flag){ SEND_STRUC sendstruc; char *day; char buf[100]; if(strcmp(msisdn,fee_msisdn) == 0) { sendstruc.cFeeUserType=0; strcpy(sendstruc.sFeeTerminalID,""); } else { sendstruc.cFeeUserType=3; strcpy(sendstruc.sFeeTerminalID,fee_msisdn); } memset(&sendstruc,0,sizeof(sendstruc)); strcpy(sendstruc.icpid,icpid); sendstruc.nMsgLevel = 3; sendstruc.nMsgFormat = MSG_FORMAT_ASCII; strcpy(sendstruc.sServiceID,dcode); strcpy(sendstruc.sValidTime,""); strcpy(sendstruc.sAtTime,""); strcpy(sendstruc.sSrcTermID,SP_ID); strcat(sendstruc.sSrcTermID,sp_id_extern); strcpy(sendstruc.sDesTermID,msisdn); sendstruc.cTpPid = 0; sendstruc.cTpUdhi = 0; strcpy(sendstruc.step,"9"); day = getnowdate(sendstruc.Send_Date); strcpy(sendstruc.sMsgContent,msg); checksql(sendstruc.sMsgContent); strcpy(sendstruc.linkid,linkid); switch(feetype) { case 0: /*免费*/ sendstruc.nNeedReply = NEED_REPLY_NO; sendstruc.sFeeCode = 0.10; strcpy(sendstruc.sFeeType,"00"); break; case 3: /*包月*/ if(flag == 0) { sendstruc.nNeedReply = NEED_REPLY_NO; sendstruc.sFeeCode = 0.10; strcpy(sendstruc.sFeeType,"00"); } else { sendstruc.nNeedReply = 2; sendstruc.sFeeCode = fee_mon; strcpy(sendstruc.sFeeType,"03"); SendMsg(&sendstruc,&myconn); sendstruc.nNeedReply = NEED_REPLY_NO; sendstruc.sFeeCode = 0.10; strcpy(sendstruc.sFeeType,"00"); } break; default: /*按条*/ sendstruc.nNeedReply = NEED_REPLY_NO; sendstruc.sFeeCode = fee; strcpy(sendstruc.sFeeType,"02"); } SendMsg(&sendstruc,&myconn); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -