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

📄 transview.cpp

📁 这是一个银行证券转帐系统。可以实现银行和证券公司之间的转帐。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	for(i=0; i<len; i++)
	{
		if(src[2 * i] ==0 || src[2 * i + 1] == 0)
			break;
		dest[i] = HexCharVal(src[2 * i])*16 + HexCharVal(src[2 * i + 1]);
	}
	for(; i<len; i++)
		dest[i] = 0;
}

int CTransView::LoopQuery(PARAM *pParam, RESULT *pResult)
{
	INNERCOMM data;
	memset(&data,0,sizeof(INNERCOMM));

	PARAM tmpParam,aParam;
	RESULT tmpResult,aResult;
	int m_nIncNum;		//增加的转帐金额
	char szZzls[300];
	memset(szZzls,0,300);
	m_Interface->QueryGenTrans(pParam,pResult);
	if(pResult->iRet>=0)
	{
		strcpy(data.BANKID,m_comm.BANKID);
		for(int i=0;i<pResult->retData.rtArray.iRow;i++)
		{
			memset(&data,0,sizeof(INNERCOMM));
			strcpy(data.SECUACC,pResult->retData.rtArray.Array[i][2]);	//资金账号
			strcpy(data.SECUSER,pResult->retData.rtArray.Array[i][4]);	//券商流水
			strcpy(data.AMT,pResult->retData.rtArray.Array[i][5]);	//金额
			data.TRTYPE=pResult->retData.rtArray.Array[i][6][0];

			memset(&aParam,0,sizeof(PARAM));
			memset(&tmpParam,0,sizeof(PARAM));
			CString logMsg="日期:";
			logMsg+=pResult->retData.rtArray.Array[i][0];
			logMsg+=" 时间:";
			logMsg+=pResult->retData.rtArray.Array[i][1];
			logMsg+=" 证券帐号:";
			logMsg+=pResult->retData.rtArray.Array[i][2];
			logMsg+=" 银行代码:";
			logMsg+=pResult->retData.rtArray.Array[i][3];
			logMsg+=" 合同序号:";
			logMsg+=pResult->retData.rtArray.Array[i][4];
			logMsg+=" 金额";
			logMsg+=pResult->retData.rtArray.Array[i][5];
			logMsg+=" 交易类型";
			logMsg+=pResult->retData.rtArray.Array[i][6];
			logMsg+=" 银行帐号";
			logMsg+=pResult->retData.rtArray.Array[i][9];
			logMsg+=" 币种:";
			logMsg+=pResult->retData.rtArray.Array[i][10];
			logMsg+=" 身份证号:";
			logMsg+=pResult->retData.rtArray.Array[i][13];
			logMsg+=" 券商代码:";
			logMsg+=m_comm.SECUID;
			logMsg+=" 姓名:";
			logMsg+=pResult->retData.rtArray.Array[i][14];
			LogMsg(logMsg,0);
			strcpy(tmpParam.prData.prCol.Array[v_rq],pResult->retData.rtArray.Array[i][0]);			//日期
			strcpy(tmpParam.prData.prCol.Array[v_time],pResult->retData.rtArray.Array[i][1]);		//时间
			strcpy(tmpParam.prData.prCol.Array[v_account],pResult->retData.rtArray.Array[i][2]);	//
			strcpy(aParam.prData.prCol.Array[v_account],pResult->retData.rtArray.Array[i][2]);
			strcpy(tmpParam.prData.prCol.Array[v_bankid],pResult->retData.rtArray.Array[i][3]);
			strcpy(aParam.prData.prCol.Array[v_bankid],pResult->retData.rtArray.Array[i][3]);
			strcpy(tmpParam.prData.prCol.Array[v_htxh],pResult->retData.rtArray.Array[i][4]);
			strcpy(aParam.prData.prCol.Array[v_htxh],pResult->retData.rtArray.Array[i][4]);
			strcpy(tmpParam.prData.prCol.Array[v_je],pResult->retData.rtArray.Array[i][5]);
			strcpy(tmpParam.prData.prCol.Array[v_jylx],pResult->retData.rtArray.Array[i][6]);	//交易类型
			strcpy(aParam.prData.prCol.Array[v_jylx],pResult->retData.rtArray.Array[i][6]);
			strcpy(tmpParam.prData.prCol.Array[v_bankpswd],pResult->retData.rtArray.Array[i][7]);
			strcpy(tmpParam.prData.prCol.Array[v_bankacc],pResult->retData.rtArray.Array[i][9]);
			strcpy(tmpParam.prData.prCol.Array[v_bz],pResult->retData.rtArray.Array[i][10]);
			strcpy(aParam.prData.prCol.Array[v_bankacc],pResult->retData.rtArray.Array[i][9]);
			strcpy(tmpParam.prData.prCol.Array[v_sfzh],pResult->retData.rtArray.Array[i][13]);
			strcpy(tmpParam.prData.prCol.Array[v_secuid],m_comm.SECUID);
			strcpy(tmpParam.prData.prCol.Array[v_name],pResult->retData.rtArray.Array[i][14]);
			strcpy(aParam.prData.prCol.Array[v_name],pResult->retData.rtArray.Array[i][14]);
			switch(pResult->retData.rtArray.Array[i][6][0]){
			case '1':		//银行到证券
				LogMsg("开始调用银行接口:Transfer().......");
				m_BankInte->Transfer(&tmpParam,&tmpResult);
				LogMsg("结束调用银行接口:Transfer(),调用结果=%d,调用信息=%s",tmpResult.iRet,tmpResult.szErrMsg);
				if(tmpResult.iRet>=0)		//转帐成功
				{

					memset(szZzls,0,300);
					m_nBankToSecu++;
					m_nIncNum=int(atof(pResult->retData.rtArray.Array[i][5])*1000/10);
					m_nBToS+=m_nIncNum;

					//交易类型|交易时间|资金帐号|银行卡号|流水|交易金额|发起方|
					strcpy(szZzls,"1|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][1]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][2]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][9]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][4]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][5]);
					strcat(szZzls,"|");
					strcat(szZzls,"2|");
					LogZZLS(szZzls);
				}
				sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);
				//Add by YKP 2005.03.21
				strcpy(aParam.prData.prCol.Array[v_yhls],tmpResult.retData.rtArray.Array[i][0]);
				//Add by YKP 2005.03.21
				m_Interface->SendQSTransSucceed(&aParam,&aResult);
				strcpy(data.NOTE,tmpResult.szErrMsg);
				sprintf(data.RETCODE,"%d",tmpResult.iRet);
				ShowMSG(&data);
				break;
			case '2':		//证券转银行
				LogMsg("开始调用银行接口:Transfer().......",0);
				m_BankInte->Transfer(&tmpParam,&tmpResult);
				LogMsg("结束调用银行接口:Transfer()",0);
				if(tmpResult.iRet>=0)		//转帐成功
				{
					memset(szZzls,0,300);
					m_nSecuToBank++;
					m_nIncNum=int(atof(pResult->retData.rtArray.Array[i][5])*1000/10);
					m_nSToB+=m_nIncNum;
					//交易类型|交易时间|资金帐号|银行卡号|流水|交易金额|发起方|
					strcpy(szZzls,"2|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][1]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][2]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][9]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][4]);
					strcat(szZzls,"|");
					strcat(szZzls,pResult->retData.rtArray.Array[i][5]);
					strcat(szZzls,"|");
					strcat(szZzls,"2|");
					LogZZLS(szZzls);
				}

				sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);
				//Add by YKP 2005.03.22
				strcpy(aParam.prData.prCol.Array[v_yhls],tmpResult.retData.rtArray.Array[i][0]);
				//Add by YKP 2005.03.22
				m_Interface->SendQSTransSucceed(&aParam,&aResult);
				strcpy(data.NOTE,tmpResult.szErrMsg);
				sprintf(data.RETCODE,"%d",tmpResult.iRet);
				ShowMSG(&data);
				break;
			case '3':		//查询银行余额
				LogMsg("开始调用银行接口:QueryBankBalance().......",0);
				m_BankInte->QueryBankBalance(&tmpParam,&tmpResult);
				sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);
				if(tmpResult.iRet>=0)
					strcpy(aParam.prData.prCol.Array[v_je],tmpResult.retData.rtArray.Array[0][1]);	//金额
				else
				{
					LogMsg(tmpResult.szErrMsg,0);
					strcpy(aParam.prData.prCol.Array[v_je],"0");
				}
				LogMsg("结束调用银行接口:QueryBankBalance()",0);
				m_Interface->SendQSTransSucceed(&aParam,&aResult);
				strcpy(data.NOTE,aResult.szErrMsg);
				sprintf(data.RETCODE,"%d",aResult.iRet);
				strcpy(data.NOTE,tmpResult.szErrMsg);
				break;
			case '4':	//修改银行密码
				LogMsg("开始调用银行接口:ChangegTranPswd().......",0);
				m_BankInte->ChangeTranPswd(&tmpParam,&tmpResult);
				if(tmpResult.iRet>=0)
					strcpy(aParam.prData.prCol.Array[v_je],tmpResult.retData.rtArray.Array[0][0]);//金额
				else
				{
					strcpy(aParam.prData.prCol.Array[v_je],"-9999");	//
					sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);	//处理结果
					strcpy(aParam.prData.prCol.Array[v_note],tmpResult.szErrMsg);
				}
				LogMsg("结束调用银行接口:ChangegTranPswd()",0);
				strcpy(data.AMT,aParam.prData.prCol.Array[v_je]);
				m_Interface->SendQSTransSucceed(&aParam,&aResult);				
				break;
			case '5':		//银行冲销申请
				LogMsg("开始调用银行接口:AjustTransfer().......",0);
				m_BankInte->AjustTransfer(&tmpParam,&tmpResult);
				LogMsg("结束调用银行接口:AjustTransfer()",0);
				break;
			case '6':		//开户
				LogMsg("开始调用银行接口:OpenAccount().......",0);
				m_BankInte->OpenAccount(&tmpParam,&tmpResult);
				LogMsg("结束调用银行接口:OpenAccount()",0);
				if(tmpResult.iRet>=0)
					m_nOpenAcc++;
				sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);
				m_Interface->SendQSTransSucceed(&aParam,&aResult);
				strcpy(data.NOTE,tmpResult.szErrMsg);
				sprintf(data.RETCODE,"%d",tmpResult.iRet);
				ShowMSG(&data);
				break;
			case '7':		//销户
				LogMsg("开始调用银行接口:DeleteAccount().......",0);
				m_BankInte->DeleteAccount(&tmpParam,&tmpResult);
				LogMsg("结束调用银行接口:DeleteAccount()",0);
				if(tmpResult.iRet>=0)
					m_nDelAcc++;
				sprintf(aParam.prData.prCol.Array[v_cljg],"%d",tmpResult.iRet);
				m_Interface->SendQSTransSucceed(&aParam,&aResult);
				strcpy(data.NOTE,tmpResult.szErrMsg);
				sprintf(data.RETCODE,"%d",tmpResult.iRet);
				ShowMSG(&data);
				break;
			case '8':		//换卡

				break;
			case 9:			//签到
				break;
			case '0':		//签退
				break;
			default:
				break;
			}
			strcpy(data.NOTE,aResult.szErrMsg);
			sprintf(data.RETCODE,"%d",aResult.iRet);
			ShowMSG(&data);
		}
	}
		
	return 0;
}

