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

📄 cispub.cpp

📁 液晶电视完整代码可实现人机界面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/******************************************    小额支付系统支票截留业务公共处理函数******************************************/#include <sys/time.h>#include <stdlib.h>#include "sybdblib.hpp"#include "CisPub.hpp"#include "libcore.h"#include "md5.h"#include "CBase64.h"#include "cnapstag.hpp"#define CISINFO  "CisIdx, MbfeIdx, doflag, rsflag, OprNo, PkgType, TrxsType,\            PreDate, TrxNo, RecverBKCD, RecverACC, RecverName,PayerBKCD, \            PayerACC,PayerName, MEYSYB, Amount, AccKind, AccNo,   ChkDate,\            AccDate, AccPsw,	Info,    Remark,  SysDate, RtnLimted, SRCFlag,\            ChkSatus,	PicFront,PicBack,SignInfo,RedoCount, RedoInfo,CisData,\            TagData"  extern SybServer m_clsSybServer;SybCommand  clsSybCommand(m_clsSybServer);SybResultset  clsSybResultset(m_clsSybServer);/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////BOOL     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;}BOOL     StrTrim( 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];        }	strcpy( in_data , tmp);        return TRUE;}//获取系统时间BOOL 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;}  //获取系统日期 BOOL GetSysData(char *Data ){	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( Data , "%04d%02d%02d" , ttm.tm_year, ttm.tm_mon,ttm.tm_mday);	return 0;}  BOOL BinToAsc(unsigned char* inPut, int inLen, char* outPut, int outLen){	if(inPut == NULL || outPut == NULL)	{		return FALSE;	}	if(outLen != 2*inLen)	{		return FALSE;	}		int tmp = 0;	for (int i=0;i<inLen;i++)	{		//高位处理		tmp = (inPut[i]>> 4) & 0X0F;		if (tmp < 10)			outPut[2*i] = tmp + 48 ;		else			outPut[2*i] = tmp + 55 ;		//低位处理		tmp = inPut[i] & 0X0F;		if (tmp < 10)			outPut[2*i+1] = tmp + 48 ;		else			outPut[2*i+1] = tmp + 55 ;	}		filelog(CIS_INTER_MB, "BinToAsc::OutPut=[d][%s]", outLen, outPut);	return TRUE;}int SH_EncodeBase64(char *pASCSrc,char *pBase64Res){	int  srcLen;	char cMap[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 	char  *pCurSrc,*pCurRes;	int  i,j,k,group;	char ch_Asc[4],ch_Base[4],ch,cha;		if(!pASCSrc || !pBase64Res) return -1;	srcLen = strlen(pASCSrc);	if(srcLen<1)	{	*pBase64Res = 0;		return -1;	}		group = srcLen/3;	i = 0;	pCurSrc = pASCSrc;	pCurRes = pBase64Res;	while(i<group)	{	for(j=0;j<3;j++)		{	if(pCurSrc[j]!=0)			{	ch_Asc[j] = *(pCurSrc+j);					}			else			{	for(k=j;k<4;k++)				{	ch_Asc[k] = 0;				}			}		}		ch_Base[0] = ((ch_Asc[0]>>2)&0x3f);		*pCurRes = cMap[ch_Base[0]];				ch_Base[1] = ((ch_Asc[0]<<4)&0x30);		ch_Base[1] += ((ch_Asc[1]>>4)&0x0f);		*(pCurRes+1) = cMap[ch_Base[1]];				ch_Base[2] = (ch_Asc[1]<<2)&0x3c;		ch_Base[2] += ((ch_Asc[2]>>6)&0x03);		*(pCurRes+2) = cMap[ch_Base[2]];				ch_Base[3] = (ch_Asc[2]&0x3f);		*(pCurRes+3) = cMap[ch_Base[3]];				i++;		pCurSrc+=3;		pCurRes+=4;	}	if((srcLen%3) == 1)	{	ch = *pCurSrc;		ch = ch>>2;		ch = ch&(0x3f);		*(pCurRes++) = cMap[ch];		ch = *pCurSrc;		ch = ch<<4;		ch = ch&(0x30);		*(pCurRes++) = cMap[ch];		*(pCurRes++) = '=';		*(pCurRes++) = '=';		*pCurRes = 0;	}	else if((srcLen%3) == 2)	{	ch = *pCurSrc;		ch = (ch>>2);		ch = ch&(0x3f);		*(pCurRes++) = cMap[ch];		ch  = *pCurSrc;		cha = *(pCurSrc+1);		ch  = ch<<4;		ch  = ch&(0x30);		cha = (cha>>4);		cha = cha&(0x0f);		cha += ch;		*(pCurRes++) = cMap[cha];		ch = *(pCurSrc+1);		ch = ch<<2;		ch = (ch&(0x3c));		*(pCurRes++) = cMap[ch];		*(pCurRes++) = '=';		*pCurRes = 0;	}	else		*pCurRes = 0;	return 1;}int SH_DecodeBase64(char *pBase64Src,char *pASCRes){	int  srcLen;	char  *pCurSrc,*pCurRes;	int  i=0,j,group;	char ch[4],ch_Asc[4];		srcLen = strlen(pBase64Src);	if(srcLen % 4 != 0) 	{	*pASCRes = 0;		return -1;	}	group = srcLen/4;	pCurSrc = pBase64Src;	pCurRes = pASCRes;	do	{	for(j=0;j<4;j++)		{	ch[j] = *(pCurSrc+j);			if(ch[j]>='A' && ch[j]<='Z')			{	ch_Asc[j] = ch[j] - 'A';			}			else if(ch[j]>='a' && ch[j]<='z')			{	ch_Asc[j]  = ch[j] -'a' + 26;			}				else if(ch[j]>='0' && ch[j]<='9')			{	ch_Asc[j] = ch[j] - '0' + 52;			}			else if(ch[j] == '+')			{	ch_Asc[j] = 62;			}			else if(ch[j] == '/')			{	ch_Asc[j] = 63;			}			else if(ch[j] == '=')			{	ch_Asc[j] = '=';			}			else			{	*pASCRes = 0;				return -1;			}		}			*pCurRes = (ch_Asc[0]<<2) + (((ch_Asc[1]&0x30)>>4)&0x0f);		if(ch[2]!='=')			*(pCurRes+1) = ((ch_Asc[1]&0x0f)<<4) + (((ch_Asc[2]&0x3c)>>2)&0x3f);		else		{	*(pCurRes+1) = (ch_Asc[1]&0x0f)<<4;			*(pCurRes+2) = 0;			return 1;		}		if(ch[3]!='=')			*(pCurRes+2) = ((ch_Asc[2]&0x03)<<6) + ch_Asc[3];		else		{	*(pCurRes+2) = (ch_Asc[2]&0x03)<<6;			*(pCurRes+3) = 0;			return 1;		}		i++;		pCurRes += 3;		pCurSrc += 4;	}while(i<group);	*(pCurRes) = 0;	return 1;}BepsPub::BepsPub(){	memset(m_UserNo, 0, 11);    memset(m_UserName, 0, 21);    memset(m_UserOrgNo, 0, 13);    memset(m_UserIpAddr, 0, 16);}//开始事务            void BepsPub::BeginTrans(){	m_clsSybServer.BeginTrans();}//提交事务void BepsPub::CommitTrans(){	m_clsSybServer.CommitTrans();}//回滚事务void BepsPub::RollbackTrans(){	m_clsSybServer.RollbackTrans();}//根据参数代码获取系统控制参数BOOL BepsPub::GetSysCtlPar(char *sParCode,char *sParValue,char *sResDesc){    int nResCode;	char sSqlCmd[512];			memset(sSqlCmd, '\0', sizeof(sSqlCmd));		//获取系统控制表的参数	sprintf(sSqlCmd,"SELECT parvalue FROM syspara WHERE  parcode='%s'", sParCode);		nResCode = clsSybCommand.GetLastRecord(sSqlCmd,sParValue,NTBSTRINGBIND);	if ( nResCode <= 0 )	{		filelog(CIS_INTER_MB, "GetSysCtlPar=[%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd);		sprintf(sResDesc,"获取系统参数[%s]失败!",sParCode);		return FALSE;	}	return TRUE;}//取工作日期BOOL BepsPub::GetWorkDate(char *WorkDate){        int nResCode;	char sSqlCmd[512];			memset(sSqlCmd, '\0', sizeof(sSqlCmd));		//获取系统控制表的参数	sprintf(sSqlCmd,"SELECT currsysdate FROM login" );		nResCode = clsSybCommand.GetLastRecord(sSqlCmd,WorkDate,NTBSTRINGBIND);	if ( nResCode <= 0 )	{		filelog(CIS_INTER_MB, "GetWorkDate=[%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd);		return FALSE;	}	return TRUE;}//修改系统控制参数BOOL BepsPub::MdySysCtlPar(char *sParCode,char *sParValue,char *sResDesc){		int     nResCode;	char 	sSqlCmd[512];		memset(sSqlCmd, '\0', sizeof(sSqlCmd));		//修改系统控制表的参数    	    sprintf(sSqlCmd,    "UPDATE CISCONCTL SET parvalue = '%s' WHERE  parcode ='%s' ", sParValue,sParCode);	nResCode = clsSybCommand.Update(sSqlCmd);	if ( nResCode <= 0 )	{		filelog(CIS_INTER_MB, "MdySysCtlPar=[%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd);		sprintf(sResDesc,"修改系统参数[%s][%s]失败!",sParCode,sParValue);		return FALSE;	}	return TRUE;	}//产生业务序列序号BOOL BepsPub::MakeTrxsSerialNo(int *SerialNo,char *sResDesc,char *SerType){           char    sSqlCmd[512];    int     nResCode = 0;        int nSerialNo;    memset(sSqlCmd, 0, sizeof(sSqlCmd));                 sprintf(sSqlCmd,"SELECT dataid FROM cisserno WHERE sertype='%s'",SerType);    nResCode = clsSybCommand.GetLastRecord(sSqlCmd,&nSerialNo , INTBIND);    if( nResCode <= 0 )    {        filelog("Sql.log","MakeTrxsSerialNo = [%d][%s][%s]\n",            sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd);        sprintf(sResDesc,"获取业务序列号[%s]失败!",SerType);        return FALSE;    }    //业务包号采用倒序生成(为避免与正常支付报文包号重复)    if( strncmp( SerType , SERIALNO_PKGNO , 1 ) != 0 )    {        *SerialNo = nSerialNo;        if( nSerialNo == 99999 )	    nSerialNo = 1;        else            nSerialNo += 1;    }else{        *SerialNo = nSerialNo;        if( nSerialNo == 90000000 )	    nSerialNo = 99999999;        else            nSerialNo -= 1;    }    memset(sSqlCmd, '\0', sizeof(sSqlCmd));             sprintf(sSqlCmd,"UPDATE cisserno SET dataid = %d WHERE sertype='%s'", nSerialNo ,SerType);    nResCode = clsSybCommand.Update(sSqlCmd);    if( nResCode <= 0 )    {        filelog("Sql.log","MakeTrxsSerialNo = [%d][%s][%s]\n",            sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd);        sprintf( sResDesc , "更改业务序列号[%s]失败!",SerType);        return FALSE;    }

⌨️ 快捷键说明

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