Files
2021-01-12 22:04:24 +08:00

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>