<?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>
