📄 cms536.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms536.SQC ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作者 : UCCB ALEX ** 版本创建日期 : 2004/10/11 ** 功能描述 : 修改密码处理子交易 ** 按照密码类型修改密码 卡密码 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmsacctm.h"EXEC SQL INCLUDE SQLCA;int cmsUpdateCardPwdPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ char acOldPassWd[PASSWD_LEN+1] ; /* 旧密码 */ char acNewPassWd[PASSWD_LEN+1] ; /* 新密码 */ char acModFlag[ FLAG_LEN + 1 ] ; /* 密码修改方式 */ /* 0 正常改密 */ /* 1 批量发卡启用 */ char acCheckFlag[BIT21_LEN][BIT11_LEN] ; char acChkTrkFlg[ FLAG_LEN+1 ] ; /* 卡磁道检查标志 */ char acTrack2[ TRACK2_LEN + 1 ] ; /* 二磁道 */ char acTrack3[ TRACK3_LEN + 1 ] ; /* 三磁道 */ int iRtn; struct cmscardinfo stCardInfo; struct cmsacctm stAcctM ; strcpy( g_acRspCode, RSP_OK ); strcpy( g_acTrcMsg, "子交易: 密码修改处理子交易开始..."); TRCLOG4 memset( &stCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( acOldPassWd, 0x00, sizeof( acOldPassWd ) ); memset( acNewPassWd, 0x00, sizeof( acNewPassWd ) ); memset( acCheckFlag, 0x00, sizeof( acCheckFlag ) ); memset( acTrack2, 0x00, sizeof( acTrack2 ) ); memset( acTrack3, 0x00, sizeof( acTrack3 ) ); memset( acModFlag, 0x00, sizeof( acModFlag ) ); /* 取数据字典值 */ getstring( "OldPassWd", acOldPassWd ); /*卡密码*/ getstring( "NewPassWd", acNewPassWd ); /*卡密码*/ getstring( "CardNo" , stCardInfo.cardno ); /*卡号*/ getstring( "Track2", acTrack2 ); getstring( "Track3", acTrack3 ); getstring( "Flag1", acChkTrkFlg ); getstring( "Flag", acModFlag ); /*生成新密码*/ /*使用银行算法*/ /* 获取卡片信息表 */ if( pubReadCmscardinfo( &stCardInfo ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg,"卡号[%s]不存在",stCardInfo.cardno ); ERRLOG goto Exit; } /*置卡状态检查标志*/ acCheckFlag[BIT1_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT2_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT3_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT5_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT6_LEN][BIT1_LEN]=CHECK_YES; if( !strcmp(pstPubcom->acChannelId,CHANNALID_GUIMIAN)!=0 && acModFlag[ BIT1_LEN ] == '1' ) /* 批量发卡启用 */ { acCheckFlag[BIT7_LEN][BIT1_LEN]=CHECK_NO; acCheckFlag[BIT7_LEN][BIT2_LEN]=CHECK_YES; } else { acCheckFlag[BIT7_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT7_LEN][BIT2_LEN]=CHECK_NO; } acCheckFlag[BIT8_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT9_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT14_LEN][BIT1_LEN]=CHECK_YES; /*检查主卡状态是否正常*/ if( cmsApiChkCardStatIsNormal( &stCardInfo, acCheckFlag ) ) { ERRLOG; goto Exit; } /*判断卡密码是否正确*/ if( cmsApiChkCardPwd( &stCardInfo,acOldPassWd,pstPubcom->acChannelId ) ) { ERRLOG goto Exit; } /* 检查卡磁道 */ if ( acChkTrkFlg[ BIT1_LEN ] == CHECK_YES ) { sprintf( g_acTrcMsg, "acTrack2[%s]acTrack3[%s]",acTrack2,acTrack3); TRCLOG3 /* iRtn = cmsCardVerify( acTrack2, acTrack3 ); if ( iRtn ) { strcpy( g_acRspCode, "CMS1D1" ); pubCrtRspInfo( ); ERRLOG goto Exit; } strcpy( g_acTrcMsg, "PubKjy finish " ); TRCLOG1 */ } strcpy( cmscardinfo_cardno, stCardInfo.cardno ); sprintf( g_acTrcMsg, "passwd[%s]DB[%s]",acNewPassWd,cmscardinfo_passwd); TRCLOG3 if ( OverPINBLOCK( acNewPassWd, stCardInfo.cardno, cmscardinfo_passwd )) { ERRLOG goto Exit; } if ( acModFlag[ BIT1_LEN ] == '1' ) /* 批量发卡启用 */ cmscardinfo_cardstat[BIT7_LEN]='0'; EXEC SQL UPDATE cmscardinfo SET passwd =:cmscardinfo_passwd, cardstat = :cmscardinfo_cardstat WHERE cardno=:cmscardinfo_cardno; if( SQLCODE ) { sprintf(g_acRspMsg,"修改卡片信息表密码错误次数清零错SQLCODE[%d]",SQLCODE); ERRLOG sprintf(g_acRspCode,"999997"); pubCrtRspInfo( "cmscardinfo", SQLCODE); ERRLOG goto Exit; } if( cmsApiInsTranLog( pstPubcom, &stCardInfo, &stAcctM, "改密", "改密" ) ) { ERRLOG goto Exit; } /* 子交易出口 */ strcpy( g_acTrcMsg, "子交易: 密码修改处理子交易结束..."); TRCLOG4Exit: if( !strcmp( g_acRspCode, RSP_OK ) ) return SUCCESS; else return FAILED ; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -