📄 package.cpp.bak
字号:
// package.cpp: implementation of the Cpackage class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "HmComm.h"
#include "package.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Cpackage::Cpackage()
{
memset(cTranCode,0,9);
}
Cpackage::~Cpackage()
{
}
/*==================================================================================
//函数名称: ClearPackStruct
//输入参数: char *cRecvbuf: 返回的字符串
//输出参数: PACKSTRUCT *packstruct:通信数据结构
//返 回: 通信数据结构的长度
//功 能: 数据转换,将本公司自定义包转换成银行需要的数据包。
//开发人员: zhangl
//修改记录: 1. 第一次编写.
====================================================================================*/
int Cpackage::ExchangeSendData(PACKSTRUCT *packstruct, char *cSendbuf, char * cHoldmem)
{
int nDatalen,jydm=0;
int retVal;
char cLen[5];
nDatalen = sizeof(PACKSTRUCT);
retVal = 0;
char tmpStr[80];
memset(tmpStr,0x00,sizeof(tmpStr));
memcpy(tmpStr,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
alltrimSpace(tmpStr);
jydm = atoi(tmpStr);
switch( jydm )
{
case 1001://密码校验请求
retVal=Function_Mmjy( packstruct, cSendbuf );
break;
case 2001://50发卡验证
case 2002://51发卡
case 2003://52换卡验证
case 2004://53换卡
retVal=Function_KKHK( jydm, packstruct, cSendbuf );
break;
//储蓄 国库券信息 代收费信息
//多媒体客户综合 全国通
//卡号 币 种 储 种 笔数号 查询起始日期 */
case 4011://储蓄信息查询
case 4012://储蓄信息查询
case 4013://储蓄信息查询
case 4015://储蓄信息查询
case 4016://储蓄信息查询
case 4018://储蓄信息查询
case 4019://储蓄信息查询
case 4020://储蓄信息查询
retVal=Function_Cxxxcx(jydm,packstruct, cSendbuf );
break;
case 4030://国库券信息
retVal=Function_CxGkq( packstruct, cSendbuf );
break;
case 4040://代收费信息
retVal=Function_CxDsf( packstruct, cSendbuf );
break;
case 4050://综合查询
retVal=Function_CxZhxx( packstruct, cSendbuf );
break;
case 4060://全国通查询
retVal=Function_CxQgt( packstruct, cSendbuf );
break;
case 4100://卡内转帐
retVal=Function_Knzz( packstruct, cSendbuf );
break;
case 4110://卡卡转帐
retVal=Function_Kkzz( packstruct, cSendbuf );
break;
default:
break;
}
return retVal;
}
/*==================================================================================
//函数名称: AppendRecord
//输入参数: char *dbffile: 数据库名称
// char *jydm: 交易代码
// PACKSTRUCT *packstruct: 通信数据结构
// TDBF dbf: 数据库类
//输出参数: 无
//返 回: 无
//功 能: 追加记录。
//开发人员: zhangl
//修改记录: 1. 第一次编写.
====================================================================================*/
void Cpackage::AppendRecord(char *dbffile, char *jydm, PACKSTRUCT *packstruct, TDBF dbf)
{
int datalen, recordlength, recordcount , offset, i ;
char fileName[80], tempStr[80];
memset( fileName, 0x00, sizeof(fileName) );
//GetCurrentDirectory(80,tempStr);
strcpy( fileName, "..\\conf\\dbffile.txt");
memset(tempStr,0x00,sizeof(tempStr));
GetPrivateProfileString(jydm,"total","temp.dbf",tempStr, 80, fileName);
recordlength = atoi( tempStr );
if(recordlength == 0)
return;
memset(tempStr,0x00,sizeof(tempStr));
//packLen must is true!!!!!!!!!!!!!!! zhangl
memcpy(tempStr, packstruct->m_DataLen,sizeof(packstruct->m_DataLen));
//for test zhangl
datalen = atoi(tempStr);
recordcount = datalen/recordlength;
dbf.Open(dbffile, ReadWrite);
offset = MAX_HEAD_LEN;
// AfxMessageBox("Append");
for(i = 0 ; i< recordcount ; i++)
{
memset(tempStr,0x00, sizeof(tempStr));
strcpy(tempStr," ");
memcpy(tempStr+1, packstruct->m_Data+i*recordlength, recordlength);
// AfxMessageBox(tempStr);
dbf.SetRecordBuffer(tempStr);
offset = offset + recordlength;
dbf.AppendRecord();
}
dbf.Close();
}
/*==================================================================================
//函数名称: CreateDbfFile
//输入参数: char *jydm: 交易代码
// char *dbffile: 数据库名称
// TDBF dbf: 数据库类
//输出参数: 无
//返 回: 无
//功 能: 生成数据库表。
//开发人员: zhangl
//修改记录: 1. 第一次编写.
====================================================================================*/
void Cpackage::CreateDbfFile(char *jydm, char *dbffile, TDBF dbf)
{
char fileName[80];
char tempStr[80];
TDBFField field[100];
int total;
int fieldnumber, i;
memset( dbffile, 0, sizeof(dbffile) );
memset( fileName, 0, sizeof( fileName ) );
GetCurrentDirectory(80,tempStr);
strcpy( fileName, "..\\conf\\dbffile.txt");
memset(tempStr,0x00,sizeof(tempStr));
GetPrivateProfileString(jydm,"fileName","temp.dbf",tempStr, 80, fileName);
//strcpy( dbffile,tempStr);
sprintf( dbffile, "..\\dbf\\%s",tempStr);
memset(tempStr,0x00,sizeof(tempStr));
GetPrivateProfileString(jydm,"fieldnumber","1",tempStr, 80, fileName);
fieldnumber = atoi(tempStr);
memset(tempStr,0x00,sizeof(tempStr));
GetPrivateProfileString(jydm,"total","1",tempStr, 80, fileName);
total = atoi(tempStr);
for (i = 0 ; i < fieldnumber; i++)
{
char Str[40];
int j = 0;
memset(Str,0x00,sizeof(Str));
j = i + 1 ;
sprintf(Str,"field%d", j );
strcat(Str,".name");
memset(tempStr, 0x00, sizeof(tempStr));
GetPrivateProfileString(jydm,Str,"1",tempStr, 80, fileName);
strcpy(field[i].Name,tempStr);
memset(Str,0x00,sizeof(Str));
sprintf(Str,"field%d", j );
strcat(Str,".type");
memset(tempStr, 0x00, sizeof(tempStr));
GetPrivateProfileString(jydm,Str,"C",tempStr, 80, fileName);
field[i].Type=tempStr[0];
memset(Str,0x00,sizeof(Str));
sprintf(Str,"field%d", j );
strcat(Str,".width");
memset(tempStr, 0x00, sizeof(tempStr));
GetPrivateProfileString(jydm,Str,"10",tempStr, 80, fileName);
field[i].Width = atoi( tempStr );
memset(Str,0x00,sizeof(Str));
sprintf(Str,"field%d", j );
strcat( Str, ".dec" );
memset(tempStr, 0x00, sizeof(tempStr));
GetPrivateProfileString(jydm,Str,"0",tempStr, 80, fileName);
field[i].Dec = atoi( tempStr );
}
dbf.New(dbffile,field,fieldnumber);
dbf.Close();
}
/*==================================================================================
//函数名称: ClearPackStruct
//输入参数: PACKSTRUCT *packstruct: 通信数据结构
//输出参数: 无
//返 回: 无
//功 能: 清空通信数据结构。
//开发人员: zhangl
//修改记录: 1. 第一次编写.
====================================================================================*/
void Cpackage::ClearPackStruct(int Errcode, PACKSTRUCT *packstruct)
{
char tmpstr[10];
memset(tmpstr,0x00,sizeof(tmpstr));
memset(packstruct,0x00,sizeof(PACKSTRUCT));
sprintf(tmpstr,"%-4.4s",Errcode);
memcpy(packstruct->m_Fhdm,"9000",sizeof(packstruct->m_Fhdm));
}
/*==================================================================================
//函数名称: ClearPackStruct
//输入参数: char *cRecvbuf: 返回的字符串
//输出参数: PACKSTRUCT *packstruct:通信数据结构
//返 回: 通信数据结构的长度
//功 能: 数据转换,将银行返回的数据包转换成本公司自定义包。
//开发人员: zhangl
//修改记录: 1. 第一次编写.
====================================================================================*/
int Cpackage::ExchangeRecvData(PACKSTRUCT *packstruct, char *cRecvbuf, char * cHoldmem)
{
int nDatalen,retVal;
int nCode;
char tmp[800];//add zhangl for test
int iLen;//add zhangl for test
memset(tmp,0x00,sizeof(tmp));
memcpy(tmp,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
nCode = atoi(tmp);
switch( nCode )
{
case 1001://密码校验请求
retVal=Function_Mmjy_ans( nCode, packstruct, cRecvbuf );
break;
//储蓄 国库券信息 代收费信息
//多媒体客户综合 全国通
case 4011://储蓄信息查询
case 4012://储蓄信息查询
case 4013://储蓄信息查询
case 4015://储蓄信息查询
case 4016://储蓄信息查询
case 4018://储蓄信息查询
case 4019://储蓄信息查询
case 4020://储蓄信息查询
retVal=Function_Cxxxcx_ans( nCode, packstruct, cRecvbuf );
break;
case 4030://国库券信息
retVal=Function_CxGkq_ans( nCode, packstruct, cRecvbuf );
break;
case 4040://代收费信息
retVal=Function_CxDsf_ans( nCode, packstruct, cRecvbuf );
break;
case 4050://客户综合
retVal=Function_CxZhxx_ans( nCode, packstruct, cRecvbuf );
break;
case 4060://全国通
retVal=Function_CxQgt_ans( nCode, packstruct, cRecvbuf );
break;
case 4100://卡内转帐
retVal=Function_Knzz_ans( nCode, packstruct, cRecvbuf );
break;
case 4110://卡卡转帐
retVal=Function_Kkzz_ans( nCode, packstruct, cRecvbuf );
break;
default:
break;
}
bEndFlag = TRUE;
return nDatalen;
}
//储蓄信息信息查询请求
int Cpackage::Function_Cxxxcx(int jydm, PACKSTRUCT *packstruct, char *cSendbuf)
{
/*
card_no
币 种
储 种
笔数号
查询起始日期YYYYMMDD
*/
char tmpStr[ 200 ], tmpstr[ 200 ], Buff[ 20 ], dateBuf[ 20 ];
int RetValue=0;
information_request Str_info_request;
memset( &Str_info_request, 0x00, sizeof(information_request) );
memset( tmpStr, 0x00, sizeof(tmpStr) );
memset( tmpstr, 0x00, sizeof(tmpstr) );
//信息查询请求
//02 - 信息查询 jylx[2];
memcpy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
//多媒体查询 设备编号 3
memset(tmpStr,0x00,sizeof(tmpStr));
memcpy(tmpStr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
alltrimSpace(tmpStr);
memcpy(Str_info_request.pprno,tmpStr,sizeof(Str_info_request.pprno));
// WriteParseLog(__FILE__,__LINE__,"%s , %s=[%s]","信息查询请求模块","设备编号",tmpStr);
//处理号 3 ????????????????????
//memset(tmpstr,0x00,sizeof(tmpstr));
//mwmcpy(tmpstr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
//alltrimSpace(tmpstr);
memcpy(Str_info_request.pprclh,"000",sizeof(Str_info_request.pprclh));
//card_no 16
memset(tmpStr,0x00,sizeof(tmpstr));
GetValue( packstruct->m_Data, tmpStr, 1, 0x01 );
alltrimSpace(tmpStr);
memcpy(Str_info_request.card_no,tmpStr,sizeof(Str_info_request.card_no));
WriteParseLog(__FILE__,__LINE__,"%s , %s=[%s]","信息查询请求模块","card_no",tmpStr);
//币 种 2
if((jydm == 4018)||(jydm == 4019))
{
memset(tmpStr,0x00,sizeof(tmpstr));
GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
alltrimSpace(tmpStr);
memcpy(Str_info_request.bz,tmpStr,sizeof(Str_info_request.bz));
}
else
{
memcpy(Str_info_request.bz,"01",sizeof(Str_info_request.bz));
}
WriteParseLog(__FILE__,__LINE__,"%s , %s=[%s]","信息查询请求模块","bz",Str_info_request.bz);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -