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

📄 charge_balance0908.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	strcpy(customer_name,lparm[3]);	strcpy(id_card,lparm[4]);	strcpy(pass_word,lparm[5]);	strcpy(checknbr,lparm[6]);	strcpy(amount,lparm[7]);	strcpy(paymethod,lparm[8]);	strcpy(present,lparm[9]);	strcpy(month_num,ltrim(rtrim(lparm[10])));	strcpy(eff_date,lparm[11]);	strcpy(op_flag,lparm[12]);		lpfree(lparm,rpnum);				//cDatabase->BeginTran();         if(strcmp(paymethod,"40")==0)    {        //乐山预付加入判断是否允许转预付        char ls_allow_flag[3];        if(strcmp(op_flag,"0")==0)        {	        sprintf(lsSql," select 1 from b_serv a,lbas.noallow_to_prepay b "	                      " where a.acct_id=%s "	                      " and a.serv_type_id=b.serv_type_id "	                      " and a.state not in 'F0X' "	                      ,acct_id);	        cDatabase->DoSql(lsSql);	        isqlcode=cDatabase->GetSqlCode();	 	 	if(isqlcode<0)		{			strcpy(lsTemp,"判断是否允许转预付1出错!\n");			strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");			if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			cDatabase->Commit();			StrReturn(-1,lsTemp);		}		strcpy(ls_allow_flag,cDatabase->GetData());				if(atol(ls_allow_flag)==0)		{			sprintf(lsSql," select 1 from b_acct a, lbas.noallow_to_prepay b "			              " where a.acct_id=%s "			              " and a.payment_method=b.payment_method "			              ,acct_id);			//userlog(lsSql);			cDatabase->DoSql(lsSql);	                isqlcode=cDatabase->GetSqlCode();	 		 	if(isqlcode<0)			{				strcpy(lsTemp,"判断是否允许转预付2出错!\n");				strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");				if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				cDatabase->Commit();				StrReturn(-1,lsTemp);			}			strcpy(ls_allow_flag,cDatabase->GetData());		}		else		{			StrReturn(-3,"该帐户下有号码业务类型不符合转预付要求!");		}				if(atol(ls_allow_flag)==0)		{			sprintf(lsSql,"select no_id from lbas.large_no "			              " where no_type='max_products'" );			//userlog(lsSql);				cDatabase->DoSql(lsSql);	                isqlcode=cDatabase->GetSqlCode();	 		 	if(isqlcode<0)			{				strcpy(lsTemp,"判断是否允许转预付2出错!\n");				strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");				if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				cDatabase->Commit();				StrReturn(-1,lsTemp);			}						int li_max_products,li_serv_num;			li_max_products=atoi(cDatabase->GetData());						sprintf(lsSql," select count(*) from b_serv "			              " where acct_id=%s "			              " and state<>'F0X' "			              ,acct_id);			//userlog(lsSql);              			cDatabase->DoSql(lsSql);	                isqlcode=cDatabase->GetSqlCode();					 	if(isqlcode<0)			{				strcpy(lsTemp,"判断是否允许转预付2出错!\n");				strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");				if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				cDatabase->Commit();				StrReturn(-1,lsTemp);			}						li_serv_num=atoi(cDatabase->GetData());						if(li_serv_num>=li_max_products)			{			   strcpy(ls_allow_flag,"1");			}			else			{			   strcpy(ls_allow_flag,"0");			}							}		     else		{			StrReturn(-3,"该帐户付款方式不符合转预付费要求!");		}					if(atoi(ls_allow_flag)>0)		{			StrReturn(-2,"该帐户下电话号码超出标准");		}	}     }        		sprintf(lsSql," delete from BALANCE_TABLE_ADMIN "	              " where acct_id=%s"	              ,acct_id);        //userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"删除BALANCE_TABLE_ADMIN表中旧数据时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	              	#if 0	//广安没有用号线接口表,注释掉该部分的处理	//号线接口插入处理       sprintf(lsSql,         " select b.area_id,substr(c.lbas_code,1,2) "         " from lbas.serv a,lbas.acct b,lbas.serv_type c "         " where a.acct_id = b.acct_id "         " and a.acct_seq_nbr = b.acct_seq_nbr "         " and a.acct_id=%s "         " and a.state <>'F0X' "          " and b.state='10A' "         " and a.serv_type_id=c.serv_type_id "         " and rownum=1 "         ,acct_id);                   //userlog(lsSql);         cDatabase->DoSql(lsSql);         isqlcode=cDatabase->GetSqlCode();         //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());  	if(isqlcode<0) 	{			strcpy(lsTemp,"向销帐库的BALANCE_TABLE_ADMIN表中插数据时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	} 		int li_area_id,li_area_type ;	char ls_lbas_code[10];        	li_area_id=atoi(cDatabase->data->GetColData(1,1));	strcpy(ls_lbas_code,cDatabase->data->GetColData(1,2));			if(li_area_id>2 ||(li_area_id==2 && strcmp(ls_lbas_code,"WX")!=0))	{            li_area_type=3;        }                if((li_area_id ==1||li_area_id==2)&& strcmp(ls_lbas_code,"WX")==0)        {            li_area_type=2;         }                if(li_area_id==1 && strcmp(ls_lbas_code,"WX")!=0)         {            li_area_type=1;         } 	sprintf(lsSql,	 " insert into lbas.prepay_hx_interface "	 " (prepay_hx_nbr,acct_nbr_97,payment_method,old_payment_method,created_date, "	 " staff_id,area_id,state,acc_nbr )"	 " select charge.seq_prepay_hx.nextval, b.acct_nbr_97,'%s',b.payment_method,sysdate,"	 " %s,%d,'0',a.acc_nbr from lbas.serv a,lbas.acct b"	 " where a.acct_id=%s "	 " and a.acct_id=b.acct_id "	 " and a.acct_seq_nbr=b.acct_seq_nbr "	 " and a.state <>'F0X' "	 " and b.state ='10A' "	 ,paymethod,staff_id,li_area_type,acct_id);       // 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_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	} 	 	 #endif 	 //广安没有用号线接口表,注释掉该部分的处理	                   	//向销帐库的BALANCE_TABLE_ADMIN表中插数据	sprintf(lsSql,	"INSERT INTO BALANCE_TABLE_ADMIN  "		"(acct_id,name,password,   "		"id_card_nbr,total_amount,advance,radix,ratio,create_date,state,state_date,present)   "	"VALUES (%s,'%s','%s',   "		"'%s',%s + %s ,%s,0,0,sysdate,'1',sysdate,%s)   "	,acct_id,customer_name,pass_word,id_card,amount,present,amount,present);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"向销帐库的BALANCE_TABLE_ADMIN表中插数据时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		sprintf(lsSql,	 " select seq_balance_hist_admin.nextval from dual ");	 	 cDatabase->DoSql(lsSql);	 isqlcode=cDatabase->GetSqlCode();	 	 if(isqlcode<0)	 {	 	strcpy(lsTemp,"获取预付流水信息出错2!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);		 		 }	 	 if(cDatabase->GetRowCount()>0)	{			sprintf(hist_id,"%s",cDatabase->GetData());	}		//向销帐库的BALANCE_HIST_ADMIN表中插数据		sprintf(lsSql,	"INSERT INTO BALANCE_HIST_ADMIN   "		"(balance_hist_admin_id,acct_id,amount,use_catg,staff_id,balance,use_date,state,present )   "	"VALUES (%s,%s,%s,'1',   "	"%s,%s + %s,sysdate,'01',%s)   "	,hist_id,acct_id,amount,staff_id,amount,present,present);			//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"向销帐库的BALANCE_HIST_ADMIN表中插数据时出错2!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(atol(present)>0)	{		sprintf(lsSql,		 " INSERT INTO BALANCE_HIST_EFF_EXP "		  "(balance_hist_admin_id,acct_id,amount,present,eff_date,eff_month,state,state_date,balance,staff_id) "		  " VALUES(%s,%s,%s,%s,to_date('%s','yyyy-mm-dd'),%s,'01',sysdate,%s + %s,%s )"		  ,hist_id,acct_id,amount,present,eff_date,month_num,amount,present,staff_id);		  	        //userlog(lsSql);		cDatabase->DoSql(lsSql);		isqlcode=cDatabase->GetSqlCode();		//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());				if(isqlcode<0) 		{				strcpy(lsTemp,"向销帐库的BALANCE_HIST_EFF_EXP表中插数据时出错4!\n");			strcat(lsTemp,cDatabase->GetSqlErrText());			strcat(lsTemp,"\n");			cDatabase->Rollback();			if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			cDatabase->Commit();			StrReturn(-1,lsTemp);		}		          }	        	//更新收费库B_ACCT表中的balance字段的值/*	sprintf(lsSql,	"UPDATE B_ACCT   "	"SET balance = %s + %s , "	" payment_method='%s' "	"WHERE acct_id=%s AND   "		" state='10A'  "	,amount,present,paymethod,acct_id);	*///广安不修改付费方式	sprintf(lsSql,	"UPDATE B_ACCT   "	"SET balance = %s + %s  "	"WHERE acct_id=%s AND   "		" state='10A'  "	,amount,present,acct_id);			//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"更新收费库B_ACCT表中的balance字段的值时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}			//更新计费库ACCT表中的balance与payment_method两字段的值/*	sprintf(lsSql,	"UPDATE LBAS.ACCT    "	"SET balance = %s + %s,   "	 "payment_method = '%s'   "	"WHERE acct_id=%s AND   "		"state = '10A'   "	,amount,present,paymethod,acct_id);	*///广安不修改付费方式	sprintf(lsSql,	"UPDATE LBAS.ACCT    "	"SET balance = %s + %s   "	"WHERE acct_id=%s AND   "		"state = '10A'   "	,amount,present,acct_id);			//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"更新计费库ACCT表中的balance与payment_method两字段的值时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}			//插入预付款的付款记录/*	rt=GetMaxPayNo(cDatabase,staff_id,paymaxno,lsErr);	if(rt!=1)	{		strcpy(lsTemp,"生成预付款付款记录流水号时出错!\n");		strcat(lsTemp,lsErr);		strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);			}

⌨️ 快捷键说明

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