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

📄 cms034.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** **   源码文件名称 : cms034.SQC **   所属子系统   : CMS  **   当前文件版本 : 4.0.0.0 **   作者         : guoyun **   版本创建日期 : 2004/10/25 **   功能描述     : 无折卡换有折卡处理子交易 **   修改记录     : **   修改人       修改日期     修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmsacctm.h"#include "cmscardkind.h"#include "dpssaveprdinfo.h"EXEC SQL INCLUDE SQLCA;int cmsChgNoBookToCardPro( PUBCOM *pstPubcom ){	/*定义局部变量*/	int		iRtn;									/* 函数返回值		*/    int     iNumx;                          		/* 数组计数器       */    int     iNumy;                          		/* 数组计数器       */    char    acCardStat[ BIT21_LEN ][BIT11_LEN];		/* 卡状态检查标志   */    char    acCheckFlag[ BIT8_LEN + 1 ];            /* 检查卡片种类标志 */	struct	cmscardinfo			stCmsCardInfo;		/* 卡片信息表		*/    struct  cmsacctm            stCmsAcctM;         /* 卡帐户对照表     */	struct	dpssaveprdinfo		stDpsSavePrd;		/* 活期产品信息		*/    struct  cmscardkind         stCmsCardKind;      /* 卡片种类表       */	char	acCardNo[ CARDNO_LEN + 1 ];				/* 卡号  			*/	char	acPasswd[ PASSWD_LEN+1 ];				/* 密码				*/	char	acPasswd1[ PASSWD_LEN+1 ];				/* 存折密码			*/	char	acPasswd2[ PASSWD_LEN+1 ];				/* 存折密码			*/	char	acAcctNo[ ACCT_LEN + 1 ];				/* 存折账号			*/	char	acSubAcct[ ACCTT_LEN + 1 ];				/* 款项代码			*/	char	acVouKind[ VOUKIND_LEN + 1 ];			/* 凭证种类			*/	char	acVouNo[ VOUNO_LEN + 1 ];				/* 凭证号码			*/	char	acPreCharCode[ PRECHARCODE_LEN + 1 ];	/* 冠字号码			*/	char	acDrwType[ WTHCODE_LEN + 1 ];			/* 支取方式			*/	char	acSealNo[ SEALNO_LEN + 1 ];				/* 印鉴卡号			*/	char	acIdType[ IDTYPE_LEN + 1 ];				/* 证件类型			*/	char	acIdNo[ IDNO_LEN + 1 ];					/* 证件号码			*/	char	acVouKind1[ VOUKIND_LEN + 1 ];			/* 凭证种类标准		*/	strcpy( g_acTrcMsg, "子交易: 无折卡换有折卡处理子交易开始.." );	TRCLOG4	/* 初始化 */	memset( &stCmsCardInfo,		0x00,	sizeof( struct cmscardinfo ) );    memset( &stCmsAcctM,        0x00,   sizeof( struct cmsacctm ) );    memset( &stCmsCardKind,     0x00,   sizeof( struct cmscardkind ) );	memset( acCardNo,			0x00,	sizeof( acCardNo ) );	memset( acCardStat,			0x00,	sizeof( acCardStat ) );    memset( acCheckFlag,        0x00,   sizeof( acCheckFlag ) );	memset( acPasswd,			0x00,	sizeof( acPasswd ) );	memset( acAcctNo,			0x00,	sizeof( acAcctNo ) );	memset( acSubAcct,			0x00,	sizeof( acSubAcct ) );	memset( acPasswd1,			0x00,	sizeof( acPasswd1 ) );	memset( acPasswd2,			0x00,	sizeof( acPasswd2 ) );	memset( acDrwType,			0x00,	sizeof( acDrwType ) );	memset( acSealNo,			0x00,	sizeof( acSealNo ) );	memset( acVouNo,			0x00,	sizeof( acVouNo ) );	memset( acVouKind,			0x00,	sizeof( acVouKind ) );	memset( acPreCharCode,		0x00,	sizeof( acPreCharCode ) );	memset( acIdNo,				0x00,	sizeof( acIdNo ) );	memset( acIdType,			0x00,	sizeof( acIdType ) );	memset( acVouKind1,			0x00,	sizeof( acVouKind1 ) );	/* 取数据字典值 */	getstring( "CardNo",		acCardNo		);    getstring( "AcctNo",		acAcctNo		);    getstring( "SubAcct",		acSubAcct		);    getstring( "DrwType",		acDrwType		);    getstring( "IdNo1",			acIdNo			);    getstring( "IdType1",		acIdType		);    getstring( "SealNo",		acSealNo		);    getstring( "Passwd",		acPasswd		);    getstring( "Passwd1",		acPasswd1		);    getstring( "VouKind",		acVouKind		);    getstring( "VouNo",			acVouNo			);    getstring( "PreCharCode",	acPreCharCode	);		/* 获取卡片信息 */	strcpy( stCmsCardInfo.cardno, acCardNo);	iRtn = pubReadCmscardinfo( &stCmsCardInfo );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )			sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno );		ERRLOG		return FAILED;	}    /* 卡检查状态数组中第一维中的第一个字符全置为'1',则检查卡片状态是否正常 */    for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ )        for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ )        {            if ( iNumy == 0 )                acCardStat[iNumx][iNumy] = CHECK_YES;            else                acCardStat[iNumx][iNumy] = CHECK_NO;        }    acCardStat[BIT15_LEN][BIT2_LEN] = CHECK_YES;    /* 检查卡状态是否正常 */    iRtn = cmsApiChkCardStatIsNormal( &stCmsCardInfo, acCardStat );    if ( iRtn )    {        ERRLOG        return FAILED;    }	/* 检查卡是否为个人卡API, 不是个人卡返回错误*/	iRtn = cmsApiChkIsPersonCard( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		return FAILED;	}    /* 检查卡号是否为主卡,不是主卡返回错误 */    iRtn = cmsApiChkCardNoIsMain( &stCmsCardInfo );    if ( iRtn )    {        ERRLOG        return FAILED;    }    /* 获取卡片种类表 */    iRtn = cmsApiGetCmsCardKind( stCmsCardInfo.cardkind, &stCmsCardKind );    if ( iRtn )    {        ERRLOG        return FAILED;    }	/* 检查卡密码 */	iRtn = cmsApiChkCardPwd( &stCmsCardInfo, acPasswd, pstPubcom->acChannelId );	if ( iRtn )	{		ERRLOG		return FAILED;	}    /* 检查卡片种类(全部属性)API是否为启用标志、检查卡种交易类型、检查业务发生地    */    acCheckFlag[ BIT1_LEN ] = CHECK_YES;        /* 检查启用标志         */    acCheckFlag[ BIT2_LEN ] = CHECK_YES;        /* 检查卡种交易类型     */    acCheckFlag[ BIT3_LEN ] = CHECK_YES;        /* 检查业务发生地       */    acCheckFlag[ BIT4_LEN ] = CHECK_NO;         /* 检查发卡对象 单/个   */    acCheckFlag[ BIT5_LEN ] = CHECK_NO;         /* 检查记名标志         */    acCheckFlag[ BIT6_LEN ] = CHECK_NO;         /* 不检查挂失标志       */    iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGOTHER, pstPubcom->acChannelId, PERSONALCARD, REGNAMECARD, CZEROS, "" );    if ( iRtn )    {        ERRLOG        return FAILED;    }	/* 检查卡内是否存在主帐户外的账户 	iRtn = cmsApiChkCardNoHasOtherAcct( stCmsCardInfo.cardno );    if ( iRtn )    {		strcpy( g_acRspCode, "CMS1C7" );		pubCrtRspInfo( stCmsCardInfo.cardno );        ERRLOG        return FAILED;    }	*/	/* 检查卡是否为无折卡 */	if ( stCmsCardInfo.hasbankbook[ BIT1_LEN ] == BANKBOOK )	{		strcpy( g_acRspCode, "CMS1C6" );		pubCrtRspInfo( stCmsCardInfo.cardno );		ERRLOG		return FAILED;	}	/* 检查卡是否为非专用卡 */	if ( stCmsCardInfo.cardattr[ BIT1_LEN ] == BURNCARD 			|| stCmsCardInfo.cardattr[ BIT1_LEN ] == LAKECARD )	{		strcpy( g_acRspCode, "CMS1E1" );		pubCrtRspInfo( stCmsCardInfo.cardno );		ERRLOG		return FAILED;	}    /* 获取卡帐户信息 */    strcpy( stCmsAcctM.cardno,		acCardNo);    strcpy( stCmsAcctM.acctseqno,	stCmsCardInfo.acctseqno );    iRtn = pubReadCmsacctm( &stCmsAcctM );    if ( iRtn )    {        ERRLOG        return FAILED;    }    /* 检查卡内账户是否捆绑折 */	if ( stCmsAcctM.cardbookflag[ BIT1_LEN ] == ACCOPENFLG_BOOK )	{		strcpy( g_acRspCode, "CMS1C8" );		pubCrtRspInfo( stCmsAcctM.acctno );		ERRLOG		return FAILED;	}    stCmsCardInfo.hasbankbook[0] = BANKBOOK;    strcpy( stCmsCardInfo.chgdate, pstPubcom->acTranDate );    iRtn = pubModiCmscardinfo( &stCmsCardInfo );    if ( iRtn )    {        ERRLOG        return FAILED;    }    stCmsAcctM.cardbookflag[0] = ACCOPENFLG_BOOK;    iRtn = pubModiCmsacctm( &stCmsAcctM );    if ( iRtn )    {        ERRLOG        return FAILED;    }	/* 检查移出凭证 */	memset( &stDpsSavePrd, 0x00, sizeof( struct dpssaveprdinfo ) );	strcpy( stDpsSavePrd.prdcode,	stCmsAcctM.prdcod );	iRtn = pubReadDpssaveprdinfo( &stDpsSavePrd );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strncpy( acVouKind1, stDpsSavePrd.opnvoukind, VOUKIND_LEN );	acVouKind1[VOUKIND_LEN]='\0';	if ( strcmp( acVouKind, acVouKind1 ) )	{		strcpy( g_acRspCode, "CMS1D8" );		pubCrtRspInfo( acVouKind, acVouKind1 );		ERRLOG		return FAILED;	}	/* 密码处理 --> stCmsCardInfo.passwd */	sprintf( g_acTrcMsg, "passwd[%s]",acPasswd1);	TRCLOG3	/*	if ( OverPINBLOCK( acPasswd1, acAcctNo, acPasswd2 ))	{		ERRLOG		return FAILED;	}	*/	/* 调用存款API 处理卡补折 */	iRtn = dpsCarAddBooStaOper( pstPubcom, acAcctNo, acPreCharCode, acVouKind, \				acVouNo, acDrwType, acSealNo, acIdType, acIdNo, acPasswd1 );	if ( iRtn )	{        ERRLOG        return FAILED;	}	/* 子交易出口 */ 	iRtn = cmsApiInsTranLog( pstPubcom, &stCmsCardInfo, &stCmsAcctM, "换卡", "无折卡换有折卡" );	if ( iRtn )	{		ERRLOG		return FAILED;	}		strcpy( g_acTrcMsg, "子交易: 无折卡换有折卡处理子交易结束.." );	TRCLOG4	strcpy( g_acRspCode,  RSP_OK );	return SUCCESS;}

⌨️ 快捷键说明

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