UINT GetSecuReq(LPVOID lParam)
{
	PARAM myParam;
	RESULT myResult;

	CTransView *p=(CTransView *)lParam;
	while(p->m_bOpen){
		if(!p->m_bOpen)	return 0;
		memset(&myParam,0,sizeof(PARAM));
		CTime t=CTime::GetCurrentTime();
		CString sRQ=t.Format("%Y%m%d");
		strcpy(myParam.prData.prCol.Array[v_rq],(LPCSTR)sRQ);
		strcpy(myParam.prData.prCol.Array[v_bankid],p->m_comm.BANKID);
		if(p->m_Interface->QueryGenTrans==NULL)	break;
		if(p->m_bMulti)
		{
			for(int i=0;i<3;i++)
			{
				sprintf(myParam.prData.prCol.Array[v_bz],"%d",i);
				p->LoopQuery(&myParam,&myResult);
			}
		}
		else
			p->LoopQuery(&myParam,&myResult);
		Sleep(300);
	}
	return 0;
}

//读取从银行发来的请求,并把处理结果返回给银行
UINT GetBankReq(LPVOID lParam)
{
	INNERCOMM data;
	memset(&data,0,sizeof(INNERCOMM));
	SOCKADDR_IN addr;
	int addrlen=sizeof(SOCKADDR_IN);
	SOCKET s;
	char Jylx;
	int recvlen;
	char	myBuf[1024],SendBuf[1024],RecvBuf[1024];
	CTransView *p=(CTransView *)lParam;
	s=accept(p->ListenSocket,(SOCKADDR *)&addr,&addrlen);
	if(INVALID_SOCKET==s)
	{			
		p->LogMsg("没有检测到相应的请求!",0);
		return 0;
	}
	AfxBeginThread(GetBankReq,lParam);
	fd_set sendset,recvset;
	FD_ZERO(&recvset);
	FD_SET(s,&recvset);
	timeval timeout = {60,0};
	int OK = select(1,&recvset,NULL,NULL,&timeout);
	memset(RecvBuf,0,1024);
	memset(SendBuf,0,1024);
	memset(myBuf,0,1024);
	if(OK)
	{
		recvlen=recv(s,RecvBuf,1024,0);
		if(recvlen<=0)
		{
			p->LogMsg("接收失败!",0);
			closesocket(s);
			return 0;
		}
		//记录收到的信息
		strcpy(SendBuf,"Recv ");
		strcat(SendBuf,":");
		strcat(SendBuf,myBuf);
		PARAM myParam;
		RESULT myResult;
		memset(&myParam,0,sizeof(PARAM));
		memset(&myResult,0,sizeof(RESULT));
		Jylx=p->m_BankInte->GetParam(RecvBuf,recvlen,&myParam);
		if(Jylx=='Z')
		{
			strcpy(SendBuf,"N");
			p->LogMsg("收到信息有误",0);
		}
		else{
			strcpy(data.SECUACC,myParam.prData.prCol.Array[v_account]);
			strcpy(data.AMT,myParam.prData.prCol.Array[v_je]);
			strcpy(data.BANKACC,myParam.prData.prCol.Array[v_bankacc]);
	
			strcpy(myParam.prData.prCol.Array[v_bankid],p->m_comm.BANKID);	//银行代码
			switch(Jylx){
			case '5':		//银行冲销申请
				p->LogMsg("调用柜台接口AjustTransfer().....",0);
				p->m_Interface->AjustTransfer(&myParam,&myResult);
				p->LogMsg("调用柜台接口AjustTransfer()结束",0);
				if(myResult.iRet>=0)
					strcpy(SendBuf,"Y|");
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case '6':		//开户
				p->LogMsg("调用柜台接口OpenAccount().....",0);
				p->m_Interface->OpenAccount(&myParam,&myResult);
				p->LogMsg("调用柜台接口OpenAccount()结束",0);
				if(myResult.iRet>=0)
					strcpy(SendBuf,"Y|");
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case '7':		//销户
				p->LogMsg("调用柜台接口DeleteAccount().....",0);
				p->m_Interface->DeleteAccount(&myParam,&myResult);
				p->LogMsg("调用柜台接口DeleteAccount()结束",0);
				if(myResult.iRet>=0)
					strcpy(SendBuf,"Y|");
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case '1':		//银行转证券
			case '2':		//证券转银行
				p->LogMsg("调用柜台接口Transfer().....",0);
				p->m_Interface->Transfer(&myParam,&myResult);
				p->LogMsg("调用柜台接口Transfer()结束",0);
				if(myResult.iRet>=0)
				{
					strcpy(SendBuf,"Y|Htxh|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][0]);
					strcat(SendBuf,"|");
				}
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case 'A':	//对帐
				p->LogMsg("调用柜台接口CheckFund().....",0);
				p->m_Interface->CheckFund(&myParam,&myResult);
				p->LogMsg("调用柜台接口CheckFund()结束",0);
				if(myResult.iRet>=0)
				{
					strcpy(SendBuf,"Y|BToS|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][2]);
					strcat(SendBuf,"|BToSJe|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][3]);
					strcat(SendBuf,"|SToB|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][5]);
					strcat(SendBuf,"|SToBJe|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][6]);
					strcat(SendBuf,"|OpenAcc|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][8]);
					strcat(SendBuf,"|DelAcc|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][9]);
					strcat(SendBuf,"|");
				}
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case 'B':	//查询证券余额
				p->LogMsg("调用柜台接口QueryMoney().....",0);
				p->m_Interface->QueryMoney(&myParam,&myResult);
				p->LogMsg("调用柜台接口QueryMoney()结束",0);
				if(myResult.iRet>=0)
				{
					strcpy(SendBuf,"Y|Je|");
					strcat(SendBuf,myResult.retData.rtArray.Array[0][0]);
					strcat(SendBuf,"|");
				}
				else
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				break;
			case 'E':	//明细对帐
				p->LogMsg("调用柜台接口QueryTransferDetail()......",0);
				p->m_Interface->QueryTransferDetail(&myParam,&myResult);
				p->LogMsg("调用柜台接口QueryTransferDetail()结束",0);
				if(myResult.iRet>=0)
				{
					strcpy(SendBuf,"Y|");
				}
				else
				{
					sprintf(SendBuf,"N|RetCode|%d|ErrMsg|%s|",myResult.iRet,myResult.szErrMsg);
				}
				break;
			case 'F':	//校验
				strcpy(SendBuf,"Y|");
				break;
			default:
				strcpy(SendBuf,"N|");
			}
			sprintf(data.RETCODE,"%d",myResult.iRet);
			sprintf(data.NOTE,myResult.szErrMsg);
			p->ShowMSG(&data);
		}
	}
	else

⌨️ 快捷键说明

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