?? zfy5d.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 "zfy5d"#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 sp_id_extern[20];static char linkid[9];static char service_phone[20];static int ScanMsg();static int ScanMsgSession();static int DoService(char *code,char *content,char *msisdn,char *dcode,float fee,int num);static int getinfo(char *msisdn,char *dcode,float fee,char *code,int num);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);int Initzfy5d(){ GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone); srand(time(NULL)); return 0;}int Dozfy5d(){ int retval; retval = ScanMsg(); return retval;}static int getrand(int min_num,int max_num){ float retval; int i; retval = (float)(rand())/(float)(RAND_MAX); retval = retval * (max_num-min_num); i = (int)(retval)+min_num; if(i == 0) i = 1; return i;}static int ScanMsg(){ char sql[500]; MYSQL_ROW row; MYSQL_RES *res = NULL; int retval,i,want_num,send_num; float fee; char id[11],icpid[3],code[11],msisdn[22],msg[161],dcode[11]; char day[20]; memset(sql,0,sizeof(sql)); sprintf(sql, "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,MSGCONTENT,DCODE,FEE,BITLONG,LINKID FROM COM_RECV RECV,COD_SERVICE COD WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='5D' limit 20"); 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]); send_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; } DoService(code,msg,msisdn,dcode,fee,send_num); } mysql_free_result(res); return 0;}static int DoService(char *code,char *content,char *msisdn,char *dcode,float fee,int num){ char sql[500]; MYSQL_ROW row; MYSQL_RES *res = NULL; int retval,count,n; char id[11],day[20],msg[100]; memset(sql,0,sizeof(sql)); n=0; sprintf(sql,"SELECT COUNT(*) FROM USER_SWEET WHERE MSISDN='%s'",msisdn); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢user_SWEET出錯!"); return 0; } if(res==NULL) { return 0; } if(row=mysql_fetch_row(res)) { count=atoi(row[0]); } mysql_free_result(res); sprintf(sql,"INSERT INTO USER_SWEET(MSISDN,NUM,REG_DATE,KIND) VALUES('%s',1,'%s','%s')",msisdn,getnowdate(day),code); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"插入user_sweet信息出錯!"); return 0; } if(count==0) { n=1; } else { n=0; } getinfo(msisdn,dcode,fee,code,num); memset(sql,0,sizeof(sql)); /* if(n==1) { if(msisdn[2]>'3') //修改于2004.08.30 { //sprintf(msg,"想讓您的朋友不用按鍵就看到你信息,那就快發送MT到5566吧,這可是時尚一族不可不玩的新玩意兒.咨詢025-3220691(本條信息免費)"); sprintf(msg,"想讓您的朋友不用按鍵就看到你信息,那就快發送MT到5566吧,這可是時尚一族不可不玩的新玩意兒.咨詢025-3220691"); } else { //sprintf(msg,"想讓您的朋友不用按鍵就看到你信息,那就快發送MT到8566吧,這可是時尚一族不可不玩的新玩意兒.咨詢025-3220691(本條信息免費)"); sprintf(msg,"想讓您的朋友不用按鍵就看到你信息,那就快發送MT到8566吧,這可是時尚一族不可不玩的新玩意兒.咨詢025-3220691"); } SendUser(icpid,msisdn,msg,dcode,fee,1); }*/ return 0;}static int getinfo(char *msisdn,char *dcode,float fee,char *code,int num){ char sql[500],msg[500],added[30]; MYSQL_ROW row; MYSQL_RES *res = NULL; int retval,min1,max1,min2,max2,i,amount,j; char id[11],day[22],kind[5]; i=0;j=0; //sprintf(added,"\n如需更多,請再發送%s",code); memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT KIND FROM MENU_ZF WHERE SUBSTRING(%s,1,8)>=SUBSTRING(BEGIN_DATE,1,8) AND SUBSTRING(%s,1,8)<=SUBSTRING(END_DATE,1,8)",getnowdate(day),getnowdate(day)); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢kind出錯!"); return 0; } if(res==NULL) { return 0; } if(row=mysql_fetch_row(res)) { strcpy(kind,row[0]); mysql_free_result(res); sprintf(sql,"SELECT MIN(ID),MAX(ID) FROM INFO_ZF WHERE KIND='%s'",kind); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢最大ID號出錯!"); return 0; } if(res==NULL) { return 0; } if(row=mysql_fetch_row(res)) { min1=atoi(row[0]); max1=atoi(row[1]); } mysql_free_result(res); sprintf(sql,"SELECT INFO FROM INFO_ZF WHERE ID>=%d AND ID<=%d AND KIND='%s' ORDER BY RAND() LIMIT %d",min1,max1,kind,num); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢隨機信息出錯1!"); return 0; } if(res==NULL) { return 0; } while(row=mysql_fetch_row(res)) { strcpy(msg,row[0]); /* if(j==4) { strcat(msg,added); //一條短信可能超長 } */ sprintf(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,1); j++; } mysql_free_result(res); } else { mysql_free_result(res); sprintf(sql,"SELECT MIN(ID),MAX(ID) FROM INFO_ZF WHERE KIND='0'"); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢最大ID號出錯!"); return 0; } if(res==NULL) { return 0; } if(row=mysql_fetch_row(res)) { min1=atoi(row[0]); max1=atoi(row[1]); } mysql_free_result(res); sprintf(sql,"SELECT INFO FROM INFO_ZF WHERE ID>=%d AND ID<=%d AND KIND='0' ORDER BY RAND() LIMIT %d",min1,max1,num); retval=QuerySQL(sql,&myconn,&res); if(retval!=0) { writelog(SELF_TYPE,"查詢隨機信息出錯1!"); return 0; } if(res==NULL) { return 0; } while(row=mysql_fetch_row(res)) { strcpy(msg,row[0]); /* if(j==4) { strcat(msg,added); //一條短信可能超長 } */ sprintf(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,1); j++; } mysql_free_result(res); } memset(sql,0,sizeof(sql)); strcpy(msg,""); strcpy(added,""); /* sprintf(msg,"如需更多請繼續點播66,或發送999點播聽得見的語音短信,送出更真摯的祝福"); sprintf(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,1); */ 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,"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 + =