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

📄 cardnum.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************* **   源码文件名称 :  cardnum.SQC **   所属子系统   : 卡管理 **   功能描述     : 对客户持卡数的检查处理 **   当前文件版本 : 4.0.0.0 **   作        者 : UCCB   ALex  **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/#include "sysdefine.h"#include "code.h"#include "attrdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardkind.h"#include "cmscuscdnum.h"EXEC SQL INCLUDE sqlca;/******************************************************* **	  函数名称:cmsApiChkCustCardNumLimit **   功能描述: 按卡片种类表同一客户主附卡最大持卡数, **				与客户持卡数表中的客户主附卡数量比较是否超限 **   输入参数: **   			pcCustNo    	 ---	客户号     **   			pstCmsCardKind 	 ---	卡片种类表 **   			cCardFlg 	  	 ---	卡标志 **										'8'  主卡 **										'6'  附卡 **   			cFlg  	 	   	 ---	交易处理标志 **  									'0'  正常交易      **   									'1'  抹账交易       **   输出参数: **    **   涉及库表:  **				cmscardkind		---		卡片种类表	 **				cmscuscdnum		---		客户持卡数表 **   返回结果:  int  0  成功  -1  失败  **   作        者 : UCCB   ALex  **   版本创建日期 : 2004/09/17 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiChkCustCardNumLimit( pcCustNo,pstCmsCardKind,cCardFlg,cFlg )char						*pcCustNo;			/*客户号    	*/struct		cmscardkind		*pstCmsCardKind;  	/*卡片种类表	*/char  						cCardFlg;   	 	/*卡标志	*/char  						cFlg;   	   	 	/*交易处理标志*/{	/*定义	局部变量*/	struct	cmscuscdnum		stCmsCusCdNum;		sprintf( g_acTrcMsg, "cmsApiChkCustCardNumLimit begin " );	TRCLOG2	/*初始化结构*/	memset(&stCmsCusCdNum, 0x00 ,sizeof( struct cmscuscdnum ) );	/*将输入参数赋值给结构*/	strcpy( stCmsCusCdNum.cardkind, pstCmsCardKind->cardkind );	strcpy( stCmsCusCdNum.custno, pcCustNo );	sprintf( g_acTrcMsg,"cardflg[%c]",cCardFlg );	TRCLOG1	sprintf( stCmsCusCdNum.cardflg,"%c",cCardFlg );	strcpy( g_acTrcMsg ,stCmsCusCdNum.cardflg );	TRCLOG1	strcpy( g_acTrcMsg ,pcCustNo );	TRCLOG1	/*取客户持卡数表记录*/	pubStoVCmscuscdnum( &stCmsCusCdNum );	EXEC SQL	DECLARE Cuscdnum_1_cur CURSOR FOR				SELECT * FROM CMSCUSCDNUM 				WHERE custno=:cmscuscdnum_custno 				AND cardkind=:cmscuscdnum_cardkind 				AND cardflg=:cmscuscdnum_cardflg				FOR UPDATE;	SQLOPENCUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")	if ( SQLCODE )	{		sprintf(g_acRspCode,"CMS111");		pubCrtRspInfo("cmscuscdnum",SQLCODE);		ERRLOG;		return FAILED;	}		pubInitCmscuscdnum();		EXEC SQL	FETCH Cuscdnum_1_cur INTO R_CMSCUSCDNUM;	if( SQLCODE && SQLCODE != SQLNOTFOUND )	{		sprintf(g_acRspCode,"CMS112");		pubCrtRspInfo("cmscuscdnum",SQLCODE);		ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")		return FAILED;	}	sprintf( g_acTrcMsg ,"cFlg[%c]",cFlg );	TRCLOG2	/*根据输入参数cFlg判断为何种处理*/	switch( cFlg )	{		case FLAG_NORMAL: 	/*正常交易*/			if(SQLCODE==SQLNOTFOUND)			{				/*给结构宿组赋值*/				cmscuscdnum_crdnum=1;				strcpy( cmscuscdnum_custno, pcCustNo );				strcpy( cmscuscdnum_cardkind, pstCmsCardKind->cardkind );				sprintf( cmscuscdnum_cardflg,"%c\0",cCardFlg );				/*给客户持卡数表增加一条记录*/				EXEC SQL	INSERT INTO cmscuscdnum							VALUES( R_CMSCUSCDNUM );				if ( SQLCODE )				{					sprintf(g_acRspCode,"999998");					pubCrtRspInfo("cmscuscdnum", SQLCODE);					ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")					return FAILED;				}	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")				return SUCCESS;			}			/*判断主附卡*/			switch( cCardFlg )			{				case MAIN_CARD:		/*主卡*/					/*判断持主卡数是否限制*/					if( pstCmsCardKind->maxnum == ZEROS )	/*不限制*/					{						break;					}					/*判断客户持主卡数是否小客户最大持卡数*/					if( pstCmsCardKind->maxnum <= cmscuscdnum_crdnum )					{/*客户持卡数大*/						sprintf(g_acRspCode,"CMS204");						pubCrtRspInfo(cmscuscdnum_crdnum,pstCmsCardKind->maxnum);						ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")						return FAILED;					}					break;				case SUBMAIN_CARD:	/*附卡*/					/*判断持附卡数是否限制*/					if( pstCmsCardKind->fmaxnum == ZEROS )					{						break;  					}					/*判断客户持附卡数是否小客户最大持卡数*/					if( pstCmsCardKind->fmaxnum <= cmscuscdnum_crdnum )					{/*客户持卡数大*/						sprintf(g_acRspCode,"CMS205");						pubCrtRspInfo(cmscuscdnum_crdnum,pstCmsCardKind->fmaxnum);						ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")						return FAILED;					}					break;				default:					sprintf(g_acRspCode,"999999");					sprintf(g_acRspMsg,"卡种类错[%c]",cCardFlg);					ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")					return FAILED;			}			/*累计客户持卡数*/			cmscuscdnum_crdnum=cmscuscdnum_crdnum+1;			break;		case FLAG_REVERSE:  /*抹账、冲正交易*/			if(SQLCODE==SQLNOTFOUND)			{				/*				sprintf(g_acRspCode,"CMS113");				sprintf(g_acTrcMsg,"客户持卡数表客户号为[%s]",pcCustNo);				pubCrtRspInfo(g_acTrcMsg,SQLCODE);				ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")				return FAILED;				*/				sprintf(g_acTrcMsg,"客户持卡数表客户号为[%s]",pcCustNo);				TRCLOG2	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")				return SUCCESS;			}			/*减少客户持卡数*/			cmscuscdnum_crdnum=cmscuscdnum_crdnum-1;			if( cmscuscdnum_crdnum < ZEROS )			{				sprintf(g_acRspCode,"999999");				sprintf(g_acRspMsg,"客户持卡数错,客户号[%s]",pcCustNo);				ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")				return FAILED;			}			break;		default:			sprintf(g_acRspCode,"999999");			sprintf(g_acRspMsg,"交易种类错[%c]",cFlg);			ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")			return FAILED;	}	/*更新记录*/	EXEC SQL	UPDATE cmscuscdnum				SET crdnum=:cmscuscdnum_crdnum				WHERE CURRENT OF Cuscdnum_1_cur;	if ( SQLCODE )	{		sprintf(g_acRspCode,"999997");		pubCrtRspInfo("cmscuscdnum", SQLCODE);		ERRLOG;	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")		return FAILED;	}	SQLCLOSECUR(Cuscdnum_1_cur,"Cuscdnum_1_cur")	sprintf( g_acTrcMsg, "cmsApiChkCustCardNumLimit end " );	TRCLOG2	return SUCCESS;}

⌨️ 快捷键说明

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