📄 llysgb.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 <ctype.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 "llysgb"#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 service_phone[20];static int ScanMsg();static int ScanMsgSession();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 DoApply(char *code,char *msisdn,char *dcode,char *content,float fee,int want_num);static int dobet(char *content,char *msisdn,char *dcode,float fee,int type);static int getrandcontent(char *tablename,char *polt,int max);static int getrandnum(int max);static int haveuser(char *msisdn);static int getmaxid(char *tablename);static int getcontent(char *content,int type,char *msisdn,char *dcode,float fee);static char sp_id_extern[20];static char linkid[9];int Initllysgb(){ srand(time(NULL)); GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone); return 0;}int Dollysgb(){ int retval; retval = ScanMsg(); if(retval < 0) { sleep(1); return 0; } retval = ScanMsgSession(); return retval;}static int ScanMsg(){ char sql[500],day[20]; MYSQL_ROW row; MYSQL_RES *res = NULL; int retval,i,want_num; float fee; char id[11],icpid[3],code[11],msisdn[22],msg[161],dcode[11]; memset(sql,0,sizeof(sql)); sprintf(sql, "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,MSGCONTENT,DCODE,FEE,LIMIT_NUM,LINKID\ FROM COM_RECV RECV,COD_SERVICE COD\ WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='YS' 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 = atof(row[6]); want_num = 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(DoApply(code,msisdn,dcode,msg,fee,want_num)==0) //申请业务成功 { continue; } else { writelog(SELF_TYPE,"申请业务失败!"); } } 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[20]; 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='YS' 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]); 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,"更新session接受指令表出错!"); return 0; } DoService(code,ocode,msg,msisdn,dcode,fee); } mysql_free_result(res); return 0;}//申请定制static int DoApply(char *code,char *msisdn,char *dcode,char *content,float fee,int want_num){ char sql[2000],cd[20]; int type,retval,num,numwx1,numwx2,numlt1,numlt2; SEND_STRUC sendstruc; char flag[2],free_flag[2]; char day[20]; MYSQL_RES *res = NULL; MYSQL_ROW row; char buf[1000],msg[500],name[100],send_num[20]; int count = 0; trim(content,' '); switch(content[0]) { //取消 case 'q': case 'Q': case 'o': case 'O': type = 0; break; //定制 default: type=1; } sprintf(sql,"SELECT NAME,SEND_NUM FROM COD_SERVICE WHERE TRIM(UCODE)='%s'",checksql(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(name,row[0]); strcpy(send_num,row[1]); } mysql_free_result(res); sprintf(sql,"SELECT FLAG,FREE_FLAG FROM USER_LLYS_POINT WHERE MSISDN='%s' AND TRIM(SV_CODE)='%s'",checksql(msisdn),checksql(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(flag,row[0]); strcpy(free_flag,row[1]); if(flag[0] == '0' && type == 0) { strcpy(msg,"该业务已取消,不必再取消."); SendUser(msisdn,msg,dcode,fee,0); //错误信息 } else if(flag[0] != '0' && type == 1) { strcpy(msg,"该业务已申请,不必再申请,感谢您的使用"); SendUser(msisdn,msg,dcode,fee,0); //错误信息 } else if(type == 0) //取消 { sprintf(sql,"UPDATE USER_LLYS_POINT SET FLAG='0',CANCEL_DATE='%s'\ WHERE MSISDN='%s' AND SV_CODE='%s'",getnowdate(day),checksql(msisdn),checksql(code));\ if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"取消订制出错!"); return 0; } sprintf(msg,"取消%s成功,感谢您使用我们的服务.",name); SendUser(msisdn,msg,dcode,fee,9); //取消包 } else //订制 { sprintf(sql,"UPDATE USER_LLYS_POINT SET FLAG='1',FREE_FLAG='0',REG_DATE='%s',WANT_NUM=%d,SCORE=2000,WIN_NUM=0,DOWN_NUM=0\ WHERE MSISDN='%s' AND SV_CODE='%s'",getnowdate(day),want_num,checksql(msisdn),checksql(code));\ if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"申请订制出错!"); return 0; } sprintf(msg,"申请订制成功,%s资费%.2f元/条,发送频次:%s.退定方法:0000.感谢您使用我们的服务.咨询电话%s",name,fee,send_num,service_phone); SendUser(msisdn,msg,dcode,fee,8); //成功包 } } else { if(type == 0) { strcpy(msg,"您未申请该业务,无法取消."); SendUser(msisdn,msg,dcode,fee,0); //错误信息 } else { sprintf(sql,"INSERT INTO USER_LLYS_POINT(MSISDN,SV_CODE,WANT_NUM,FLAG,FREE_FLAG,SCORE,\ DOWN_NUM,WIN_NUM,REG_DATE) VALUES('%s','%s',%d,'1','0','2000','0','0','%s')",\ checksql(msisdn),checksql(code),want_num,getnowdate(day));\ if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"申请订制出错!"); return 0; } sprintf(msg,"申请订制成功,%s资费%.2f元/条,发送频次:%s.退定方法:0000.感谢您使用我们的服务.咨询电话%s",name,fee,send_num,service_phone); SendUser(msisdn,msg,dcode,fee,8); //成功包 } } mysql_free_result(res); return 0;}static int DoService(char *code,char *ocode,char *content,char *msisdn,char *dcode,float fee){ int len,i,type,retval,count,num,flag,state; MYSQL_ROW row; MYSQL_RES *res = NULL; MYSQL_RES *res1 = NULL; char msg[500],tname[20],otname[20],id[20]; char today[8]; char sql[1000]; char day[20]; type=atoi(ocode); checksql(content); len=strlen(content); state=haveuser(msisdn); if(state!=1&&state!=2) { strcpy(msg,"你还不是玲垅轶事的用户,如需加入请回复33申请定制"); strcpy(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,0); //错误信息 return 0; } switch(type) { case 1: trim(content,' '); upper(content); if(strcmp(content,"A")==0) { getcontent(content,type,msisdn,dcode,fee); } else if(strcmp(content,"B")==0) { getcontent(content,type,msisdn,dcode,fee); } else if(strcmp(content,"C")==0) { getcontent(content,type,msisdn,dcode,fee); } else { if(strcmp(content,"")==0) { sprintf(msg,"您回复的内容有错,请查实后正确回复,咨询电话%s",service_phone); strcpy(sp_id_extern,"1661"); if(state==1) { SendUser(msisdn,msg,dcode,fee,1); //点播 } if(state==2) { SendUser(msisdn,msg,dcode,fee,0); //免费 } return 0; } for(i=0;i<len;i++) { if(content[i]<'0'||content[i]>'9') { sprintf(msg,"请选择星座的(1~12)序号回复,预测本周运程,咨询电话%s",service_phone); strcpy(sp_id_extern,"1661"); if(state==1) { SendUser(msisdn,msg,dcode,fee,1); //点播 } if(state==2) { SendUser(msisdn,msg,dcode,fee,0); //免费 } return 0; } } num=atoi(content); if(num<=0||num>12) { sprintf(msg,"请选择星座的(1~12)序号回复,预测本周运程,咨询电话%s",service_phone); strcpy(sp_id_extern,"1661"); if(state==1) { SendUser(msisdn,msg,dcode,fee,1); //点播 } if(state==2) { SendUser(msisdn,msg,dcode,fee,0); //免费 } return 0; } sprintf(sql,"SELECT MSG FROM LLYS_LUCK WHERE ID=%d",num); retval=QuerySQL(sql,&myconn,&res1); if(retval!=0) { writelog(SELF_TYPE,"解签出错!"); return 0; } if(res1==NULL) { return 0; } if(row=mysql_fetch_row(res1)) { strcpy(msg,row[0]); } mysql_free_result(res1); strcpy(sp_id_extern,""); if(state==1) { SendUser(msisdn,msg,dcode,fee,1); //点播 } if(state==2) { SendUser(msisdn,msg,dcode,fee,0); //免费 } return 0; } break; case 2: upper(content); if(strcmp(content,"A")==0) { getcontent(content,type,msisdn,dcode,fee); } else if(strcmp(content,"B")==0) { getcontent(content,type,msisdn,dcode,fee); } else if(strcmp(content,"C")==0) { getcontent(content,type,msisdn,dcode,fee); } else if(strncmp(content,"DA",2)==0||strncmp(content,"XI",2)==0||strncmp(content,"DG",2)==0||strncmp(content,"TF",2)==0) { dobet(content,msisdn,dcode,fee,type); } else { sprintf(msg,"您回复的内容有错,请查实后正确回复,咨询电话%s",service_phone); strcpy(sp_id_extern,"1662"); if(state==1) { SendUser(msisdn,msg,dcode,fee,1); //点播 } if(state==2) { SendUser(msisdn,msg,dcode,fee,0); //免费 } return 0; } break; case 3: upper(content);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -