📄 cispub.cpp
字号:
/****************************************** 小额支付系统支票截留业务公共处理函数******************************************/#include <sys/time.h>#include "sybdblib.hpp"#include "CisPub.hpp"extern SybServer m_clsSybServer;extern BepsPub sCis;SybCommand clsSybCommand(m_clsSybServer);SybResultset clsSybResultset(m_clsSybServer);//判字符串是否为全空格int IsEmptyStr( char *in_data ){ int i,j = 0; char tmp[1024]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] != ' ') tmp[j++] = in_data[i]; } if( strlen(tmp) == 0 ) { return FALSE; } return TRUE;}//判断字符串是否为数字int IsNumStr( char *in_data ){ int i = 0; char tmp[1024]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] > '9'||in_data[i] < '0') return -1; } return 0;}//格式化字符串去指定字符int StrTrim( char *in_data ,char c){ int i,j = 0; char tmp[1024]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] != c) tmp[j++] = in_data[i]; } strcpy( in_data , tmp); return TRUE;}//////////////////////////////////BepsPub::BepsPub(){}//开始事务 void BepsPub::BeginTrans(){ m_clsSybServer.BeginTrans();}//提交事务void BepsPub::CommitTrans(){ m_clsSybServer.CommitTrans();}//回滚事务void BepsPub::RollbackTrans(){ m_clsSybServer.RollbackTrans();}//产生序号char *BepsPub::getSerialNo(char type){ printf("Enter Beps::getSerialNo\n"); static char sSerial[20]; char sqlCmd[512]; int serialNo = 0; memset(sqlCmd, 0, sizeof(sqlCmd)); sprintf(sqlCmd, "update cisserno set dataid=dataid+1 where sertype='%c'", type); printf("EXEC SQL =[%d][%s]\n", strlen(sqlCmd), sqlCmd); if(0>=clsSybCommand.Update(sqlCmd)) { printf("Error update SQL=[%d][%s]", strlen(sqlCmd), sqlCmd); return NULL; } printf("update:%s\n", sqlCmd); memset(sqlCmd, 0, sizeof(sqlCmd)); sprintf(sqlCmd,"SELECT dataid FROM cisserno WHERE sertype='%c'",type); if(0>=clsSybCommand.GetLastRecord(sqlCmd, &serialNo , INTBIND)) { printf("Error update SQL=[%d][%s]", strlen(sqlCmd), sqlCmd); return NULL; } printf("select serial:%ld, :%s\n",serialNo, sqlCmd); if(type == '3') { if(serialNo >= 100000000) { serialNo = 10000000; if(0>=clsSybCommand.Update("update cisserno set dataid=10000000 where rtype='3'")) { printf("Error update SQL=[%d][%s]", strlen(sqlCmd), sqlCmd); return NULL; } } } else if(type == '4') { if(serialNo >= 10000) { serialNo = 1000; if(0>=clsSybCommand.Update("update cisserno set dataid=1000 where sertype='4'")) { printf("Error update SQL=[%d][%s]", strlen(sqlCmd), sqlCmd); return NULL; } } } memset(sSerial, 0, sizeof(sSerial)); printf("serial:%d\n",serialNo ); sprintf(sSerial, "%d", serialNo); return sSerial;}//根据参数代码获取系统[接口]控制参数int GetSysTime(char *Time ){ struct timeval ct; struct tm ttm; struct timezone zone; gettimeofday(&ct, &zone); localtime_r(&(ct.tv_sec), &ttm); if (ttm.tm_year >= 70) ttm.tm_year = ttm.tm_year + 1900; else ttm.tm_year = ttm.tm_year + 2000; ttm.tm_mon = ttm.tm_mon + 1; sprintf( Time , "%04d%02d%02d%02d%02d%02d" , ttm.tm_year, ttm.tm_mon,\ ttm.tm_mday,ttm.tm_hour,ttm.tm_min,ttm.tm_sec); return 0;} //获取业务类型对应关系/***********int BepsPub::GetTrxsType(char *CisTrType,char *CisReTrType,int flag){ int nResCode; char sSqlCmd[512]; char sResDesc[255]; memset(sSqlCmd, 0, sizeof(sSqlCmd)); memset(sResDesc, 0, sizeof(sResDesc)); //获取业务类型对应关系 if( flag == MBFETOCIS ) { sprintf(sSqlCmd,"SELECT CisTrType FROM CISTRTYPE WHERE CisReTrType='%s'", CisReTrType); nResCode = clsSybCommand.GetLastRecord(sSqlCmd,CisTrType,NTBSTRINGBIND); if ( nResCode <= 0 ) { sprintf(sResDesc,"获取业务类型对应关系[%s]失败!",CisReTrType); return FALSE; } }else { sprintf(sSqlCmd,"SELECT CisReTrType FROM CISTRTYPE WHERE CisTrType='%s'", CisTrType); nResCode = clsSybCommand.GetLastRecord(sSqlCmd,CisReTrType,NTBSTRINGBIND); if ( nResCode <= 0 ) { sprintf(sResDesc,"获取业务类型对应关系[%s]失败!",CisTrType); return FALSE; } } return TRUE;}************///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////***************************************************************************//* 描述:补充字符函数//* 参数:lr:左补1右补2;strbuf:需填充数组;fillch:补充字符;len:填充后总长度//* 返回值://* 错误码://***************************************************************************int FillChar( int lr, char *strbuf, char *fillch, int len){ char tBuff[60+1]; int tlen; memset( tBuff, 0, sizeof(tBuff) ); tlen = len - strlen(strbuf); if( lr == 1 )//左补 { for( int i=0; i<tlen; i++) strcat( tBuff, fillch ); strcat( tBuff, strbuf ); } else { strcat( tBuff, strbuf ); for( int i=0; i<tlen; i++) strcat( tBuff, fillch ); }// printf("buf:[%s]\n", tBuff); strcpy( strbuf, tBuff ); return TRUE;}/**************************************************************************** 描述:* 记录日志。* 参数:* <filename> 目标文件名称。* <fmt> 。* 返回值:* <-1> 打开文件失败。* <-2> 写文件失败。* 错误码:***************************************************************************/int filelog(char * filename, char * fmt, ...){ va_list ap; char fullname[128]; char fullpath[128]; FILE * fp; int fd; int ret; struct timeval ct; struct tm ttm; struct timezone zone; gettimeofday(&ct, &zone); localtime_r(&(ct.tv_sec), &ttm); if (ttm.tm_year >= 70) ttm.tm_year = ttm.tm_year + 1900; else ttm.tm_year = ttm.tm_year + 2000; ttm.tm_mon = ttm.tm_mon + 1; /* 打开文件 */ memset(fullname, 0, sizeof(fullname)); memset(fullpath, 0, sizeof(fullpath)); if (getenv("WORKDIR") != NULL) { snprintf(fullpath, sizeof(fullpath), "%s/log/%4d%02d%02d", getenv("WORKDIR"), ttm.tm_year,ttm.tm_mon,ttm.tm_mday); } else { snprintf(fullpath, sizeof(fullpath), "%s/%4d%02d%02d", "/home/cis/log", ttm.tm_year,ttm.tm_mon,ttm.tm_mday); } //验证目录 ret = access( fullpath, W_OK ); if( ret == -1 ) { //创建目录 ret = mkdir( fullpath, S_IRWXU ); if( ret != 0 ) { printf("mkdir error!!!!!!!!!!!!!\n"); return FALSE; } } sprintf(fullname, "%s/%s[%4d%02d%02d]", fullpath, filename, ttm.tm_year,ttm.tm_mon,ttm.tm_mday ); if ((fp = fopen(fullname, "a+")) == NULL) { return (-1); } /* 为避免写入混乱将文件加锁 */ fd = fileno(fp); lockf(fd, F_LOCK, 0l); fprintf(fp, "[%02d-%02d %02d:%02d:%02d]", ttm.tm_mon,ttm.tm_mday,ttm.tm_hour,ttm.tm_min,ttm.tm_sec); /* 写入文件 */ va_start(ap, fmt); if (vfprintf(fp, fmt, ap) < 0) { fclose(fp); /* 关闭文件 */ return (-2); } va_end(ap); /* 解锁 */ lockf(fd, F_ULOCK, 0l); fclose(fp); /* 关闭文件 */ return ( 0 );}//保存图象到文件int SaveCisPicDataToFile(char *fullname,char *cPicData){ FILE *fp=NULL; int ret; if((fp=fopen(fullname,"w+"))==NULL) { printf("OPen file error[%s]",fullname); return -1; } ret=fprintf(fp,cPicData); if( ret < 0 ) { printf("SaveCisPicDataToFile error!\n"); fclose(fp); return -1; } //filelog(ERRLOG,"write ret is %d",ret); ret=fclose(fp);// filelog(ERRLOG,"close ret is %d",ret);// filelog(ERRLOG,"pRecvData.msgcontent is :%s fullname=%s ret=%d",pRecvData->msgcontent,fullname,ret); return 1;}//从文件获取图象 int GetCisDataFromFile( char *fullname, char *filebuff ){ int iret = 0; FILE *fp = NULL; memset( filebuff , 0 , sizeof(filebuff)); if ((fp = fopen(fullname, "r+")) == NULL) { printf("Open File Error:[%s] \n", fullname); filelog(ERRLOG, "Open File Error:[%s] \n", fullname); return (-1); } iret = fread( filebuff, strlen(filebuff)-1,1, fp ); if( iret < 0 ) { printf("Read data failed from file:[%s] \n", fullname); filelog(ERRLOG, "Read data failed from file:[%s] \n", fullname); return -1; } return 1; }///////////////////////////////////////////////////////////////////////产生业务序列序号int BepsPub::MakeTrxsSerialNo(int *SerialNo,char *sResDesc,char *SerType){ char sSqlCmd[512]; int nResCode = 0; int nSerialNo; memset(sSqlCmd, 0, sizeof(sSqlCmd));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -