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

📄 push.cpp

📁 移动梦网平台主程序
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////////////////				PUSH//////////////////////////////////////////////////////////////////////////////////////////								/////////////////////////////////////////////////////////////////////////////////////////说明://	(1) DCODE :ZXNY   FEE :15.00  //	(2) 9193   MSG: NY//								CL//						            06.07.28		///////////////////////////////////////////////////////////////////////////////////////	#include <stdio.h>#include <string.h>#include <stdlib.h>//#define  WINDOWS_NT#ifdef   WINDOWS_NT#include <winsock.h>#pragma comment (lib,"ws2_32.lib")#include  <mysql.h>#pragma comment(lib,"libmySQL.lib")#include "./include/define.h"#include "./include/sm_tools.h"#include "./include/sm_db.h"#define INIFILE "./config/sm.ini"#define sleep    Sleep#else#define  GetProfileStringMe GetProfileString#include <unistd.h>#include "mysql/mysql.h"#include "../include/define.h"#include "../include/sm_tools.h"#include "../include/sm_db.h" #define INIFILE "../config/sm.ini" #endif#define DEBUG  #define SELF_TYPE 	"push"//来自main.cppextern MYSQL *myconn;                                   //主函数已经初始化,所有的模块共用一个长连接         extern char  SP_ID[24];               			//特服号,在这里是5566//只在本文件中所用的全局变量,用static 修饰:static char service_phone[24];      			//客服电话 static char linkid[32];static char msisdntype[4];static char sp_id_extern[24];                           //servicecode //只在本文件中所用的函数,用static 修饰:static int ScanMsgSession();                                                    		//本模块只是从com_recv_session表中取出相关信息static int  DoScanMsgSession(char *msgcontent,char *user_table,char *push_date,char *dcode,float fee);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,char *fee_msisdn,int flag);static int InsertUser(char *msisdn,char *msgcontent);static int InsertUserCan(char *msisdn,char *msgcontent);//初始化本业务,放入主线程的InitPara()模块中int InitPush(){	GetProfileStringMe(INIFILE,"COMMON","TELEPHONE","",service_phone);        //从配置文件读取客服电话	return 0;}//本业务入口,放入主线程的 DoThread()模块,在main.h中声明int DoPush(){	int retval;		retval=ScanMsgSession();         //处理COM_RECV_SESSION	sleep(1);		return retval;}	//从COM_RECV_SESSION中取的数据static int ScanMsgSession(){	MYSQL_RES *res =NULL;	MYSQL_ROW row;	int  id;	char sql[512];	char srctermid[24];	char msgcontent[256];	char dcode[24];	char reg_date[24];	char push_date[24];	char user_table[256];	char day[24];	float fee=0.0;	memset(sql,0,sizeof(sql));        sprintf(sql,"SELECT ID,MSGCONTENT,REG_DATE,PUSH_DATE,USER_TABLE,DCODE,FEE FROM PUSHTABLE WHERE FLAG =1 LIMIT 1");		if(QuerySQL(sql,&myconn,&res)!=0)		{		writelog(SELF_TYPE,"查询COM_RECV_SESSION失败");		return -1; 		}	if(res ==NULL)		{		return -1;		}	if(row =mysql_fetch_row(res))		{		id =atoi(row[0]);		strcpy(msgcontent,row[1]);		strcpy(reg_date,row[2]);		strcpy(push_date,row[3]);		strcpy(user_table,row[4]);		strcpy(dcode,row[5]);		fee =(float)atof(row[6]);		getnowdate(day);		if(strcmp(day,push_date)<0)			{			mysql_free_result(res);				return 0;			}		DoScanMsgSession(msgcontent,user_table,push_date,dcode,fee);				memset(sql,0,sizeof(sql));		sprintf(sql,"UPDATE PUSHTABLE SET FLAG=0,DEAL_DATE=now()+0 WHERE ID=%d",id);		if(DoSQL(sql,&myconn)!=0)			{			writelog(SELF_TYPE,"更新COM_RECV_SESSION失败");			mysql_free_result(res);			return -1;			}								memset(sql,0,sizeof(sql));		sprintf(sql,"UPDATE %s SET PUSH_FLAG=0",user_table);		if(DoSQL(sql,&myconn)!=0)			{			writelog(SELF_TYPE,"更新USER_TABLE失败");			mysql_free_result(res);			return -1;			}							}	mysql_free_result(res);	return 0;}//处理COM_RECV_SESSION中取得的信息static int  DoScanMsgSession(char *msgcontent,char *user_table,char *push_date,char *dcode,float fee){	MYSQL_RES *res=NULL;	MYSQL_ROW row;      	long  num =0;                             //选手的编号	int  total=0;	char sql[1024];	char msisdn[24];	char id[12];	memset(sql,0,sizeof(sql));	memset(msisdn,0,sizeof(msisdn));	memset(id,0,sizeof(id));		while(1)		{		sprintf(sql,"SELECT ID,MSISDN FROM %s WHERE PUSH_FLAG =0 AND FLAG =1 LIMIT 100",user_table);		//puts(sql);		if(QuerySQL(sql,&myconn,&res)!=0)			{			writelog(SELF_TYPE,"查询USER_TABLE失败");			return 0;			}		num =(long)mysql_num_rows(res);		if(num <=0)			{			return 0;			}		while(row=mysql_fetch_row(res))			{			strcpy(id,row[0]);			strcpy(msisdn,row[1]);				SendUser(msisdn,msgcontent,dcode,fee,msisdn,0);						sprintf(sql,"UPDATE %s SET PUSH_FLAG=1 WHERE ID=%s",user_table,id); 			if(DoSQL(sql,&myconn)!=0)				{				writelog(SELF_TYPE,"更新PUSH_FLAG失败");				return 0;				}			}					mysql_free_result(res);				  					}		 	return 0;}//发送模块static int SendUser(char *msisdn,char *msg,char *dcode,float fee,char *fee_msisdn,int flag){	SEND_STRUC sendstruc;	int linkid_flag;	memset(&sendstruc,0,sizeof(sendstruc));		if(strcmp(msisdn,fee_msisdn) == 0)		{		sendstruc.cFeeUserType=0;		strcpy(sendstruc.sFeeTerminalID,"");		}	else		{		sendstruc.cFeeUserType=3;		strcpy(sendstruc.sFeeTerminalID,fee_msisdn);		}	strcpy(sendstruc.icpid,"MO");	sendstruc.nMsgLevel = 3;	strcpy(sendstruc.sServiceID,dcode);	sendstruc.nMsgFormat = 15;	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.cTpPid = 0;	sendstruc.cTpUdhi = 0;	strcpy(sendstruc.step,"9");	getnowdate(sendstruc.Send_Date);	strcpy(sendstruc.sMsgContent,msg);	checksql(sendstruc.sMsgContent);	strcpy(sendstruc.linkid,linkid);//	strcpy(sendstruc.DesTermIDType,msisdntype);	linkid_flag=1;	switch(flag)		{		case 0:		//免费、错误信息		//	strcpy(sendstruc.sServiceID,"FREE");			strcpy(sendstruc.sFeeType,"01");			sendstruc.nNeedReply = 0;			break;		case 2:		//按条点播(收费)			strcpy(sendstruc.sFeeType,"02");			sendstruc.nNeedReply = 0;			break;		case 3:		//包月点播(不收费的)			strcpy(sendstruc.sFeeType,"03");			sendstruc.nNeedReply = 0;			break;		case 5:		//包月扣费			strcpy(sendstruc.sFeeType,"03");			sendstruc.nNeedReply = 2;			break;			default:	//其它						strcpy(sendstruc.sServiceID,"FREE");			strcpy(sendstruc.sFeeType,"01");			sendstruc.nNeedReply = 0;			break;		}	SendMsg(&sendstruc,&myconn);	return 0;}

⌨️ 快捷键说明

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