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

📄 cms303.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 2 页
字号:
/******************************************************************** **   源码文件名称 : cms303.SQC **   所属子系统   : CMS  **   当前文件版本 : 4.0.0.0 **   作者         : Feng **   版本创建日期 : 2004/09/21 **   功能描述     : 主卡发卡(只关联不开户)子交易 **   修改记录     : **   修改人       修改日期     修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmscardkind.h"#include "cmsacctm.h"#include "dpssaveaccdyninfo.h"#include "ciscustaccinfo.h"EXEC SQL INCLUDE SQLCA;int cmsOpenMainCardProTwo( PUBCOM *pstPubcom ){	/*定义局部变量*/	struct	cmscardinfo			stCmsCardInfo;		/* 卡片信息表		*/	struct	cmscardkind			stCmsCardKind;		/* 卡片种类表		*/	int		iRtn;							/* 函数返回值		*/	char	acPasswd[ PASSWD_LEN ];			/* 密码				*/	char	acCardAttr[ FLAG_LEN+1 ];		/* 卡属性	长度2	*/	char	acCardObject[ FLAG_LEN+1 ];		/* 发卡对象	长度2	*/	char	acCardFlg[ FLAG_LEN+1 ];		/* 卡标志	长度2	*/	char	acMarkFlg[ FLAG_LEN + 1 ];		/* 记名卡/非记名卡标志	*/	char	acCheckFlag[ BIT8_LEN + 1 ];	/* 检查卡片种类标志	*/	char	acCustomId[ CUSTNO_LEN + 1 ];	/* 客户号码			*/	char	acAcctNo[ ACCT_LEN + 1 ];		/* 客户账号		*/	char	acAcctNo1[ ACCT_LEN + 1 ];		/* 客户账号1	*/	char	acAcctNo2[ ACCT_LEN + 1 ];		/* 客户账号2	*/	char	acAcctNo3[ ACCT_LEN + 1 ];		/* 客户账号3	*/	char	acSubAcct[ ACCT_LEN + 1 ];		/* 款项账号		*/	char	acSubAcct1[ ACCT_LEN + 1 ];		/* 款项账号1	*/	char	acSubAcct2[ ACCT_LEN + 1 ];		/* 款项账号2	*/	char	acSubAcct3[ ACCT_LEN + 1 ];		/* 款项账号3	*/	char	acCcy[ CCY_LEN + 1 ];			/* 币种			*/	char	acPrdCode[ PRDCODE_LEN + 1 ];	/* 产品代码		*/	char	acAcctSeqNo[ ACCTSEQNO_LEN+1 ];	/* 帐户序号		*/	strcpy( g_acRspCode,  RSP_OK );	strcpy( g_acTrcMsg, "子交易: 主卡发卡处理开始.." );	TRCLOG4	/* 初始化 */	memset( &stCmsCardInfo,		0x00,	sizeof( struct cmscardinfo ) );	memset( &stCmsCardKind,		0x00,	sizeof( struct cmscardkind ) );	memset( acPasswd,			0x00,	sizeof( acPasswd ) );	memset( acCardFlg,			0x00,	sizeof( acCardFlg ) );	memset( acCardAttr,			0x00,	sizeof( acCardAttr ) );	memset( acCardObject,		0x00,	sizeof( acCardObject ) );	memset( acMarkFlg,			0x00,	sizeof( acMarkFlg ) );	memset( acCheckFlag,		0x00,	sizeof( acCheckFlag ) );	memset( acCustomId,			0x00,	sizeof( acCustomId ) );	memset( acCcy,				0x00,	sizeof( acCcy ) );	memset( acPrdCode,			0x00,	sizeof( acPrdCode ) );	memset( acAcctSeqNo,		0x00,	sizeof( acAcctSeqNo ) );	memset( acAcctNo,			0x00,	sizeof( acAcctNo ) );	memset( acAcctNo1,			0x00,	sizeof( acAcctNo1 ) );	memset( acAcctNo2,			0x00,	sizeof( acAcctNo2 ) );	memset( acAcctNo3,			0x00,	sizeof( acAcctNo3 ) );	memset( acSubAcct,			0x00,	sizeof( acSubAcct ) );	memset( acSubAcct1,			0x00,	sizeof( acSubAcct1 ) );	memset( acSubAcct2,			0x00,	sizeof( acSubAcct2 ) );	memset( acSubAcct3,			0x00,	sizeof( acSubAcct3 ) );	/* 取数据字典值 */	getstring( "CardKind",		stCmsCardKind.cardkind	);	getstring( "CardNo",		stCmsCardInfo.cardno	);	sprintf( g_acTrcMsg, "CardNo=[%s]CardKind=[%s]",					stCmsCardInfo.cardno, stCmsCardKind.cardkind );	TRCLOG3	/* 从字典获取其他字段 */	getstring( "Passwd",		acPasswd			);	getstring( "CustomId",		acCustomId			);	getstring( "CardObject",	acCardObject		);	getstring( "CardAttr",		acCardAttr			);	getstring( "CardFlg",		acCardFlg			);	getstring( "MarkFlg",		acMarkFlg			);	getstring( "AcctNo",		acAcctNo			);	getstring( "AcctNo3",		acAcctNo3			);	getstring( "AcctNo2",		acAcctNo2			);	getstring( "AcctNo1",		acAcctNo1			);	getstring( "SubAcct",		acSubAcct			);	getstring( "SubAcct3",		acSubAcct3			);	getstring( "SubAcct2",		acSubAcct2			);	getstring( "SubAcct1",		acSubAcct1			);	sprintf( g_acTrcMsg, "CustomId=[%s]", acCustomId );	TRCLOG3	sprintf( g_acTrcMsg,"CardObject=[%s]CardAttr=[%s]",acCardObject,acCardAttr);	TRCLOG3	sprintf( g_acTrcMsg, "CardFlg=[%s]MarkFlg=[%s]", acCardFlg,acMarkFlg );	TRCLOG3	sprintf( g_acTrcMsg, "AcctNo=[%s]AcctNo1=[%s]", acAcctNo, acAcctNo1 );	TRCLOG3	sprintf( g_acTrcMsg, "AcctNo2=[%s]AcctNo3=[%s]", acAcctNo2, acAcctNo3 );	TRCLOG3	sprintf( g_acTrcMsg, "SubAcct=[%s]SubAcct1=[%s]", acSubAcct, acSubAcct1 );	TRCLOG3	sprintf( g_acTrcMsg, "SubAcct2=[%s]SubAcct3=[%s]", acSubAcct2, acSubAcct3 );	TRCLOG3	acCardFlg[ BIT1_LEN ] = MAIN_CARD;		/* 获取卡片种类表 */ 	iRtn = pubReadCmscardkind( &stCmsCardKind );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )			sprintf( g_acRspMsg, "卡片种类[%s]不存在", stCmsCardKind.cardkind );		ERRLOG		goto Exit;	}	strcpy( g_acTrcMsg, "pubReadCmscardkind finish" );	TRCLOG3	/* 获取卡片信息并锁住记录 */	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	DECLARE Inf_l_cur CURSOR FOR 				SELECT * FROM CMSCARDINFO				WHERE cardno = :cmscardinfo_cardno				FOR UPDATE;	SQLOPENCUR(Inf_l_cur,"Inf_l_cur")	/* 打开游标错误 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		goto Exit;	}	pubInitCmscardinfo();	EXEC SQL	FETCH Inf_l_cur INTO R_CMSCARDINFO ;	/* 取游标错误 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		goto Exit;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno );		ERRLOG		goto Exit;	}	pubVtoSCmscardinfo( &stCmsCardInfo );	/* 密码处理 --> stCmsCardInfo.passwd */	sprintf( g_acTrcMsg, "passwd[%s]DB[%s]",acPasswd,stCmsCardInfo.passwd);	TRCLOG3	if ( OverPINBLOCK( acPasswd, stCmsCardInfo.cardno, stCmsCardInfo.passwd ))	{		ERRLOG		goto Exit;	}	/* 检查卡片信息中卡片种类和输入的卡片种类是否一致 */	iRtn = cmsApiChkIsSameCardKind( stCmsCardKind.cardkind, \									stCmsCardInfo.cardkind );	if ( iRtn )	{		ERRLOG		goto Exit;	}	strcpy( g_acTrcMsg, "cmsApiChkIsSameCardKind finish" );	TRCLOG3	/* 检查卡片种类(全部属性)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, LOGOPENACC, \	pstPubcom->acChannelId, acCardObject[ BIT1_LEN ], CZEROS, CZEROS, "" );	if ( iRtn )	{		ERRLOG		goto Exit;	}	strcpy( g_acTrcMsg, "cmsApiChkCardKind finish" );	TRCLOG3	/* 检查客户持卡数量是否超限并累计客户持卡数量 */	iRtn = 	cmsApiChkCustCardNumLimit( acCustomId,	\						&stCmsCardKind,	acCardFlg[BIT1_LEN], FLAG_NORMAL );	if ( iRtn )	{		ERRLOG		goto Exit;	}	strcpy( g_acTrcMsg, "cmsApiChkCustCardNumLimit finish" );	TRCLOG3	/* 检查卡号是否为主卡 */    if ( stCmsCardKind.cardflg[ BIT1_LEN ] != ALL_CARD )    {        if ( stCmsCardKind.cardflg[ BIT1_LEN ] != acCardFlg[0] )        {            strcpy( g_acRspCode, "CMS1B4" );            pubCrtRspInfo( stCmsCardKind.cardkind );            ERRLOG			goto Exit;        }    }	/* 检查卡号是否为记名卡非记名卡 */    if ( stCmsCardKind.markflg[ BIT1_LEN ] != ALLREGCARD )    {        if ( stCmsCardKind.markflg[ BIT1_LEN ] != stCmsCardInfo.markflg[0] )        {            strcpy( g_acRspCode, "CMS1B4" );            pubCrtRspInfo( stCmsCardKind.cardkind );            ERRLOG			goto Exit;        }    }	/* 检查卡状态是否为待领卡状态 API*/	iRtn = cmsApiChkCardStatIsReadyOpen( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		goto Exit;	}	strcpy( g_acTrcMsg, "cmsApiChkCardStatIsReadyOpen finish" );	TRCLOG3	/* 单位卡的检查 */	if ( acCardObject[ BIT1_LEN ] == UNITCARD )	{		/* 检查卡是否为单位卡 API*/		iRtn = cmsApiChkIsUnitCard( &stCmsCardInfo );		if ( iRtn )		{			ERRLOG			goto Exit;		}		strcpy( g_acTrcMsg, "cmsApiChkIsUnitCard finish" );		TRCLOG3	}	/* 个人卡检查 */	else if ( acCardObject[ BIT1_LEN ] == PERSONALCARD )	{		/* 检查卡是否为个人卡 API*/		iRtn = cmsApiChkIsPersonCard( &stCmsCardInfo );		if ( iRtn )		{			ERRLOG			goto Exit;		}		strcpy( g_acTrcMsg, "cmsApiChkIsPersonCard finish" );		TRCLOG3	}

⌨️ 快捷键说明

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