227 lines
7.9 KiB
XML
227 lines
7.9 KiB
XML
<?xml version="1.0" encoding="gb2312"?>
|
|
<Root>
|
|
<!-- 用户登陆,input:UID, USERPWD-->
|
|
<Transaction code="0020880" log_switch="1">
|
|
<!-- 查询登录用户的相关信息-->
|
|
<DynSentence name="QRY_CMMTOPER_INFO">
|
|
<Sentence>
|
|
SELECT LOG_PSWD,LOG_STS,LOG_PSWD_STS,LOG_STS,ORG_CD,OPR_STS,ERR_LPSW_CNT,
|
|
OPR_PROV,OPR_CITY,OPR_DEPT
|
|
FROM CMMTOPER
|
|
WHERE OPR_ID=?
|
|
</Sentence>
|
|
<Fields>OPR_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 密码被锁后,更新表中的状态-->
|
|
<DynSentence name="UPD_PWD_INFO">
|
|
<Sentence>
|
|
UPDATE CMMTOPER SET ERR_LPSW_CNT=?,LOG_PSWD_STS=? WHERE OPR_ID=?
|
|
</Sentence>
|
|
<Fields>ERR_LPSW_CNT|LOG_PSWD_STS|OPR_ID|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_BUITOPPRV_INFO">
|
|
<Sentence>
|
|
SELECT BUITOPPRV.PAG_ID,BUITPAGE.TXN_CD
|
|
FROM BUITOPPRV,BUITPAGE
|
|
WHERE BUITOPPRV.OPR_ID=?
|
|
AND BUITOPPRV.ATH_FLG='1'
|
|
AND BUITOPPRV.ACT_ID=BUITPAGE.ACT_ID
|
|
AND BUITPAGE.STS='0'
|
|
ORDER BY BUITOPPRV.PAG_ID,BUITOPPRV.ACT_ID
|
|
</Sentence>
|
|
<Fields>OPR_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 设置操作员的登陆状态为已登陆-->
|
|
<DynSentence name="UPD_OPR_LOG_STS">
|
|
<Sentence>
|
|
UPDATE CMMTOPER SET LOG_STS=? WHERE OPR_ID=?
|
|
</Sentence>
|
|
<Fields>LOG_STS|OPR_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<Function name="_after">
|
|
<FlowCtrl>
|
|
<!-- 登记操作员操作历史,登录操作员相关日志信息-->
|
|
<Set>AREA1.OPR_PROV=$OPR_PROV</Set>
|
|
<Set>AREA1.OPR_CITY=$OPR_CITY</Set>
|
|
<Set>AREA1.OPR_DEPT=$OPR_DEPT</Set>
|
|
<Set>AREA1.OPR_ID=$OPR_ID</Set>
|
|
<Exec func="LOG:GenOperOprHisDetail" error="IGNORE">
|
|
<Arg name="DAT_AREA" value="AREA1" />
|
|
<Arg name="DAT_FMT" value="FMT" />
|
|
</Exec>
|
|
<!-- 取出SESSION中相关的字段值-->
|
|
<Exec func="Web:GetSession" error="IGNORE">
|
|
<Arg name="ObjNam" value="OPR_INF" />
|
|
<Arg name="USR_ID" value="USR_ID" /> <!--操作员ID-->
|
|
<Arg name="OPR_PROV" value="OPR_PROV" /> <!--操作员归属省-->
|
|
<Arg name="OPR_CITY" value="OPR_CITY" /> <!--操作员归属市-->
|
|
<Arg name="OPR_DEPT" value="OPR_DEPT" /> <!--操作员归属部门-->
|
|
<Arg name="ORG_CD" value="ORG_CD" /> <!--操作员机构号-->
|
|
</Exec>
|
|
|
|
<Set>AREA1.OPR_PROV=$OPR_PROV</Set>
|
|
<Set>AREA1.OPR_CITY=$OPR_CITY</Set>
|
|
<Set>AREA1.OPR_DEPT=$OPR_DEPT</Set>
|
|
<Set>AREA1.OPR_ID=$USR_ID</Set>
|
|
|
|
<Exec func="LOG:GenOperOprHisDetail" error="IGNORE">
|
|
<Arg name="DAT_AREA" value="AREA1" />
|
|
<!-- 数据区-->
|
|
<Arg name="DAT_FMT" value="FMT" />
|
|
<!-- 数据格式码 选输-->
|
|
</Exec>
|
|
<If condition="IS_EQUAL_STRING(CMM00000,DELBOTHSPACE($GWA.MSG_CD))">
|
|
<Set>LOG_STS=0</Set> <!-- 设置操作员的登陆状态为已登陆-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_OPR_LOG_STS" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>GWA.MSG_INF=操作数据库失败。</Set>
|
|
<Return />
|
|
</If>
|
|
<Exec func="PUB:SetRetPage">
|
|
<Arg name="page" value="/jsp/base/main_frame.jsp" />
|
|
</Exec>
|
|
</If>
|
|
<Else>
|
|
<If condition="ISNULL($GWA.MSG_INF)">
|
|
<Set>GWA.MSG_INF=异常错误</Set>
|
|
</If>
|
|
<Exec func="PUB:SetRetPage">
|
|
<Arg name="page" value="/jsp/pubmng/login.jsp" />
|
|
</Exec>
|
|
</Else>
|
|
<If condition="NOT(ISNULL($GWA.MSG_CD))">
|
|
<Set>RSP_CODY=SUBSTR($GWA.MSG_CD,4,4)</Set>
|
|
<If condition="$RSP_CODY=0000">
|
|
<Set>MSG_TYP=N</Set>
|
|
<Set>MON_STS=S</Set>
|
|
</If>
|
|
<Else>
|
|
<If condition="$MSG_TYP!=N">
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Set>MSG_TYP=E</Set>
|
|
<Set>GWA.MSG_INF=STRCAT( ,$GWA.MSG_INF, )</Set>
|
|
<Set>GWA.MSG_CD=1052999</Set>
|
|
<Set>MON_STS=F</Set>
|
|
</If>
|
|
</Else>
|
|
</If>
|
|
</FlowCtrl>
|
|
</Function>
|
|
|
|
<FlowCtrl>
|
|
<Set>OPR_ID=DELBOTHSPACE($UID)</Set> <!--操作员ID-->
|
|
<Set>USERPWD=DELBOTHSPACE($USERPWD)</Set> <!--密码-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CMMTOPER_INFO" />
|
|
</Exec>
|
|
<!-- 查询登录用户的相关信息-->
|
|
<If condition="~RetCod=0">
|
|
<!--检查是否处于激活状态-->
|
|
<If condition="IS_EQUAL_STRING($OPR_STS,5)">
|
|
<Set>GWA.MSG_CD=CMM00001</Set>
|
|
<Set>GWA.MSG_INF=此用户处于非激活状态,不允许登陆</Set>
|
|
<Return />
|
|
</If>
|
|
|
|
<!--检查密码是否为空
|
|
<If condition="ISNULL(DELBOTHSPACE($USERPWD))">
|
|
<Set>GWA.MSG_CD=CMM00002</Set>
|
|
<Set>GWA.MSG_INF=请输入密码</Set>
|
|
<Return />
|
|
</If>-->
|
|
|
|
<!--登陆密码加密-->
|
|
|
|
<Exec func="HSM:HsmTranslateCharPin" error="IGNORE">
|
|
<Arg name="Zpk1ByPK" value="$USERPWD1" />
|
|
<Arg name="Zpk2" value="258" />
|
|
<Arg name="DstFld" value="USERPWD2" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>GWA.MSG_CD=CMM00003</Set>
|
|
<Set>GWA.MSG_INF=加密失败</Set>
|
|
<Return />
|
|
</If>
|
|
<!--操作员密码验证-->
|
|
<Exec func="HSM:HsmPin" error="IGNORE">
|
|
<Arg name="PINTYPE" value="T0" />
|
|
<Arg name="PINBLOCKBYZPK" value="$USERPWD2" />
|
|
<Arg name="ACCNO" value="$OPR_ID" />
|
|
<Arg name="ZPK" value="UI" />
|
|
<Arg name="PVK" value="264" />
|
|
<Arg name="PINOFFSET" value="LOG_PSWD" />
|
|
<Arg name="MINPINLENGTH" value="6" />
|
|
<Arg name="PINLENGTH" value="8" />
|
|
<Arg name="dstfld" value="" />
|
|
<Arg name="ecp_dstfld" value="" />
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>GWA.MSG_CD=CMM00000</Set>
|
|
<Set>GWA.MSG_INF=验证成功。</Set>
|
|
</If>
|
|
|
|
<!-- test -->
|
|
<If condition="ISNULL(DELBOTHSPACE($USERPWD))">
|
|
<Set>USERPWD=aaaaaaaa</Set>
|
|
</If>
|
|
<!--密码错误-->
|
|
<If condition="IS_NOEQUAL_STRING($LOG_PSWD,$USERPWD)">
|
|
<Set>GWA.MSG_CD=CMM20000</Set>
|
|
<Set>GWA.MSG_INF=密码错误</Set>
|
|
<Set>ERR_LPSW_CNT=ADD($ERR_LPSW_CNT,1)</Set><!--累加错误密码次数,当天或是连续错误?-->
|
|
<If condition="INTCMP($ERR_LPSW_CNT,5,5)">
|
|
<Set>$LOG_PSWD_STS=1</Set> <!--设定密码状态为1:锁定-->
|
|
</If>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_PWD_INFO" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>GWA.MSG_CD=CMM00001</Set>
|
|
<Set>GWA.MSG_INF=操作数据库失败</Set>
|
|
</If>
|
|
<Return />
|
|
</If>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Set>GWA.MSG_CD=CMM90000</Set>
|
|
<Set>GWA.MSG_INF=用户不存在</Set>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>GWA.MSG_CD=CMM00001</Set>
|
|
<Set>GWA.MSG_INF=系统错误,查询数据库失败</Set>
|
|
<Return />
|
|
</Else>
|
|
<!--查询操作员的权限-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_BUITOPPRV_INFO" />
|
|
<Arg name="RecordName" value="Grp" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>GWA.MSG_CD=CMM00001</Set>
|
|
<Set>GWA.MSG_INF=操作数据库失败</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>UID=$OPR_ID</Set>
|
|
<Exec func="PUB:PageAuth" error="IGNORE" />
|
|
<!--把操作员的相关信息保存到SESSION-->
|
|
<Exec func="WEB:SetSession" error="IGNORE">
|
|
<Arg name="ObjNam" value="OPR_INF" />
|
|
<Arg name="USR_ID" value="$OPR_ID" /> <!--操作员ID-->
|
|
<Arg name="OPR_PROV" value="$OPR_PROV" /> <!--操作员归属省-->
|
|
<Arg name="OPR_CITY" value="$OPR_CITY" /> <!--操作员归属市-->
|
|
<Arg name="OPR_DEPT" value="$OPR_DEPT" /> <!--操作员归属部门-->
|
|
<Arg name="ORG_CD" value="$ORG_CD" /> <!--操作员机构号-->
|
|
<Arg name="BR_NO" value="$ORG_CD" /> <!--操作员机构号-->
|
|
</Exec>
|
|
|
|
<Set>GWA.MSG_CD=CMM00000</Set>
|
|
<Set>GWA.MSG_INF=验证成功</Set>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Root>
|