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

📄 cmsmang.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 4 页
字号:
	memset( &stCmsCardKind,	0x00,	sizeof( struct cmscardkind ) );	memset( &stCmsAcctM,	0x00,	sizeof( struct cmsacctm ) );	memset( &stCisInfo,		0x00,	sizeof( struct ciscustomerinfo ) );	memset( acCheckFlag,	0x00,	sizeof( acCheckFlag ) );	memset( acTranType,		0x00,	sizeof( acTranType ) );	memset( acFlag4,		0x00,	sizeof( acFlag4 ) );	acCardFlg[ BIT1_LEN ] = MAIN_CARD;	acTranType[ BIT1_LEN ] = pcOpnMode[ BIT1_LEN ];	acFlag4[ BIT1_LEN ] = '1';		strcpy( g_acTrcMsg, "pubReadCmscardkind begin" );	TRCLOG1	/* 获取卡片种类表 */ 	strcpy( stCmsCardKind.cardkind, pcCardKind );	iRtn = pubReadCmscardkind( &stCmsCardKind );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strcpy( g_acTrcMsg, "pubReadCmscardkind finish" );	TRCLOG1	/* 获取客户基本信息 */	strcpy( stCisInfo.customid,	pcCustomId );	iRtn = pubReadCiscustomerinfo( &stCisInfo ) ;	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 获取卡片信息 */	/* 将维一索引数据赋给结构 */	strcpy( stCmsCardInfo.cardno,		pcCardNo );	/* 从卡片信息表获取纪录并锁住纪录 */	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	DECLARE cinfo_cur CURSOR FOR 				SELECT * FROM CMSCARDINFO				WHERE cardno = :cmscardinfo_cardno				FOR UPDATE;	/* 定义游标出错     if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	} */	SQLOPENCUR(cinfo_cur,"cinfo_cur")	/* 打开游表出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	} 	pubInitCmscardinfo();	EXEC SQL	FETCH cinfo_cur INTO R_CMSCARDINFO ;	/* 取游表出错 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	pubVtoSCmscardinfo( &stCmsCardInfo );	/* 检查卡片信息中卡片种类和输入的卡片种类是否一致 */	iRtn = cmsApiChkIsSameCardKind( stCmsCardKind.cardkind, \									stCmsCardInfo.cardkind );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	/* 检查卡片种类(全部属性)API 是否为单位/个人卡、启用标志、交易类型	*/	acCheckFlag[ BIT1_LEN ] = CHECK_YES;		/* 检查启用标志			*/	acCheckFlag[ BIT2_LEN ] = CHECK_YES;		/* 检查卡种交易类型		*/	acCheckFlag[ BIT3_LEN ] = CHECK_YES;		/* 检查业务发生地		*/	acCheckFlag[ BIT4_LEN ] = CHECK_YES;		/* 检查发卡对象 单/个	*/	acCheckFlag[ BIT5_LEN ] = CHECK_NO;			/* 检查记名标志			*/	acCheckFlag[ BIT6_LEN ] = CHECK_NO;			/* 检查挂失标志			*/	iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGOPENACC, \			pstPubcom->acChannelId, PERSONALCARD, CZEROS, CZEROS, "" );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkCardKind finish" );	TRCLOG1	/* 检查客户持卡数量是否超限并累计客户持卡数量 */	iRtn = 	cmsApiChkCustCardNumLimit( pcCustomId,	\						&stCmsCardKind,	acCardFlg[BIT1_LEN], FLAG_NORMAL );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkCustCardNumLimit finish" );	TRCLOG1	/* 检查卡号是否为主卡 */	/*	iRtn = cmsApiChkCardNoIsMain( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkCardNoIsMain finish" );	TRCLOG1	*/	/* 检查卡号是否为非记名卡 */	iRtn = cmsApiChkIsUnnameCard( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkIsUnnameCard finish" );	TRCLOG1	/* 检查卡状态是否为待领卡状态 API*/	iRtn = cmsApiChkCardStatIsReadyOpen( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkCardStatIsReadyOpen finish" );	TRCLOG1	/* 检查卡是否为个人卡 API*/	iRtn = cmsApiChkIsPersonCard( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkIsPersonCard finish" );	TRCLOG1	/* 检查币种是否为卡主帐户币种 API*/	iRtn = cmsApiChkIsSameCCY( &stCmsCardKind, pcCcy );	if ( iRtn )	{		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkIsSameCCY finish" );	TRCLOG1	/* 为修改卡片信息表做赋值准备 */	strcpy( stCmsCardInfo.acctno,			pcAcctNo	);	strcpy( stCmsCardInfo.subacct,			pcSubAcct	);	strcpy( stCmsCardInfo.acctseqno,		pcAcctSeqNo );	strcpy( stCmsCardInfo.issuebrc,			pstPubcom->acBrc		);	strcpy( stCmsCardInfo.teller,			pstPubcom->acTeller		);	strcpy( stCmsCardInfo.custno,			pcCustomId	);	if ( GenDBPINBLK( stCmsCardInfo.cardno, pcPasswd, stCmsCardInfo.passwd ))	{		strcpy( g_acRspCode, "CMS1E2" );		pubCrtRspInfo( );		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	sprintf( g_acTrcMsg, "Passwd[%s]密文[%s]", pcPasswd, stCmsCardInfo.passwd );	TRCLOG2	strcpy( stCmsCardInfo.cardsrc,			pcUnitCode	);	strcpy( stCmsCardInfo.maincardno,		stCmsCardInfo.cardno	);	strcpy( stCmsCardInfo.usedate,			pstPubcom->acTranDate	);	strcpy( stCmsCardInfo.chgdate,			pstPubcom->acTranDate	);	stCmsCardInfo.serverlevel = stCisInfo.serverlevel;	stCmsCardInfo.cardflg[ BIT1_LEN ] = MAIN_CARD;	stCmsCardInfo.crdsts[ BIT1_LEN ] = CARDOKSTS;	stCmsCardInfo.cardstat[ BIT7_LEN ] = BIT7_PWINIT;	stCmsCardInfo.errnum = 0;	stCmsCardInfo.errnumtot = 0;	stCmsCardInfo.acdcnt = 0;	stCmsCardInfo.acdlmt = 0.0;	stCmsCardInfo.acduseamt = 0.0;	stCmsCardInfo.empflg[ BIT1_LEN ] = COMMONCARD;	stCmsCardInfo.yfeeflag[ BIT1_LEN ] = NOTAKEFEE;	stCmsCardInfo.yfee = 0.0;	stCmsCardInfo.yfeebal = 0.0;	stCmsCardInfo.madfeeflag[ BIT1_LEN ] = NOMADFEE;	stCmsCardInfo.currbal = 0.0;	stCmsCardInfo.availbal = 0.0;    stCmsCardInfo.billway[0] = '0';	stCmsCardInfo.billaddtype[0] = '0';	if ( pcOpnMode[ BIT1_LEN ] == HASBOOK_OPEN ) /* 有折发卡 */	{		/* 开卡获取卡内新的账户序号 */		iRtn = cmsApiGetSeqNoInCard( stCmsCardInfo.cardno, \									stCmsCardInfo.acctseqno );		if ( iRtn )		{			ERRLOG			SQLCLOSECUR(cinfo_cur,"cinfo_cur")			return FAILED;		}		stCmsCardInfo.hasbankbook[ BIT1_LEN ] = BANKBOOK;		/* 为增加卡账户对照表准备数据 */		strcpy( stCmsAcctM.cardno,		stCmsCardInfo.cardno		);		strcpy( stCmsAcctM.acctseqno,	stCmsCardInfo.acctseqno		);		strcpy( stCmsAcctM.prdcod,		stCmsCardKind.prdcod		);		/* 按产品代码获取业务种类 */		iRtn=cmsApiGetBussKindByPrdCod( stCmsAcctM.prdcod,stCmsAcctM.busskind );		if ( iRtn )		{			ERRLOG			SQLCLOSECUR(cinfo_cur,"cinfo_cur")			return FAILED;		}		strcpy( stCmsAcctM.acctno,		stCmsCardInfo.acctno		);		strcpy( stCmsAcctM.subacct,		stCmsCardInfo.subacct		);		strcpy( stCmsAcctM.custno,		stCmsCardInfo.custno		);		strcpy( stCmsAcctM.subsys,		STR_DPS						);		strcpy( stCmsAcctM.issuebrc,	pstPubcom->acBrc			);		strcpy( stCmsAcctM.issueteller,	pstPubcom->acTeller			);		strcpy( stCmsAcctM.issuedate,	pstPubcom->acTranDate		);		stCmsAcctM.accowner[ BIT1_LEN ] = BELONGMAINCARD;	/* 属于主卡		*/		stCmsAcctM.cardbookflag[ BIT1_LEN ] = ACCOPENFLG_BOOK;	/* 有折		*/		stCmsAcctM.status[ BIT1_LEN ] = NORMAL_STS;			/* 正常			*/		/* 插入卡账户对照表 */		iRtn = pubInstCmsacctm( &stCmsAcctM );		if ( iRtn )		{			ERRLOG			SQLCLOSECUR(cinfo_cur,"cinfo_cur")			return FAILED;		}	}	else	{		stCmsCardInfo.hasbankbook[ BIT1_LEN ] = NOBANKBOOK;		strcpy( stCmsAcctM.cardno,		stCmsCardInfo.cardno		);		strcpy( stCmsAcctM.acctseqno,	stCmsCardInfo.acctseqno		);		/* 获取卡账户对照表 */		iRtn = pubReadCmsacctm( &stCmsAcctM );		if ( iRtn )		{			ERRLOG			SQLCLOSECUR(cinfo_cur,"cinfo_cur")			return FAILED;		}	}	/* 修改卡片信息标记录 */	pubInitCmscardinfo();	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET		( U_CMSCARDINFO ) = ( W_CMSCARDINFO )				WHERE	CURRENT OF cinfo_cur;	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		/* 数据库更新错误 */		pubCrtRspInfo( "cmscardinfo",SQLCODE );		ERRLOG		SQLCLOSECUR(cinfo_cur,"cinfo_cur")		return FAILED;	}	SQLCLOSECUR(cinfo_cur,"cinfo_cur")	strcpy( g_acTrcMsg, "修改卡片信息结束" );	TRCLOG1	/* 是否写子交易流水 */	memset( acMemo, 0x00, sizeof( acMemo ) );	memset( acSubTranCode, 0x00, sizeof( acSubTranCode ) );	strcpy( acSubTranCode, pstPubcom->acSubTranCode );	strcpy( pstPubcom->acSubTranCode, "cms301" );	sprintf( acMemo, "%c%c", acTranType[ BIT1_LEN ], acFlag4[ BIT1_LEN ] );	iRtn = cmsApiInsTranLog( pstPubcom, &stCmsCardInfo, &stCmsAcctM, "开卡",								acMemo );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strcpy( pstPubcom->acSubTranCode, acSubTranCode );	/* 登记账号索引表 */	iRtn = pubRegAcctNoIdx( stCmsCardInfo.cardno, STR_CMS );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strcpy( g_acTrcMsg, "Api: cmsApiOpenCard处理结束.." );	TRCLOG2	return SUCCESS;}/******************************************************* **	  函数名称:cmsApiOpenCardGetCardNo **   功能描述:开卡获取卡号 **   输入参数: **             pstPubCom       ----    公共PUBCOM **   			pcVouNo			----	卡凭证号 **   			pcCardKind		----	卡片种类 **   			pcPreCharCode	----	冠字号码 **   输出参数: **   			pcCardNo		----	卡号 **   返回结果:int **   			0				----	成功 **   			-1				----	失败*******************************************************/int	cmsApiOpenCardGetCardNo( pstPubcom, pcVouNo, pcCardKind, pcPreCharCode, pcCardNo )struct  pubcom      *   pstPubcom;      		/* 公共PUBCOM */char      			*	pcVouNo;				/* 卡凭证号			*/char      			*	pcCardKind;				/* 卡片种类			*/char      			*	pcPreCharCode;			/* 冠字号码			*/char      			*	pcCardNo;				/* 卡号				*/{	/* 定义 局部变量 */	struct	cmscardinfo		stCmsCardInfo;		/* 卡片信息表		*/	struct	cmscardkind		stCmsCardKind;		/* 卡片种类表		*/	int		iRtn;								/* 函数返回值		*/	strcpy( g_acTrcMsg, "Api: cmsApiOpenCardGetCardNo处理开始.." );	TRCLOG2	sprintf( g_acTrcMsg,  "凭证号码=[%s]", pcVouNo );	TRCLOG1	sprintf( g_acTrcMsg,  "卡片种类=[%s]", pcCardKind );	TRCLOG1	sprintf( g_acTrcMsg,  "冠字号码=[%s]", pcPreCharCode );	TRCLOG1	strpack( pcVouNo );	strpack( pcPreCharCode );	/* 初始化 */	memset( &stCmsCardInfo,		0x00,	sizeof( struct cmscardinfo ) );	memset( &stCmsCardKind,		0x00,	sizeof( struct cmscardkind ) );	strcpy( g_acTrcMsg, "pubReadCmscardkind begin" );	TRCLOG1	/* 获取卡片种类表 */ 	strcpy( stCmsCardKind.cardkind, pcCardKind );	iRtn = pubReadCmscardkind( &stCmsCardKind );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strcpy( g_acTrcMsg, "pubReadCmscardkind finish" );	TRCLOG1	/* 获取卡片信息 */	/* 将维一索引数据赋给结构 */	strcpy( stCmsCardInfo.cardkind,		pcCardKind );	strcpy( stCmsCardInfo.voukind,		stCmsCardKind.voukind );	strcpy( stCmsCardInfo.vouno,		pcVouNo );	strcpy( stCmsCardInfo.cardsn,		pcPreCharCode );	/* 从卡帐户对照表获取纪录并锁住纪录 */	pubInitCmscardinfo();	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	SELECT *				INTO	R_CMSCARDINFO				FROM CMSCARDINFO				WHERE cardkind = :cmscardinfo_cardkind				AND cardsn = :cmscardinfo_cardsn				AND voukind = :cmscardinfo_voukind				AND vouno = :cmscardinfo_vouno;	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "999996" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	pubVtoSCmscardinfo( &stCmsCardInfo );	strcpy( pcCardNo, stCmsCardInfo.cardno );	return SUCCESS;}

⌨️ 快捷键说明

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