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