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

📄 charge_public.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
字号:
#include "charge_public.h"#include "payment.flds.h"int WriteLog(COracle *cDatabase,char *staff_id,char *window_name,char *comment,char *ret_str){/*	char lsSql[2048],lsTemp[1024];	long role_id;	int i,isqlcode;	sprintf(lsSql,"SELECT role_id FROM ROLES WHERE main_win = '%s'",window_name);	////userlog(comment);	////userlog(ret_str);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	////userlog("检索ROLES返回行数:%d",cDatabase->GetRowCount());	if(isqlcode<0)		{			cDatabase->Rollback();			strcpy(ret_str,cDatabase->GetSqlErrText());			return(-1);		}	strcpy(lsTemp,cDatabase->data->GetColData(1,1));	rtrim(lsTemp);	ltrim(lsTemp);	if(lsTemp==NULL || cDatabase->GetRowCount()!=1 )	{		cDatabase->Rollback();		strcpy(ret_str,"取role_id错误,没有对应值或返回多排!");		return(-1);	}	role_id=atol(lsTemp);	sprintf(lsSql,	"INSERT INTO SYSLOG(log_id,staff_id,role_id,action_time,comments)  "		"SELECT SEQ_SYSLOG_ID.NEXTVAL,%d,%d,sysdate,'%s'"	"FROM DUAL  "	,atol(staff_id),role_id,comment);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	if(isqlcode<0)	{		strcpy(ret_str,cDatabase->GetSqlErrText());		cDatabase->Rollback();		return(-1);	}	if(isqlcode==0) 	{		return(1);			}*/	return 1;}int GetSystime(COracle *cDatabase,char *systime,char *ret_str){	char lsSql[200];	int i,isqlcode;	strcpy(lsSql,"select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual");	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	////userlog("检索返回行数:%d",cDatabase->GetRowCount());	if(isqlcode<0)		{			strcpy(ret_str,cDatabase->GetSqlErrText());			return(-1);		}	strcpy(systime,cDatabase->data->GetColData(1,1));	////userlog(systime);	if(systime==NULL || cDatabase->GetRowCount()!=1 )	{		strcpy(ret_str,"未取到系统时间");		return(-1);	}	if(isqlcode==0) return(1);	return 0;}int GetMaxBillNo(COracle *cDatabase,char *ls_staff,char *maxbillno,char *ret_str){	char lsSql[2048];	long staff_id;	int i,isqlcode;	staff_id=atol(ls_staff);	sprintf(lsSql,	"UPDATE STAFF  "	"SET bill_max_no = bill_max_no + 1  "	"WHERE staff_id = %d  "	,staff_id);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	if(isqlcode<0)	{		strcpy(ret_str,cDatabase->GetSqlErrText());		cDatabase->Rollback();		return -1;	}	sprintf(lsSql,	"SELECT to_number('%s'||to_char(sysdate,'yymmdd')) * 1000000 + bill_max_no  "	"FROM STAFF  "	"WHERE staff_id = %d  "	,ls_staff,staff_id);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	if(isqlcode<0)	{		strcpy(ret_str,cDatabase->GetSqlErrText());		return -1;	}	strcpy(maxbillno,cDatabase->data->GetColData(1,1));	if(maxbillno==NULL || cDatabase->GetRowCount()!=1 )	{		strcpy(ret_str,"取最大销帐流水号出错,没有对应值或返回多排!");		return -1;	}	////userlog(maxbillno);	return 1;}int GetMaxPayNo(COracle *cDatabase,char *ls_staff,char *maxpayno,char *ret_str){	char lsSql[2048];	long staff_id;	int i,isqlcode;	staff_id=atol(ls_staff);	sprintf(lsSql,	"UPDATE STAFF  "	"SET pay_max_no = pay_max_no + 1  "	"WHERE staff_id = %d  "	,staff_id);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	if(isqlcode<0)	{		strcpy(ret_str,cDatabase->GetSqlErrText());		cDatabase->Rollback();		return -1;	}	sprintf(lsSql,	"SELECT to_number('%s'||to_char(sysdate,'yymmdd')) * 1000000 + pay_max_no  "	"FROM STAFF  "	"WHERE staff_id = %d  "	,ls_staff,staff_id);	////userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	if(isqlcode<0)	{		strcpy(ret_str,cDatabase->GetSqlErrText());		return -1;	}	strcpy(maxpayno,cDatabase->data->GetColData(1,1));	if(maxpayno==NULL || cDatabase->GetRowCount()!=1 )	{		strcpy(ret_str,"取最大付款流水号出错,没有对应值或返回多排!");		return -1;	}	////userlog(maxpayno);	return 1;}int GetInputParm(char *pstr,char *lparm[],int maxlen){	char tch[2];	long ltmp,len,pos;	long i=0,j,k=-1;	len=strlen(pstr);	int off=0;	if(len<=0) return 0;	while(1)	{		lparm[i]=(char *)malloc(maxlen);		//strcpy(lparm[i],NULL);		lparm[i][0]=0;		for(j=k+1;j<len;j++)		{			if(pstr[j]!='\t')			{				//sprintf(tch,"%c",pstr[j]);				//strcat(lparm[i],tch);				lparm[i][off]=pstr[j];				off++;											}			else			{				k=j;								break;			}		}		lparm[i][off]=0;		off=0;		if(j==len) break;				i++;	}	pos=strlen(lparm[i])-1;	if(lparm[i][pos]=='\n') lparm[i][pos]='\0';		return i+1;}int GetParmByAny(char *pstr,char *lparm[],char ch,int maxlen){	char tch[2];	long ltmp,len,pos;	long i=0,j,k=-1;	len=strlen(pstr);	if(len<=0) return 0;	while(1)	{		lparm[i]=(char *)malloc(maxlen);		strcpy(lparm[i],NULL);		for(j=k+1;j<len;j++)		{			if(pstr[j]!=ch)			{				sprintf(tch,"%c",pstr[j]);				strcat(lparm[i],tch);			}			else			{				k=j;				break;			}		}		if(j==len) break;		i++;	}	return i+1;}long GetRowCol(char *pstr,long *row,long *col){	long len;	long i,j,n=0,k=-1;	len=strlen(pstr);	if(len<=0) return 0;	while(1)	{	   i=0;	   while(1)	   {		for(j=k+1;pstr[j]!='\n'&&j<len;j++)		{			if(pstr[j]!='\t')			{				continue;			}			else			{				k=j;				break;			}		}		i++;		n++;		if(pstr[j]=='\n'||j>=len-1) break;	  }	  *row=*row+1;	  if(*row==1) *col=i;	  else if(*col!=i&&j<len) return -1;	  if(j>=len-1) break;	  k=j;	}	return n;}long GetMulRowData(char *pstr,char **lparm,long *row,long *col,int maxlen){	char tch[2];	long ltmp,len,pos;	long i,j,n=0,k=-1;	*row=0;*col=0;	len=strlen(pstr);	if(len<=0) return 0;	while(1)	{	   i=0;	   while(1)	   {		lparm[n]=(char *)malloc(maxlen);		strcpy(lparm[n],NULL);		for(j=k+1;pstr[j]!='\n'&&j<len;j++)		{			if(pstr[j]!='\t')			{				sprintf(tch,"%c",pstr[j]);				strcat(lparm[n],tch);			}			else			{				k=j;				break;			}		}		pos=strlen(lparm[n])-1;		if(lparm[n][pos]=='\r') lparm[n][pos]='\0';		////userlog("lparm[%d]= %s",n,lparm[n]);		i++;		n++;		if(pstr[j]=='\n'||j>=len-1) break;	  }	  *row=*row+1;	  if(*row==1) *col=i;	  else if(*col!=i&&j<len) return -1;	  if(j>=len-1) break;	  k=j;	}	return n;}void lpfree(char *pt[],int num){	for(int i=0;i<num;i++)		free(pt[i]);}void StrReturn(int liRet,char *lsData){	long lLen;	char *lsRet;	char lstmp[50];	lLen = strlen(lsData);	lsRet = 0;	lsRet = tpalloc("STRING",NULL,lLen+1);	if (lsRet == NULL)	{		sprintf(lstmp,"Tpalloc failed !Return : %d",liRet);		lsRet = tpalloc("STRING",NULL,50);		strcpy(lsRet,lstmp);		liRet=-1;	}	else	{		if (lLen <= 0) strcpy(lsRet,NULL);		else strcpy(lsRet,lsData);	}		tpreturn(TPSUCCESS, liRet, lsRet, 0L, 0);}int is_number(char *pStr){    int i;    for (i=0;i<strlen(pStr);i++)        if ((pStr[i]>='0' && pStr[i]<='9') || (pStr[i] == '.'))            ;        else            return FALSE;    return TRUE;}char* ltrim(char * pStr){    char lsTemp[1024],*p;    int i,j,l;    j = 0;    l = strlen(pStr);    p = pStr;    for(i=0;i<l;i++)    {    	if( (*p)!= ' ') break;    	p++;    }    strcpy(lsTemp,p);    strcpy(pStr,lsTemp);    return pStr;}char* rtrim(char *pStr){    int i,l;    l = strlen(pStr);    for(i=l-1;i>=0;i--)        if((pStr[i] == ' ') || (pStr[i] == '\r') ||(pStr[i] == '\n'))        	 continue;        else        {           pStr[i+1]= '\0';            break;         }    return pStr;}void GetProfileString(char *filename,char *areaname,char *keyname,char *keydata){	FILE *fp;	long flen;	char *filedata,area[256],*areabegin,*areaend,*areadata;	char *databegin,*dataend,*keybegin;	if((fp=fopen(filename,"r"))==NULL)	{		printf("Cannot open the configure file %s\n",filename);		exit(0);	}	fseek(fp,0L,SEEK_END);	flen=ftell(fp);	filedata=(char *)calloc(1,flen);	fseek(fp,0L,SEEK_SET);	fread(filedata,1,flen,fp);	fclose(fp);	sprintf(area,"[%s]",areaname);	areabegin=strstr(filedata,area);	areaend=strstr(areabegin+1,"[");	if(areaend==NULL)	{		areaend=filedata+flen-1;	}	keybegin=strstr(areabegin,keyname);	if(keybegin==NULL||keybegin>areaend)	{		return;	}	databegin=strstr(keybegin,"=");	dataend=strstr(keybegin,"\n");	if(dataend==NULL)	{		dataend=areaend;	}	while(*(databegin+1)==' ')	{		databegin++;	}	strncpy(keydata,databegin+1,dataend-databegin-1);	keydata[dataend-databegin-1] = '\0';}//函数:用于从字符串中导出某位置开始指定数量的字符串void MidOfStr(char* outstr, char* instr, int pos, int count){	int i;	for(i = 0; i < count; i ++)	{		outstr[i] = instr[pos+i];	}	outstr[count] = '\0';}

⌨️ 快捷键说明

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