📄 transview.cpp
字号:
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 + -