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

📄 cmsmang.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 4 页
字号:
 **   			cMode			----	处理方式 **   									'1':口挂 **   									'2':书挂 **   									'3':密码口挂 **   									'4':密码书挂 **   			pcHappenPlace	----	交易渠道 **   			pcTranDate		----	交易日期 **   输出参数: **   			pcAcctNo		----	客户账号 **   			pcCustNo		----	客户号 **   返回结果:int **   			0				----	成功 **   			-1				----	失败*******************************************************/int	cmsApiCardReportLoss( pcCardNo, pcPasswd, iPlace, cMode, 	\			pcHappenPlace, pcTranDate, pcAcctNo, pcCustNo )char      			*	pcCardNo;				/* 卡号				*/char      			*	pcPasswd;				/* 密码				*/char      				iPlace;					/* 检查密码标志		*/char      				cMode;					/* 处理方式			*/char				*	pcHappenPlace;			/* 交易渠道			*/char				*	pcTranDate;				/* 交易日期			*/char				*	pcAcctNo;				/* 客户账号			*/char				*	pcCustNo;				/* 客户号			*/{	/* 定义 局部变量 */	struct	cmscardinfo		stCmsCardInfo;		/* 卡帐户对照表结构 */	struct	cmstbsreginf	stCmsTbsRegInf;		/* 电话银行签约用户	*/	struct	cmscardkind		stCmsCardKind;		/* 卡片种类表		*/	char	acCheckFlag[ BIT8_LEN + 1 ];		/* 检查卡片种类标志	*/	int						iRtn;				/* 函数返回值		*/	int						iNumx;				/* 数组计数器		*/	int						iNumy;				/* 数组计数器		*/	char	acCardStat[ BIT21_LEN ][BIT11_LEN];	/* 卡状态检查标志	*/	sprintf( g_acTrcMsg, "cmsApiCardReportLoss begin " );	TRCLOG2	sprintf( g_acTrcMsg, "CardNo=[%s]", pcCardNo );	TRCLOG1	sprintf( g_acTrcMsg, "Passwd=[%s]", pcPasswd );	TRCLOG1	sprintf( g_acTrcMsg, "HappenPlace=[%s]", pcHappenPlace );	TRCLOG1	sprintf( g_acTrcMsg, "TranDate=[%s]", pcTranDate );	TRCLOG1	sprintf( g_acTrcMsg, "iPlace=[%d]", iPlace );	TRCLOG1	sprintf( g_acTrcMsg, "cMode=[%c]", cMode );	TRCLOG1	/*初始化结构*/	memset(&stCmsTbsRegInf, 0x00, sizeof( struct cmstbsreginf ) );	memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) );	memset( &stCmsCardKind,		0x00,	sizeof( struct cmscardkind ) );	/* 卡检查状态数组全置未不检查 */	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;		}	/* 获取卡片信息表 */	strcpy( stCmsCardInfo.cardno, pcCardNo );	iRtn = pubReadCmscardinfo( &stCmsCardInfo );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )		{			strcpy(g_acRspCode,"CMS302");			pubCrtRspInfo( pcCardNo );		}		ERRLOG		return FAILED;	}	/* 获取卡片种类表 */ 	strcpy( stCmsCardKind.cardkind, stCmsCardInfo.cardkind  );	iRtn = pubReadCmscardkind( &stCmsCardKind );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 检查卡片种类(全部属性)API 是否为单位/个人卡、启用标志、交易类型	*/	memset( acCheckFlag, 0x00, sizeof( acCheckFlag ) );	acCheckFlag[ BIT1_LEN ] = CHECK_YES;		/* 检查启用标志			*/	acCheckFlag[ BIT2_LEN ] = CHECK_YES;		/* 检查卡种交易类型		*/	acCheckFlag[ BIT3_LEN ] = CHECK_NO;	acCheckFlag[ BIT4_LEN ] = CHECK_NO;			/* 检查发卡对象 单/个	*/	acCheckFlag[ BIT5_LEN ] = CHECK_NO;			/* 检查记名标志			*/	acCheckFlag[ BIT6_LEN ] = CHECK_YES;		/* 检查挂失标志			*/	iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGLOST, \			pcHappenPlace, CZEROS, CZEROS, LOSTFLAG, "" );	if ( iRtn )	{		ERRLOG		return FAILED;	}	strcpy( g_acTrcMsg, "cmsApiChkCardKind finish" );	TRCLOG1	/* 为进行卡状态检查组织数据 */	acCardStat[ BIT4_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT5_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT6_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT7_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT9_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT11_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT12_LEN ] [ BIT2_LEN ] = CHECK_YES;	acCardStat[ BIT13_LEN ] [ BIT2_LEN ] = CHECK_YES;	switch ( cMode )	{		/* 卡口挂检查 检查卡片是否正常 销卡是否正常 */		case LOST_TEL:			acCardStat[ BIT1_LEN ] [ BIT1_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_PWTELLLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_PWPAPERLOST - CZEROS ] = CHECK_YES;			break;		/* 卡书挂检查 检查卡片是否正常或卡片口挂 销卡是否正常 */		case LOST_PAPER:			acCardStat[ BIT1_LEN ] [ BIT1_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_TELLLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_PWTELLLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_PWPAPERLOST - CZEROS ] = CHECK_YES;			break;		/* 卡密码口挂检查 检查密码是否正常 销卡是否正常 */		case LOST_PWDTEL:			acCardStat[ BIT1_LEN ] [ BIT1_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_PAPERLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_TELLLOST - CZEROS ] = CHECK_YES;			break;		/* 卡密码书挂检查 检查密码是否正常或密码口挂 销卡是否正常 */		case LOST_PWDPAPER:			acCardStat[ BIT1_LEN ] [ BIT1_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_CARDOK - CZEROS ] = CHECK_YES;			acCardStat[ BIT3_LEN ] [ BIT3_PWTELLLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_PAPERLOST - CZEROS ] = CHECK_YES;			acCardStat[ BIT2_LEN ] [ BIT2_TELLLOST - CZEROS ] = CHECK_YES;			break;	}	/* 检查卡状态 */	iRtn = cmsApiChkCardStatIsNormal( &stCmsCardInfo, acCardStat );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 检查密码 */	/* 卡书面挂失检查卡密码 */	if ( iPlace == CARDPWD_FLAG && cMode == LOST_PAPER	)	{		/* 检查卡是否已经密码挂失 */		/* 密码没有挂失 */		/*  feng modify in 2006-02-25 begin */		/*  不检查密码 */		/*		#ifdef WLMQ_MODE	sprintf( g_acTrcMsg, "检查密码 begin " );	TRCLOG2		if ( cmsApiChkCardStatIsPwdTelLost( &stCmsCardInfo )	\			&& cmsApiChkCardStatIsPwdLost( &stCmsCardInfo ) )		{			strcpy( g_acRspCode, RSP_OK );			pubCrtRspInfo( );			iRtn=cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pcHappenPlace );		}	sprintf( g_acTrcMsg, "检查密码 end " );	TRCLOG2		#endif		*/		/*  feng modify in 2006-02-25 end */	}	/* 检查查询密码 */	else if ( iPlace == INQPWD_FLAG )	{		/* 检查电话银行是否签约 */		/*赋输入参数值*/		strcpy( stCmsTbsRegInf.acctno,	pcCardNo	);		/*取电话银行签约用户登记表记录*/		pubStoVCmstbsreginf( &stCmsTbsRegInf );		EXEC SQL	SELECT * INTO R_CMSTBSREGINF					FROM	CMSTBSREGINF					WHERE	acctno = :cmstbsreginf_acctno;		/* 数据库读错误 */		if ( SQLCODE )		{			sprintf(g_acRspCode,"999996");			sprintf(g_acRspMsg, "取cmstbsreginf表记录错");			ERRLOG			return FAILED;		}		/* 检查电话银行密码 */		else 		{			pubVtoSCmstbsreginf( &stCmsTbsRegInf );			iRtn = cmsApiChkTbsPwd( &stCmsTbsRegInf, pcPasswd, pcHappenPlace );		}	}	/* 密码错误 */	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 检查密码和挂失类型处理标志 */	/* 查询密码和电话银行密码只允许口挂 */	if ( iPlace != CARDPWD_FLAG &&			\			cMode != LOST_TEL && cMode != LOST_PWDTEL )	{		strcpy( g_acRspCode, "CMS1A0" );		pubCrtRspInfo( );		ERRLOG		return FAILED;	}	/* 为修改卡片信息表准备数据 */	switch ( cMode )	{		/* 卡口挂 */		case LOST_TEL:			stCmsCardInfo.cardstat[ BIT2_LEN ] = BIT2_TELLLOST;			break;		/* 卡书挂 */		case LOST_PAPER:			stCmsCardInfo.cardstat[ BIT2_LEN ] = BIT2_PAPERLOST;			break;		/* 卡密码口挂 */		case LOST_PWDTEL:			stCmsCardInfo.cardstat[ BIT3_LEN ] = BIT3_PWTELLLOST;			break;		/* 卡密码书挂 */		case LOST_PWDPAPER:			stCmsCardInfo.cardstat[ BIT3_LEN ] = BIT3_PWPAPERLOST;			break;	}	strcpy( stCmsCardInfo.chgdate,	pcTranDate	);	/* 修改卡片信息表记录 */	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET	cardstat = :cmscardinfo_cardstat,					chgdate = :cmscardinfo_chgdate				WHERE cardno = :cmscardinfo_cardno;	/* 修改出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	/* 为输出参数赋值 */	strcpy( pcAcctNo, stCmsCardInfo.acctno );	strcpy( pcCustNo, stCmsCardInfo.custno );	sprintf( g_acTrcMsg, "cmsApiCardReportLoss end " );	TRCLOG2	return SUCCESS;}/******************************************************* **	  函数名称:cmsApiCardUndoReportLoss **   功能描述:卡解除挂失 **   输入参数: **   			pcCardNo		----	卡号 **   			pcPasswd		----	密码 **   			cMode			----	处理方式 **   									'1':解除口挂 **   									'2':解除书挂 **   									'3':解除密码口挂 **   									'4':解除密码书挂 **   			pcHappenPlace	----	交易渠道 **   			pcTranDate		----	交易日期 **   输出参数: **   			pcAcctNo		----	客户账号 **   			pcCustNo		----	客户号 **   返回结果:int **   			0				----	成功 **   			-1				----	失败*******************************************************/int	cmsApiCardUndoReportLoss( pcCardNo, pcPasswd, cMode, 		\			pcHappenPlace, pcTranDate, pcAcctNo, pcCustNo )char      			*	pcCardNo;				/* 卡号				*/char      			*	pcPasswd;				/* 密码				*/char      				cMode;					/* 处理方式			*/char				*	pcHappenPlace;			/* 交易渠道			*/char				*	pcTranDate;				/* 交易日期			*/char				*	pcAcctNo;				/* 客户账号			*/char				*	pcCustNo;				/* 客户号			*/{	/* 定义 局部变量 */	struct	cmscardinfo		stCmsCardInfo;		/* 卡帐户对照表结构 */	int						iRtn;				/* 函数返回值		*/	sprintf( g_acTrcMsg, "cmsApiCardUndoReportLoss begin " );	TRCLOG2	sprintf( g_acTrcMsg, "CardNo=[%s]", pcCardNo );	TRCLOG1	sprintf( g_acTrcMsg, "Passwd=[%s]", pcPasswd );	TRCLOG1	sprintf( g_acTrcMsg, "HappenPlace=[%s]", pcHappenPlace );	TRCLOG1	sprintf( g_acTrcMsg, "TranDate=[%s]", pcTranDate );	TRCLOG1	sprintf( g_acTrcMsg, "cMode=[%c]", cMode );	TRCLOG1	/* 初始化卡片信息表结构 */	memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) );	/* 获取卡片信息表 */	strcpy( stCmsCardInfo.cardno,		pcCardNo );	iRtn = pubReadCmscardinfo( &stCmsCardInfo );    if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )		{			strcpy(g_acRspCode,"CMS302");			pubCrtRspInfo( pcCardNo );		}		ERRLOG		return FAILED;	}	/* 为进行卡状态检查组织数据 */	switch ( cMode )	{		/* 卡解除口挂检查 检查卡片是否口挂 */		case UNLOST_TEL:			iRtn = cmsApiChkCardStatIsTelLost( &stCmsCardInfo );			break;		/* 卡解除书挂检查 检查卡片是否书挂 */		case UNLOST_PAPER:			iRtn = cmsApiChkCardStatIsLost( &stCmsCardInfo );			break;		/* 卡解除密码口挂检查 检查密码是否口挂 */		case UNLOST_PWDTEL:			iRtn = cmsApiChkCardStatIsPwdTelLost( &stCmsCardInfo );			break;		/* 卡解除密码书挂检查 检查密码是否书挂 */		case UNLOST_PWDPAPER:			iRtn = cmsApiChkCardStatIsPwdLost( &stCmsCardInfo );			break;	}	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 检查卡密码 */	#ifdef HEFEI_MODE	if ( cMode != UNLOST_PWDTEL && cMode != UNLOST_PWDPAPER )	{		iRtn=cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pcHappenPlace );	}	#endif	#ifdef WLMQ_MODE		iRtn=cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pcHappenPlace );	#endif	/* 密码错误 */	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 为修改卡片信息表准备数据 */	switch ( cMode )	{		/* 卡口挂 */		case LOST_TEL:		/* 卡书挂 */		case LOST_PAPER:			stCmsCardInfo.cardstat[ BIT2_LEN ] = BIT2_CARDOK;			break;		/* 卡密码口挂 */		case LOST_PWDTEL:		/* 卡密码书挂 */		case LOST_PWDPAPER:			stCmsCardInfo.cardstat[ BIT3_LEN ] = BIT3_CARDOK;			break;	}	strcpy( stCmsCardInfo.chgdate,	pcTranDate	);	/* 修改卡帐户对照表记录 */	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET	cardstat = :cmscardinfo_cardstat,					chgdate = :cmscardinfo_chgdate				WHERE cardno = :cmscardinfo_cardno;	/* 修改出错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	/* 为输出参数赋值 */	strcpy( pcAcctNo, stCmsCardInfo.acctno );	strcpy( pcCustNo, stCmsCardInfo.custno );	sprintf( g_acTrcMsg, "cmsApiCardUndoReportLoss end " );	TRCLOG2	return SUCCESS;}/******************************************************* **	  函数名称:cmsApiChgCardSetValue **   功能描述:换卡时将旧卡的信息传递给新卡,只进行赋值 **   输入参数: **   			pstCmsCardInfo	----	旧卡卡片信息结构

⌨️ 快捷键说明

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