📄 cms303.sqc
字号:
/******************************************************************** ** 源码文件名称 : 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 + -