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

📄 point.cpp

📁 移动梦网平台主程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//COD_SERVICE中的PARTNER字段填写上行代码(定制业务),BITLONG字段用于判断是否要二次确认,1要,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"#include "main.h"#define SELF_TYPE	"point"#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 char sp_id_extern[20];static char linkid[9];static int ScanMsg();static int ScanMsgSession();static int DoService(char *code,char *msisdn,char *dcode,char *content,int want_num,char *feetype,float fee);static int DoMonthly_custom(char *msisdn,char *code,char *ocode,char *content,char *dcode,char *feetype,float fee);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);int InitPoint(){	srand(time(NULL));	GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);	return 0;}int DoPoint(){	int retval;	retval = ScanMsg();	if(retval < 0)	{				return 0;	}	retval = ScanMsgSession();	return retval;}static int getrand(int max_num)				//取1-max_num之间的随机数{	float retval;	int i;		retval = (float)(rand())/(float)(RAND_MAX);	retval = retval * max_num;	i = (int)(retval);	if(i == 0) i = 1;		return i;}static int have_mobile(char *msisdn)			//该用户是否有代取消的功能{	MYSQL_ROW row;	MYSQL_RES *res = NULL;	char sql[500];	int retval,count;	sprintf(sql,"SELECT COUNT(*) FROM INFO_CANCEL_PHONE WHERE PHONE='%s'",msisdn);	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询INFO_CANCEL_PHONE失败");		return 0;	}	if(res == NULL)	{		return 0;	}	if(row = mysql_fetch_row(res))	{		count=atoi(row[0]);	}	mysql_free_result(res);    	return count;}static int have_usertable(char *table_name[])			//取得所有的用户定制表{	MYSQL_ROW row;	MYSQL_RES *res = NULL;	char sql[500];	char table_name_static[100][100];	int retval,count;	count=0;		sprintf(sql,"SELECT TABLE_NAME FROM INFO_USERTABLE WHERE FLAG='1' ORDER BY ID");	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询INFO_USERTABLE失败");		return 0;	}	if(res == NULL)	{		return 0;	}	while(row = mysql_fetch_row(res))	{		strcpy(table_name_static[count],row[0]);		trim(table_name_static[count],' ');		table_name[count]=table_name_static[count];		count++;		//puts(*(table_name+count-1));	}	mysql_free_result(res);	    	return count;}static int ScanMsg(){	char sql[500],day[20];	MYSQL_ROW row;	MYSQL_RES *res = NULL;	int retval,want_num;	float fee,fee_mon;	char id[11],icpid[3],code[11],msisdn[22],msg[161],dcode[11];	char feetype[3];		memset(sql,0,sizeof(sql));		sprintf(sql,	        "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,MSGCONTENT,DCODE,FEE,LIMIT_NUM,FEETYPE,FEE_MON,LINKID	         FROM COM_RECV RECV,COD_SERVICE COD	         WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND (COD.KIND='DZ' OR COD.KIND='DK') LIMIT 200");	retval = QuerySQL(sql,&myconn,&res);	if(retval != 0)	{		writelog(SELF_TYPE,"查询COM_RECV失败");		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(feetype,row[8]);		fee_mon = atof(row[9]);		strcpy(linkid,row[10]);				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,"更新COM_RECV表出错!");			return 0;		}		if(strcmp(feetype,"03")==0)		{			DoService(code,msisdn,dcode,msg,want_num,feetype,fee_mon);	//申请业务成功		}		else		{			DoService(code,msisdn,dcode,msg,want_num,feetype,fee);	//申请业务成功		}			}	mysql_free_result(res);		memset(sql,0,sizeof(sql));	strcpy(id,"");	strcpy(icpid,"");	strcpy(code,"");	strcpy(msisdn,"");	strcpy(msg,"");	strcpy(dcode,"");			return 0;}static int DoService(char *code,char *msisdn,char *dcode,char *content,int want_num,char *feetype,float fee){	char sql[2000],cd[20],name[100];	int type,retval,num,i,table_num,count_ph;	char flag[2],free_flag[2],send_num[10],day[20],partner[10];	char *table_name[100];	float fee_p;	MYSQL_RES *res = NULL;	MYSQL_ROW row;	char buf[1000],buf_num[100],msg[1000],pcode[20],msisdn_buf[22];	int count = 0,bitlong=0,flag_state=0;		memset(sql,0,sizeof(sql));	trim(content,' ');	count_ph=have_mobile(msisdn);			//查找是否有权代取消		if(strcmp(code,"00000")==0 || strcmp(code,"0000") == 0 || strcmp(code,"QX0") == 0)      	{	    	// 取消所有业务 QX0 或 00000	    	if(strcmp(content,"")==0)		//为空是正常用户取消		{	    		if(strcmp(code,"QX0") == 0 || strcmp(code,"00000")==0)	    		{	    			table_num=have_usertable(table_name);		//取得取消的所有表的表名及个数	    			for (i=0;i<table_num;i++)	    			{	    				sprintf(sql,"SELECT COD.NAME,DCODE,FEETYPE,FEE_MON FROM %s POINT,COD_SERVICE COD\							WHERE POINT.FLAG='1' AND POINT.SV_CODE=COD.UCODE AND POINT.MSISDN='%s'",*(table_name+i),checksql(msisdn));					retval = QuerySQL(sql,&myconn,&res);   					if(retval != 0)   					{   						writelog(SELF_TYPE,"取消业务出错00000!");   						return 0;	   				}   					if(res == NULL)   					{   						if(msisdn[2]>'3')         //修改于2004.08.30   						{   							sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   						}   						else   						{   							sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   						}   					}   					else   					{   					   						while(row = mysql_fetch_row(res))   						{   							count ++;   							sprintf(msg,"您已成功取消%s,感谢您使用我们的短信服务!咨询电话%s",row[0],service_phone);   							sprintf(sp_id_extern,"");   							SendUser(msisdn,msg,dcode,fee,9);	//取消包   						}		   						mysql_free_result(res);   					}   					strcpy(buf_num,"");   				}   				for (i=0;i<table_num;i++)	    			{	    				sprintf(sql,"UPDATE %s SET FLAG='0',CANCEL_DATE='%s_all'\	    						WHERE FLAG='1' AND MSISDN='%s'",*(table_name+i),getnowdate(day),checksql(msisdn));	    				retval = DoSQL(sql,&myconn);	   				if(retval != 0)   					{   						writelog(SELF_TYPE,"取消全部业务出错!");   						return 0;   					}   				}   				if(count == 0)   				{   					sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   					sprintf(sp_id_extern,"");   					SendUser(msisdn,msg,dcode,fee,1);	//点播下发代码0000   				}				return 0;	    		}    			else if(strcmp(code,"0000") == 0)			{				strcpy(msg,"回复QX+序号,取消所订购的服务:\n0 取消所有服务\n");				strcpy(buf,"");				table_num=have_usertable(table_name);		//取得取消的所有表的表名及个数				for (i=0;i<table_num;i++)	    			{	    				if(strcmp(*(table_name+i),"USER_POINT_PR")==0)		//是不是图片会员表    					{    						sprintf(sql,"SELECT NAME FROM %s 							WHERE MSISDN='%s' AND FLAG='1'",*(table_name+i),checksql(msisdn));    					}    					else    					{    						sprintf(sql,"SELECT COD.NAME,UCODE FROM %s POINT,COD_SERVICE COD WHERE POINT.FLAG='1' AND POINT.SV_CODE=COD.UCODE AND POINT.MSISDN='%s'",*(table_name+i),checksql(msisdn));					}					retval = QuerySQL(sql,&myconn,&res);   					if(retval != 0)   					{   						writelog(SELF_TYPE,"取消业务出错!");   						return 0;	   				}   					if(res == NULL)   					{   						if(msisdn[2]>'3')        //修改于2004.08.30   						{   							sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   						}   						else   						{   							sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   						}   						   					}   					else   					{   					   						while(row = mysql_fetch_row(res))   						{   							count ++;   							sprintf(buf_num,"%d %s\n",count,row[0]);   							strcat(buf,buf_num);   						}		   						mysql_free_result(res);   					}   					strcpy(buf_num,"");   				}   				if(count == 0)   				{   					if(msisdn[2]>'3')         //修改于2004.08.30   					{   						sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   					}   					else   					{   						sprintf(msg,"您未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",service_phone);   					}   				}   				else   				{   					strcat(msg,buf);   				}   				sprintf(sp_id_extern,"012%d",getrand(999));				SendUser(msisdn,msg,dcode,fee,1);	//点播下发代码0000				return 0;			}	    		else	    		{	        		sprintf(msg,"您回复的代码有错误,请核实后再试,或直接拨打我们的客服热线:%s",service_phone);	        		sprintf(sp_id_extern,"");	        		SendUser(msisdn,msg,dcode,fee,0);	//错误信息				return 0;	    		}	    	}	    	else if(count_ph==0&&strcmp(content,"")!=0)		//没有权代取消但帮他人代取消	    	{	    		sprintf(msg,"您回复的代码有错误,请核实后再试,或直接拨打我们的客服热线:%s",service_phone);	    		sprintf(sp_id_extern,"");	        	SendUser(msisdn,msg,dcode,fee,0);	//错误信息			return 0;	    	}	    	else				//移动公司代取消	    	{	    		if(strcmp(code,"QX0") == 0 || strcmp(code,"00000")==0)	    		{	    			table_num=have_usertable(table_name);		//取得取消的所有表的表名及个数	    			for (i=0;i<table_num;i++)	    			{	    				sprintf(sql,"UPDATE %s SET FLAG='0',CANCEL_DATE='%sd',POINT_CHANNEL='4',FTP_FLAG='0'	    						WHERE FLAG='1' AND MSISDN='%s'",*(table_name+i),getnowdate(day),checksql(content));	    				retval = DoSQL(sql,&myconn);	   				if(retval != 0)   					{   						writelog(SELF_TYPE,"取消全部业务出错!");   						return 0;   					}   				}   				   				sprintf(msg,"您已代用户%s成功取消由南京宁网公司提供的所有服务.感谢您使用我们的短信服务!咨询电话%s",content,service_phone);				sprintf(sp_id_extern,"");	        		SendUser(msisdn,msg,dcode,fee,1);	//点播下发代码0000				return 0;	    		}    			else if(strcmp(code,"0000") == 0)			{				sprintf(msg,"回复QX+序号+%s,将代用户%s取消所订购的服务:\n0 取消所有服务\n",content,content);				strcpy(buf,"");				table_num=have_usertable(table_name);		//取得取消的所有表的表名及个数				for (i=0;i<table_num;i++)	    			{	    				if(strcmp(*(table_name+i),"USER_POINT_PR")==0)		//是不是图片会员表    					{    						sprintf(sql,"SELECT NAME FROM %s 							WHERE MSISDN='%s' AND FLAG='1'",*(table_name+i),checksql(content));    					}    					else    					{    						sprintf(sql,"SELECT COD.NAME,UCODE FROM %s POINT,COD_SERVICE COD WHERE POINT.FLAG='1' AND POINT.SV_CODE=COD.UCODE AND POINT.MSISDN='%s'",*(table_name+i),checksql(content));					}					retval = QuerySQL(sql,&myconn,&res);   					if(retval != 0)   					{   						writelog(SELF_TYPE,"移动代取消业务出错!");   						return 0;	   				}   					if(res == NULL)   					{   						if(msisdn[2]>'3')        //修改于2004.08.30   						{   							sprintf(msg,"用户%s未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",content,service_phone);   						}   						else   						{   							sprintf(msg,"用户%s未定制由南京宁网公司提供的业务.感谢您使用我们的短信服务!咨询电话%s",content,service_phone);   						}   					}   					else   					{   					   						while(row = mysql_fetch_row(res))   						{   							count ++;   							sprintf(buf_num,"%d %s\n",count,row[0]);   							strcat(buf,buf_num);   						}		   						mysql_free_result(res);   					}   					strcpy(buf_num,"");   				}   				if(count == 0)   				{   					if(msisdn[2]>'3')         //修改于2004.08.30   					{   						sprintf(msg,"用户%s未定制由南京宁网公司提供的短信业务.感谢您使用我们的短信服务!咨询电话%s",content,service_phone);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -