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

📄 charge_card.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
字号:
#include "charge_card.h"#include "payment.flds.h"//-----------------------------------------------------------------//构造函数//-----------------------------------------------------------------CCardManage::CCardManage(char *pcInp,COracle *pcDatabase){	cDatabase = pcDatabase;	pInp = pcInp;}//---------------------------------------------------------------------//服务PCSetCard实现函数,传入参数staff_id,area_id,acct_id,acct_seq_nbr//acc_nbr,card_no,opt_type,pay_type//---------------------------------------------------------------------void CCardManage::SetCard(){	char lsSql[2048],lsTemp[1024],lsErr[500];	char *lparm[9];	char staff_id[10],area_id[10],acct_id[20],seqnbr[4],acc_nbr[30];	char newcard[20],oldcard[20],opt_type[4],pay_type[4];	int i,isqlcode,lpnum,rpnum,rt;		lpnum=9;		rpnum=GetInputParm(pInp,lparm,100);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(area_id,lparm[1]);	strcpy(acct_id,lparm[2]);	strcpy(seqnbr,lparm[3]);	strcpy(acc_nbr,lparm[4]);	strcpy(newcard,lparm[5]);	strcpy(oldcard,lparm[6]);	strcpy(opt_type,lparm[7]);	strcpy(pay_type,lparm[8]);		lpfree(lparm,rpnum);		cDatabase->BeginTran();		//userlog(opt_type);	if(opt_type[0]=='A')	{		//插入卡号与合同号对应记录		sprintf(lsSql,  		"INSERT INTO B_BARCODE_ACCT  "         	"( bar_code,   "           	  "acct_id,   "           	  "contact_tel )  "  		"VALUES ( '%s',   "           		"%s,   "           		"'%s')  "          	,newcard,acct_id,acc_nbr);          	          	strcpy(lsTemp,"插入卡号与合同号对应记录时出错!\n");				}	else if(opt_type[0]=='C' || opt_type[0]=='U')	{		//更新卡号与合同号对应记录		sprintf(lsSql,  		"UPDATE B_BARCODE_ACCT   "   		"SET bar_code = '%s',  "           	"contact_tel = '%s'   "  		"WHERE acct_id = %s   "          	,newcard,acc_nbr,acct_id);          	          	strcpy(lsTemp,"更新卡号与合同号对应记录时出错!\n");	}	else if(opt_type[0]=='X')	{		//删除卡号与合同号对应记录		sprintf(lsSql,		"delete B_BARCODE_ACCT   "		"WHERE acct_id = %s  "        	,acct_id);        	        	strcpy(lsTemp,"删除卡号与合同号对应记录时出错!\n");	}	else	{		strcpy(lsTemp,"缴费卡操作类型参数传输不正确!\n");		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0||cDatabase->GetRowCount()!=1)	{			strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	//插入缴费卡设置历史记录	sprintf(lsSql,	"INSERT INTO B_BARCODE_STAFF   "         "( barcode_acct_list,  "           "acct_id,    "           "acct_seq_nbr,  "	   "old_bar_code,  "           "bar_code,  "           "action,      "           "action_date,   "           "pay_state,   "           "staff_id,   "           "area_id )  "  	"VALUES ( SEQ_B_BARCODE_STAFF.NEXTVAL,  "  	   "%s,  "           "%s,  "	   "'%s',  "           "'%s',  "           "'%s',  "           "sysdate,    "           "'%s',  "           "%s,  "           "%s)  "          ,acct_id,seqnbr,oldcard,newcard,opt_type,pay_type,staff_id,area_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0||cDatabase->GetRowCount()!=1)	{			strcpy(lsTemp,"插入缴费卡设置历史记录时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		cDatabase->Commit();	StrReturn(0,NULL);}//-----------------------------------------------------------------//服务PCStatCard实现函数,传入参数staff_id,start_date,end_date//-----------------------------------------------------------------void CCardManage::RecordList(char *staff_id,char *start_date,char *end_date){	char lsSql[2048],lsTemp[1024],lsErr[500];	int i,isqlcode;	int rt;			//检索缴费卡设置记录	sprintf(lsSql,  "SELECT  B_BARCODE_STAFF.barcode_acct_list ,  "           "B_BARCODE_STAFF.acct_id ,  "           "B_BARCODE_STAFF.acct_seq_nbr ,  "           "B_BARCODE_STAFF.old_bar_code ,   "           "B_BARCODE_STAFF.bar_code ,  "           "B_BARCODE_STAFF.action ,  "           "to_char(B_BARCODE_STAFF.action_date,'YYYY-MM-DD') ,  "           "B_BARCODE_STAFF.pay_state   "        "FROM B_BARCODE_STAFF   "        "WHERE ( B_BARCODE_STAFF.staff_id = %s ) and  "          "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) and   "          "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') )   "          ,staff_id,start_date,end_date);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	//userlog("检索返回行数:%d",cDatabase->GetRowCount());		if(isqlcode<0)	{			strcpy(lsTemp,"检索缴费卡设置记录时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	if(cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,NULL);	}		cDatabase->Commit();	StrReturn(0,cDatabase->GetData());}//-----------------------------------------------------------------//服务PCStatCard实现函数,传入参数staff_id,start_date,end_date//-----------------------------------------------------------------void CCardManage::CardStat(char *staff_id,char *start_date,char *end_date){	char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20];	int i,isqlcode;	int rt;	long len,retlong;		//统计对象变量声明	char *sdc_num,*chc_num,*nsdc_num,*nchc_num;					//缴费发卡统计	sprintf(lsSql,  "SELECT count(*)  "    "FROM B_BARCODE_STAFF    "   "WHERE ( B_BARCODE_STAFF.action = 'A' ) AND    "         "( B_BARCODE_STAFF.pay_state = '1' )  and   "         "( B_BARCODE_STAFF.staff_id = %s ) and   "         "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND    "         "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') )   "          ,staff_id,start_date,end_date);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"缴费发卡出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		retlong=strlen(cDatabase->data->GetColData(1,1));	sdc_num=(char *)malloc(retlong+1);	strcpy(sdc_num,cDatabase->data->GetColData(1,1));		//免费发卡统计	sprintf(lsSql,  "SELECT count(*)   "    "FROM B_BARCODE_STAFF    "   "WHERE ( B_BARCODE_STAFF.action = 'A' ) AND   "         "( B_BARCODE_STAFF.pay_state = '0' )  and   "         "( B_BARCODE_STAFF.staff_id = %s ) and   "         "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND   "         "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') )   "          ,staff_id,start_date,end_date);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"免费发卡出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		retlong=strlen(cDatabase->data->GetColData(1,1));	nsdc_num=(char *)malloc(retlong+1);	strcpy(nsdc_num,cDatabase->data->GetColData(1,1));		//缴费换卡统计	sprintf(lsSql,  "SELECT count(*)   "    "FROM B_BARCODE_STAFF   "   "WHERE ( B_BARCODE_STAFF.action = 'C' ) AND    "         "( B_BARCODE_STAFF.pay_state = '1' )  and  "         "( B_BARCODE_STAFF.staff_id = %s ) and  "         "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND    "         "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') )   "          ,staff_id,start_date,end_date);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"缴费换卡出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		retlong=strlen(cDatabase->data->GetColData(1,1));	chc_num=(char *)malloc(retlong+1);	strcpy(chc_num,cDatabase->data->GetColData(1,1));		//免费换卡统计	sprintf(lsSql,  "SELECT count(*)  "    "FROM B_BARCODE_STAFF    "   "WHERE ( B_BARCODE_STAFF.action = 'C' ) AND    "         "( B_BARCODE_STAFF.pay_state = '0' )  and   "         "( B_BARCODE_STAFF.staff_id = %s ) and   "         "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND    "         "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') )   "          ,staff_id,start_date,end_date);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"免费换卡出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		retlong=strlen(cDatabase->data->GetColData(1,1));	nchc_num=(char *)malloc(retlong+1);	strcpy(nchc_num,cDatabase->data->GetColData(1,1));				//构造返回数据字符串,连接顺序与客户端数据窗口的外部数据源变量声明顺序相关	strcpy(lsTemp,NULL);	sprintf(lsTemp,"%s\t%s\t%s\t%s\n",sdc_num,nsdc_num,chc_num,nchc_num);		if (sdc_num) free(sdc_num);	if (nsdc_num) free(nsdc_num);	if (chc_num) free(chc_num);	if (nchc_num) free(nchc_num);			cDatabase->Commit();	StrReturn(0,lsTemp);}//-----------------------------------------------------------------//服务PCGetCard实现函数,传入参数staff_id,acct_id//-----------------------------------------------------------------void CCardManage::GetCardInfo(){	char lsSql[2048],lsTemp[1024],lsErr[500];	char *lparm[4];	char staff_id[20],acct_id[20];	int i,isqlcode,lpnum,rpnum;		lpnum=2;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}			strcpy(staff_id,lparm[0]);	strcpy(acct_id,lparm[1]);		lpfree(lparm,rpnum);					//检索帐户及缴费卡信息	sprintf(lsSql,  "SELECT B_ACCT.acct_id,   "         "B_ACCT.acct_seq_nbr,   "         "B_ACCT.acct_nbr_97,   "         "B_ACCT.payment_method,   "         "B_ACCT.state,   "         "B_ACCT.customer_name,   "         "B_ACCT.credit_grade,   "         "B_BARCODE_ACCT.bar_code,   "         "B_ACCT.acc_nbr  "    "FROM B_ACCT,   "         "B_BARCODE_ACCT    "   "WHERE ( B_ACCT.acct_id = B_BARCODE_ACCT.acct_id(+)) and    "         "( ( B_ACCT.acct_id = %s ) AND    "         "( B_ACCT.state = '10A' ) )   "          ,acct_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	//userlog("检索返回行数:%d",cDatabase->GetRowCount());		if(isqlcode<0 || cDatabase->GetRowCount()>1 )	{			strcpy(lsTemp,"检索帐户及缴费卡信息时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,"帐户及缴费卡信息不存在!");	}		cDatabase->Commit();	StrReturn(0,cDatabase->GetData());}

⌨️ 快捷键说明

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