191 lines
9.2 KiB
XML
191 lines
9.2 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
<Function name="CHK_LOG_PSWD">
|
|
<Input>GWA|INP_DAT</Input>
|
|
<Output>OUT_DAT|MSG_CD</Output>
|
|
|
|
<!-- 根据内部用户号查询用户操作员信息表 -->
|
|
<DynSentence name="QRY_URMTOPER_BY_USRNO">
|
|
<Sentence>
|
|
SELECT LOG_PSWD,ERR_LPSW_DT,ERR_LPSW_CNT,LOG_PSWD_STS,USR_OPR_MBL
|
|
FROM URMTOPER
|
|
WHERE USR_NO=?
|
|
</Sentence>
|
|
<Fields>INP_DAT.USR_NO</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 根据内部用户号查询账号 -->
|
|
<DynSentence name="QRY_ACMTACIN_BY_USRNO">
|
|
<Sentence>
|
|
SELECT AC_NO FROM ACMTACIN WHERE USR_NO=?
|
|
</Sentence>
|
|
<Fields>INP_DAT.USR_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新登陆密码信息 -->
|
|
<DynSentence name="UPD_URMTOPER_PSWD_INF">
|
|
<Sentence>
|
|
UPDATE URMTOPER
|
|
SET ERR_LPSW_CNT=?,ERR_LPSW_DT=?,LOG_PSWD_STS=?
|
|
WHERE USR_NO=?
|
|
</Sentence>
|
|
<Fields>ERR_LPSW_CNT|ERR_LPSW_DT|LOG_PSWD_STS|INP_DAT.USR_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<Process>
|
|
<Exec func="PUB:DumpETF"/> <!-- test -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM00000"/>
|
|
</Exec>
|
|
|
|
<!-- 获取密码锁定天数 -->
|
|
<Set>GPP_INP.PAR_NAM=CMMTCONS</Set>
|
|
<Set>GPP_INP.KEY_NAM=PSWD_LCK_DAYS</Set>
|
|
<Exec func="CMM:GetPubParam">
|
|
<Arg name="_I_INP_DAT" value="GPP_INP"/>
|
|
<Arg name="_O_OUT_DAT" value="GPP_OUT"/>
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>LOG_PSWD_LOCK_DAYS=@O.GPP_OUT.CST_VAL</Set>
|
|
|
|
|
|
<!-- 检查用户密码状态 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_URMTOPER_BY_USRNO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20140"/> <!-- 内部用户号输入错误 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 判断密码是否锁定 -->
|
|
<If condition="IS_EQUAL_STRING($LOG_PSWD_STS,1)">
|
|
<If condition="INTCMP(DIFFDATE($ERR_LPSW_DT,$GWA.TX_DT),lt,$LOG_PSWD_LOCK_DAYS)">
|
|
<!-- 锁定后未解锁 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20047"/> <!-- 登陆密码状态锁定 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Else> <!-- 解锁后 -->
|
|
<Set>ERR_LPSW_CNT=0</Set> <!-- 密码错误次数 -->
|
|
<Set>LOG_PSWD_STS=0</Set> <!-- 密码状态 -->
|
|
<Set>ERR_LPSW_DT=19000101</Set> <!-- 最后锁定日期 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_URMTOPER_PSWD_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20003"/> <!-- 更新数据库时,数据不存在 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Exec func="PUB:CommitWork"/>
|
|
</Else>
|
|
</If>
|
|
|
|
<!-- 根据内部用户号查询账号 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_ACMTACIN_BY_USRNO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20012"/> <!-- 手机号输入错误 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>ACCNO=STRCAT(SUBSTR($AC_NO,1,6),SUBSTR($AC_NO,10,10))</Set>
|
|
|
|
<!-- 校验登陆密码LYS -->
|
|
|
|
<Exec func ="HSM:HsmPin" error="IGNORE">
|
|
<Arg name="PINTYPE" value="L0"/>
|
|
<Arg name="PINBLOCKBYZPK" value="$INP_DAT.LOG_PSWD_IN"/>
|
|
<Arg name="ACCNO" value="$ACCNO"/>
|
|
<Arg name="ZPK" value="WWW"/>
|
|
<Arg name="PVK" value="264"/>
|
|
<Arg name="PINOFFSET" value="$LOG_PSWD"/>
|
|
<Arg name="MINPINLENGTH" value="6"/>
|
|
<Arg name="PINLENGTH" value="6"/>
|
|
</Exec>
|
|
|
|
<If condition="~RetCod=0"> <!-- 密码输入正确 -->
|
|
<If condition="$LOG_PSWD_STS=2">
|
|
<Set>OUT_DAT.FIRST_LOG_FLG=Y</Set> <!-- 首次验证登陆密码 -->
|
|
</If>
|
|
<Else>
|
|
<Set>ERR_LPSW_CNT=0</Set> <!-- 密码错误次数 -->
|
|
<Set>LOG_PSWD_STS=0</Set> <!-- 密码状态 -->
|
|
<Set>ERR_LPSW_DT=19000101</Set> <!-- 最后锁定日期 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_URMTOPER_PSWD_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20003"/> <!-- 更新数据库时,数据不存在 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Exec func="PUB:CommitWork"/>
|
|
</Else>
|
|
</If>
|
|
<Else> <!-- 密码输入错误 -->
|
|
<Set>ERR_LPSW_CNT=ADD($ERR_LPSW_CNT,1)</Set> <!-- 密码错误次数 -->
|
|
<Set>ERR_LPSW_DT=$GWA.TX_DT</Set> <!-- 密码错误日期 -->
|
|
|
|
<!-- 获取密码最大尝试次数 -->
|
|
<Set>GPP_INP.PAR_NAM=CMMTCONS</Set>
|
|
<Set>GPP_INP.KEY_NAM=PSWD_ATEM_CNT</Set>
|
|
<Exec func="CMM:GetPubParam">
|
|
<Arg name="_I_INP_DAT" value="GPP_INP"/>
|
|
<Arg name="_O_OUT_DAT" value="GPP_OUT"/>
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>LOG_PSWD_TIME=@O.GPP_OUT.CST_VAL</Set>
|
|
|
|
<If condition="INTCMP($ERR_LPSW_CNT,2,$LOG_PSWD_TIME)">
|
|
<Set>OUT_DAT.LEFT_TRY_TIME=SUB($LOG_PSWD_TIME,$ERR_LPSW_CNT)</Set> <!-- 剩余尝试次数 -->
|
|
</If>
|
|
<If condition="INTCMP($ERR_LPSW_CNT,ge,$LOG_PSWD_TIME)">
|
|
<Set>LOG_PSWD_STS=1</Set> <!-- 密码状态 -->
|
|
<Set>UNLOCK_PSWD_DT=CALCDATE($ERR_LPSW_DT,+,d,$LOG_PSWD_LOCK_DAYS)</Set>
|
|
<!-- 如锁定给用用户短信通知 -->
|
|
<Set>SMS_CD=URM009</Set>
|
|
<Set>MBL_NO=$USR_OPR_MBL</Set>
|
|
<Call package="URM" function="SEND_SMS"/>
|
|
</If>
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_URMTOPER_PSWD_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20003"/> <!-- 更新数据库时,数据不存在 -->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Exec func="PUB:CommitWork"/>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20048"/> <!-- 登陆密码验证错误 -->
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
|
|
<Exec func="PUB:DumpETF"/>
|
|
|
|
</Process>
|
|
|
|
</Function>
|
|
</Package>
|