📄 cmsmang.sqc
字号:
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 + -