⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diantai.cpp

📁 移动梦网平台主程序
💻 CPP
字号:
/*	中国联通  电台业务  2006.02.27 增加 WCZ	和电台作类业务,用户发送信息到指定号码后,系统从MENU_DT取出相应信息发送给用户,并插入到USER_DT中	cod表中kind='ZD'的都是使用该程序*	程序原理: 根据不同的节目发内容到相应接入号,可用接入号在MEMU_DT表中,FLAG=1的	          当INFO_FLAG 默认为1,表示系统只下发一条,若为'2',则会下发两条,此时INFO2 	          里也必须填入要发送的内容;若为'0',则无下行*/#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	"diantai"#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 ScanMsgSession();static int DoService(char *icpid,char *code,char *ocode,                     char *content,char *msisdn,char *dcode,float fee,char *feetype);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);int Initdiantai(){	GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);	srand(time(NULL));	return 0;}int Dodiantai(){	int retval;		retval = ScanMsgSession();		return retval;}static int ScanMsgSession(){	char sql[2000];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	int retval,i;	float fee,fee_mon;	char id[11],icpid[3],code[11],msisdn[22],dcode[11],ocode[11],feetype[3];	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='ZD' 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(feetype,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,"更新接受session指令表出错!");			mysql_free_result(res); 			return 0;		}		DoService(icpid,code,ocode,msg,msisdn,dcode,fee,feetype);			}	mysql_free_result(res);	return 0;}static int DoService(char *icpid,char *code,char *ocode,                     char *content,char *msisdn,char *dcode,float fee,char *feetype){	MYSQL_ROW row;	MYSQL_RES *res = NULL;	int len,retval,num=0,olen,count,state,flag=0,info_flag=1;	int od;	char sql[500],msg[500],msg1[500],msg2[500],ocodetemp[11],months[3];	char day[20],error[500];	count=0;	trim(content,' ');	checksql(content);		sprintf(sql,"SELECT INFO1,INFO2,INFO_FLAG,FLAG FROM MENU_DT WHERE OCODE='%s%s'",code,ocode);	retval=QuerySQL(sql,&myconn,&res);	if(retval!=0)	{		sprintf(error,"查询MENU_DT出错:%s",sql);		writelog(SELF_TYPE,error);		return 0;	}	if(res==NULL)	{		return 0;	}	if(row=mysql_fetch_row(res))	{		strcpy(msg1,row[0]);		strcpy(msg2,row[1]);		info_flag=atoi(row[2]);		flag=atoi(row[3]);		mysql_free_result(res);	}	else	{		mysql_free_result(res);		sprintf(msg,"您发送的号码有误,请将内容发送到正确号码上");		sprintf(sp_id_extern,"");		SendUser(msisdn,msg,dcode,fee,1);		return 0;	}	if(flag==0)	{		sprintf(msg,"尊敬的用户您好:该业务已暂停");		sprintf(sp_id_extern,"");		SendUser(msisdn,msg,dcode,fee,1);		return 0;	}		sprintf(sql,"INSERT INTO USER_DT(MSISDN,MSG,REG_DATE,OCODE,LINKID,FEETYPE,FEECODE,DCODE) VALUES('%s','%s','%s','%s%s','%s','%s',%.2f,'%s')",							msisdn,content,getnowdate(day),code,ocode,linkid,feetype,fee,dcode);	if(DoSQL(sql,&myconn) != 0)	{		writelog(SELF_TYPE,"插入USER_DT指令表出错!");		return 0;	}  sprintf(sp_id_extern,"%s%s",code,ocode);  if(info_flag==2 && strcmp(msg2,"")!=0)  {  	if(strcmp(feetype,"02")==0)	  {			SendUser(msisdn,msg1,dcode,fee,1);			SendUser(msisdn,msg2,dcode,fee,1);		}		else if(strcmp(code,"811")==0)      //2005.06.24为了是长号码是811的免费代码下发成功而做		{			SendUser(msisdn,msg1,dcode,fee,0);			SendUser(msisdn,msg2,dcode,fee,0);		}		else		{			SendUser(msisdn,msg1,dcode,fee,0);			SendUser(msisdn,msg2,dcode,fee,0);		}  }  else if(info_flag==0)  {  	return 0;  	  }  else  {  	if(strcmp(feetype,"02")==0)	  {				SendUser(msisdn,msg1,dcode,fee,1);		}		else if(strcmp(code,"811")==0)		{			SendUser(msisdn,msg1,dcode,fee,0);		}		else		{			SendUser(msisdn,msg1,dcode,fee,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,"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 + -