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

📄 xchange.cp

📁 UNIX/LINUX平台下面SMS网管原代码
💻 CP
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <memory.h>#include <sys/types.h>#include "etc.h"#include "bms_micro.h"#include "apgloble.h"#include "bms_strcdef.h"EXEC SQL INCLUDE SQLCA;EXEC SQL INCLUDE "bms_sql.h";void pub_insert_str_to_pipe1( int  posi, char *sour, char *str);int DB_get_businessinfo_tbc( char *ctiinstrument, char *businessinfo, char *custinfo ){EXEC SQL BEGIN DECLARE SECTION ;	char S_ctiinstrument[30+1];	char S_businessinfo[300+1];	char S_custinfo[300];EXEC SQL END   DECLARE SECTION ;	memset( S_businessinfo, '\0', sizeof( S_businessinfo ));	memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument ));	memset( S_custinfo, '\0', sizeof(S_custinfo ));	strcpy( S_ctiinstrument, ctiinstrument );	EXEC SQL SELECT businessinfo, custinfo into :S_businessinfo, :S_custinfo 		 FROM tbctiexchange		 WHERE new_callid = :S_ctiinstrument;	if(sqlca.sqlcode != 0 )        {		bms_trace("sqlca.sqlcode[%d]", sqlca.sqlcode);                return( FAILURE );        }	bms_trace("sqlca.sqlerrd[2][%d]", sqlca.sqlerrd[2]);/*	EXEC SQL DECLARE sel_cti1 CURSOR FOR 			SELECT businessinfo,custinfo,serial_no  			FROM  tbctiexchange 			WHERE new_callid = :S_ctiinstrument 			ORDER BY serial_no desc;	if(sqlca.sqlcode != 0 )	{        	bms_trace("DECLARE ret[%d]!", sqlca.sqlcode) ;		return( FAILURE );	}	EXEC SQL OPEN sel_cti1;	if(sqlca.sqlcode != 0 )	{		EXEC SQL FREE sel_cti1;        	bms_trace("OPEN cur ret[%d]!", sqlca.sqlcode) ;		return( FAILURE );	}	EXEC SQL FETCH sel_cti1 INTO :S_businessinfo, :S_custinfo;	if(sqlca.sqlcode != 0 )	{        	bms_trace("FETCH cur ret[%d]!", sqlca.sqlcode) ;		return( FAILURE );	}	EXEC SQL CLOSE sel_cti1;	EXEC SQL FREE sel_cti1;	EXEC SQL DELETE FROM tbctiexchange WHERE new_callid=:S_ctiinstrument ;*/	EXEC SQL DELETE FROM tbctiexchange WHERE new_callid=:S_ctiinstrument ;			pub_trim( S_businessinfo );	strcpy( businessinfo, S_businessinfo );	pub_trim( S_custinfo );	strcpy( custinfo, S_custinfo);	bms_trace("custinfo[%s]", custinfo);	return( SUCCESS );}int DB_put_businessinfo_tbc( char *callid, char *custid, char *businessinfo, char *custinfo , char *incall_num){EXEC SQL BEGIN DECLARE SECTION ;	char S_callid[100];	char S_businessinfo[300+1];	char S_custid[20+1];	char S_custinfo[300];	char sDate[20];	char S_incall_num[30];EXEC SQL END   DECLARE SECTION ;	memset( S_callid, '\0', sizeof( S_callid ));	memset( S_custid, '\0', sizeof( S_custid ));	memset( S_custinfo, '\0', sizeof( S_custinfo ));	memset( S_businessinfo, '\0', sizeof( S_businessinfo ));	memset( S_incall_num, '\0', sizeof( S_incall_num ));	strcpy( S_callid, callid );	strcpy( S_custid, custid );	strcpy( S_custinfo, custinfo);	strcpy( S_businessinfo, businessinfo );	strcpy( S_incall_num, incall_num );	pub_get_y4md( sDate );	bms_trace("date[%s]", sDate );	EXEC SQL INSERT INTO tbctiexchange 			( callid,custinfo, businessinfo, custid, calldeviceid,flag,reg_date ) 		        VALUES(:S_callid,:S_custinfo, :S_businessinfo,:S_custid, :S_incall_num, '0', :sDate );	if(sqlca.sqlcode != 0 )	{        	bms_trace("DB_insert_newacct[%d] errm[%s] Failure!",sqlca.sqlcode, sqlca.sqlerrm ) ;		return( FAILURE );	}	return( SUCCESS );}int DB_update_businessinfo_tbc( char *ctiinstrument, char *passwd, char *callid){EXEC SQL BEGIN DECLARE SECTION ;	char S_businessinfo[300+1];	char S_ctiinstrument[30+1];	char S_callid[60+1];EXEC SQL END   DECLARE SECTION ;	memset( S_businessinfo, '\0', sizeof( S_businessinfo ));	memset( S_callid, '\0', sizeof( S_callid ));	memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument ));	strcpy( S_ctiinstrument, ctiinstrument );	EXEC SQL SELECT businessinfo,callid INTO :S_businessinfo,:S_callid 		 FROM tbctiexchange 		 WHERE ctiinstrument = :S_ctiinstrument ;	if(sqlca.sqlcode != 0 )	{        	bms_trace("DB_UPDATE_businessinfo[%d] Failure!", sqlca.sqlcode) ;		return( FAILURE );	}    	pub_trim( S_businessinfo ) ;    	pub_trim( S_callid ) ;	pub_insert_str_to_pipe1( 3, S_businessinfo, passwd );	EXEC SQL UPDATE tbctiexchange 		 SET businessinfo = :S_businessinfo  		 WHERE ctiinstrument = :S_ctiinstrument and callid =:S_callid ;        if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[2] == 0 ) return( FAILURE );	strcpy( callid, S_callid );	return( SUCCESS );}int DB_agent_is_idle(){EXEC SQL BEGIN DECLARE SECTION;	int Number;EXEC SQL END   DECLARE SECTION;	EXEC SQL SELECT count(*) INTO :Number FROM  astation  WHERE status='2';	if(sqlca.sqlcode != 0 )	{        	bms_trace("DB_agent_is_idle[%d] Failure!", sqlca.sqlcode) ;		return( FAILURE );	}	if( Number == 0 ) return( FAILURE );	return( SUCCESS );}int DB_Get_CallId_FromTbctiexchange( char *ctiinstrument, char *callid){EXEC SQL BEGIN DECLARE SECTION ;	char S_ctiinstrument[30+1];	char S_callid[60+1];EXEC SQL END   DECLARE SECTION ;	memset( S_callid, '\0', sizeof( S_callid ));	memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument ));	strcpy( S_ctiinstrument, ctiinstrument );	EXEC SQL SELECT callid INTO :S_callid 		 FROM tbctiexchange 		 WHERE ctiinstrument = :S_ctiinstrument ;	if(sqlca.sqlcode != 0 )	{        	bms_trace("DB_Get_FROMTbctiexchange[%d] Failure!", sqlca.sqlcode) ;		return( FAILURE );	}    	pub_trim( S_callid ) ;	strcpy( callid, S_callid );	return( SUCCESS );}int DB_search_outbound(BIG_STRC *bs, int status,char *phone, char *trans_type, char *con_type,char *trans_con, char *subinfo, char *ins_id ){EXEC SQL BEGIN DECLARE SECTION ;	int	sStatus;	char sPhone[30];	char sTrans_type[5];	char sCon_type[5];	char sTrans_con[2048];	char sSubinfo[40];	char sIns_id[40];	char	curr_time[20];	int	sSt0,sSt1, iAtt;	int	sCall0,sCall1,sCall2,sCall3,sCall4;EXEC SQL END DECLARE SECTION ;	iAtt=0;	sSt0=sSt1=sCall0=sCall1=sCall2=sCall3=sCall4=0;	sStatus=status;	memset( sPhone, 0x00, sizeof(sPhone) );	memset( sTrans_type, 0x00, sizeof(sTrans_type) );	memset( sCon_type, 0x00, sizeof(sCon_type) );	memset( sTrans_con, 0x00, sizeof(sTrans_con) );	memset( sSubinfo, 0x00, sizeof(sSubinfo) );	memset( sIns_id, 0x00, sizeof(sIns_id) );	memset( curr_time, 0x00, sizeof(curr_time) );	EXEC SQL SELECT count(*) INTO :sSt0 FROM tb_ipivroutbound WHERE record_status=0;	EXEC SQL SELECT count(*) INTO :sSt1 FROM tb_ipivroutbound WHERE record_status!=0;	EXEC SQL SELECT count(*) INTO :sCall0 FROM tb_ipivroutbound WHERE call_result=0;	EXEC SQL SELECT count(*) INTO :sCall1 FROM tb_ipivroutbound WHERE call_result=1;	EXEC SQL SELECT count(*) INTO :sCall2 FROM tb_ipivroutbound WHERE call_result=2;	EXEC SQL SELECT count(*) INTO :sCall3 FROM tb_ipivroutbound WHERE call_result=3;	EXEC SQL SELECT count(*) INTO :sCall4 FROM tb_ipivroutbound WHERE call_result=4;	bs->debi_acct_type=sSt0;	bs->debi_curr=sSt1;	bs->cred_acct_type=sCall0;	bs->cred_curr=sCall1;	bs->deduct_type=sCall2;	bs->pz_type=sCall3;	bs->source_typ=sCall4;	get_time_ymd( "%T", curr_time );	bms_trace("curr time[%s]", curr_time );	EXEC SQL DECLARE out_cur CURSOR FOR 		SELECT phone,trans_type,content_type,trans_content,subinfo_id,insertrecord_id 		FROM tb_ipivroutbound 		WHERE record_status=:sStatus 		AND ( valbegtime is NULL or valbegtime="" or :curr_time>=valbegtime ) 		AND ( valendtime is NULL or valendtime="" or :curr_time<=valendtime)  		ORDER BY insertrecord_id;	bms_trace("SELECT ret[%d]", sqlca.sqlcode );	if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode) ;	if ( sqlca.sqlcode == SQLNOTFOUND ) return( FAILURE) ;	EXEC SQL OPEN out_cur;	bms_trace("OPEN curr ret[%d]", sqlca.sqlcode );	if( sqlca.sqlcode<0 ) return( sqlca.sqlcode );       	EXEC SQL FETCH out_cur 		INTO :sPhone,:sTrans_type,:sCon_type,:sTrans_con,:sSubinfo,:sIns_id; 	bms_trace("FETCH curr ret[%d]", sqlca.sqlcode );    	if( sqlca.sqlcode< 0 )	{		EXEC SQL CLOSE out_cur;		EXEC SQL FREE out_cur;		return( sqlca.sqlcode );	}	if( sqlca.sqlcode==100 )	{		EXEC SQL CLOSE out_cur;		EXEC SQL FREE out_cur;		return( 100 );	}	pub_trim( sPhone );	pub_trim( sTrans_type );	pub_trim( sCon_type );	pub_trim( sTrans_con );	pub_trim( sSubinfo );	pub_trim( sIns_id );	strcpy( phone, sPhone );	strcpy( trans_type, sTrans_type );	strcpy( con_type, sCon_type );	strcpy( trans_con, sTrans_con );	strcpy( subinfo, sSubinfo );	strcpy( ins_id, sIns_id );	EXEC SQL CLOSE out_cur;	EXEC SQL FREE out_cur;	EXEC SQL SELECT attempt INTO :iAtt FROM tb_ipivroutbound WHERE insertrecord_id=:sIns_id;	iAtt++;	bms_trace("SELECT ret[%d]", sqlca.sqlcode );	EXEC SQL UPDATE tb_ipivroutbound set attempt=:iAtt WHERE insertrecord_id=:sIns_id;	bms_trace("SELECT ret[%d]", sqlca.sqlcode );	return( sqlca.sqlcode);}int DB_update_outbound(BIG_STRC *bs, char * id, short stat, short result ){EXEC SQL BEGIN DECLARE SECTION ;	short	sStatus;	short	sResult;	char sIns_id[40];	int	sSt0,sSt1;	int	sCall0,sCall1,sCall2,sCall3,sCall4;EXEC SQL END DECLARE SECTION ;	int	flg=0;	sSt0=sSt1=sCall0=sCall1=sCall2=sCall3=sCall4=0;	strcpy( sIns_id, id );	sStatus=stat;	sResult=result;	bms_trace("id[%s] stat[%d] result[%d]",id, stat, result );	EXEC SQL PREPARE up_outb 		 FROM "UPDATE tb_ipivroutbound \		       SET call_result = ?, record_status =? \		       WHERE  insertrecord_id = ?" ;	EXEC SQL EXECUTE up_outb USING :sResult, :sStatus, :sIns_id ;        if ( sqlca.sqlcode < 0 ||  sqlca.sqlerrd[2] == 0 )	{		flg=-1;	}	EXEC SQL FREE up_outb ;	EXEC SQL SELECT count(*) INTO :sSt0 FROM tb_ipivroutbound WHERE record_status=0;	EXEC SQL SELECT count(*) INTO :sSt1 FROM tb_ipivroutbound WHERE record_status!=0;	EXEC SQL SELECT count(*) INTO :sCall0 FROM tb_ipivroutbound WHERE call_result=0;	EXEC SQL SELECT count(*) INTO :sCall1 FROM tb_ipivroutbound WHERE call_result=1;	EXEC SQL SELECT count(*) INTO :sCall2 FROM tb_ipivroutbound WHERE call_result=2;	EXEC SQL SELECT count(*) INTO :sCall3 FROM tb_ipivroutbound WHERE call_result=3;	EXEC SQL SELECT count(*) INTO :sCall4 FROM tb_ipivroutbound WHERE call_result=4;	sprintf(bs->notes2, "%d", sSt0 ); 	sprintf(bs->notes3, "%d", sSt1 ); 	sprintf(bs->notes4, "%d", sCall0 ); 	sprintf(bs->notes5, "%d", sCall1 ); 	sprintf(bs->notes6, "%d", sCall2 ); 	sprintf(bs->notes7, "%d", sCall3 ); 	sprintf(bs->notes8, "%d", sCall4 ); 	if( flg==-1 ) return( FAILURE );	return( SUCCESS );}int DB_get_businessinfo_and_callid( char *calldeviceid, char *businessinfo , char *callid,char *ctiinstrument){	EXEC SQL BEGIN DECLARE SECTION ;		char S_ctiinstrument[30+1];		char S_businessinfo[300+1];		char S_callid[60+1];		char S_deviceid[40+1];		long lSeiralNo;	EXEC SQL END   DECLARE SECTION ;	memset( S_businessinfo, '\0', sizeof( S_businessinfo ));	memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument ));	memset( S_callid, '\0', sizeof( S_callid));	memset( S_deviceid, '\0', sizeof( S_deviceid));	strcpy( S_deviceid,calldeviceid );	EXEC SQL DECLARE cur_call1 CURSOR FOR 			SELECT callid,custinfo,ctiinstrument			FROM  tbctiexchange 			WHERE ctiinstrument = :S_deviceid 			ORDER BY serial_no desc ;	if(sqlca.sqlcode != 0 )	{        	bms_trace("DB_get callid and businessinfo [%d] Failure!", sqlca.sqlcode) ;		EXEC SQL FREE cur_call1;		EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ;		return( FAILURE );	}	EXEC SQL OPEN cur_call1;	if( sqlca.sqlcode<0 )	{		bms_trace("open sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);		EXEC SQL FREE cur_call1;		EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ;		return( FAILURE );	}	EXEC SQL FETCH cur_call1 INTO :S_callid,:S_businessinfo,:S_ctiinstrument;	if( sqlca.sqlcode<0 )	{		bms_trace("fetch sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);		EXEC SQL CLOSE cur_call1;		EXEC SQL FREE cur_call1;		EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ;		return( FAILURE );	}	EXEC SQL CLOSE cur_call1;	EXEC SQL FREE cur_call1;	EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid;	pub_trim( S_callid );	pub_trim( S_businessinfo );	pub_trim( S_ctiinstrument );	strcpy( businessinfo, S_businessinfo );	strcpy( callid, S_callid );	strcpy( ctiinstrument, S_ctiinstrument );	return( SUCCESS );}int DB_Insert_Param_Businessinfo( char *callid, char *ctiinstrument, char *businessinfo){	EXEC SQL BEGIN DECLARE SECTION ;		char S_callid[100];		char S_businessinfo[300+1];		char S_ctiinstrument[30+1];		char sDate[20];	EXEC SQL END   DECLARE SECTION ;	memset( S_callid, '\0', sizeof( S_callid ));	memset( S_businessinfo, '\0', sizeof( S_businessinfo ));	memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument ));	strcpy( S_callid, callid );	strcpy( S_businessinfo, businessinfo );	strcpy( S_ctiinstrument, ctiinstrument );	pub_get_y4md( sDate );	EXEC SQL INSERT INTO tbctiexchange( callid, custinfo,  calldeviceid, flag, reg_date ) 			     VALUES(:S_callid, :S_businessinfo, :S_ctiinstrument, '1', :sDate);	if(sqlca.sqlcode != 0 )	{		bms_trace("fetch sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);		return( FAILURE );	}	return( SUCCESS) ;}void pub_insert_str_to_pipe1( int  posi, char *sour, char *str) {	char des[ 300 + 1] ;	int  pipe_posi, i, j,  len ;	int  flag = 0 ;       	bms_trace("DB_get_businessinfo[%s][%s] Failure!", sour,str) ;	pipe_posi = 0 ;	i = j = 0 ;	len = strlen( str) ;	while ( sour[ i] != '\0' )	{		des[ j] = sour[ i] ;		if ( sour[ i] == '|' )			pipe_posi ++ ;				if ( pipe_posi == posi&&flag ==0 )		{			des[ j + 1 ] = 0 ;			strcat( des, str) ;			j = j + len ;			flag = 1 ;		}		i ++ ;		j ++ ;	} 	des[ j ] = 0 ;	sprintf( sour, "%s", des) ;	return ;}

⌨️ 快捷键说明

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