Files
ctg-app-ui/lps/etc/pkg/LPS_CHECKNETRECHARGE_PKG.XML
2021-01-12 22:04:24 +08:00

123 lines
4.2 KiB
XML

<?xml version="1.0" encoding='UTF-8'?>
<Package>
<!-- 网络侧圈存检查 -->
<Function name="CheckNetRecharge">
<Input>MBL_NO|TXN_AMT|</Input>
<Output>MSG_CD|</Output>
<!-- 查询钱包状态 -->
<DynSentence name="QRY_CRDSTS">
<Sentence>
SELECT CRD_STS,CRD_STSW FROM LPSTCRD WHERE MBL_NO=? and CRD_STS!='2'
</Sentence>
<Fields>MBL_NO|</Fields>
</DynSentence>
<!--查询最后一笔充值转发时间是否大于30分钟-->
<DynSentence name='QRY_LPSTSFIF_LAST'>
<Sentence>
SELECT REG_DT, REG_TM
FROM LPSTSFIF
WHERE MBL_NO=? AND CMD_CD='16'
AND (to_date(?,'yyyymmddhh24miss')-to_date(REG_DT||REG_TM,'yyyymmddhh24miss'))*24*60 &lt; '30'
</Sentence>
<Fields>MBL_NO|NOW_DTM|</Fields>
</DynSentence>
<process>
<Set>MSG_CD=LPS00000</Set>
<Set>NOW_DTM=GETDATETIME()</Set> <!-- 获取当前时间 -->
<!-- 判断本次充值是否离上笔充值交易的时间间隔大于30分钟 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_LPSTSFIF_LAST"/>
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS00001"/>
<Arg name="MsgDat" value="系统异常,交易失败"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS78012"/>
<Arg name="MsgDat" value="离上笔充值的存储转发尚未超过30分钟"/>
</Exec>
<Return/>
</ElseIf>
<!--钱包状态检查 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_CRDSTS"/>
</Exec>
<If condition="~RetCod =-1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS00001"/>
<Arg name="MsgDat" value="钱包状态查询出错"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod =2">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS81012"/>
</Exec>
<Return/>
</ElseIf>
<If condition="IS_NOEQUAL_STRING($CRD_STS,1)" >
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS20062"/>
<Arg name="MsgDat" value="钱包状态异常,无法圈存"/>
</Exec>
<Return/>
</If>
<If condition="IS_EQUAL_STRING(SUBSTR($CRD_STSW,4,1),1)" >
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="LPS20062"/>
<Arg name="MsgDat" value="钱包被锁定,无法圈存"/>
</Exec>
<Return/>
</If>
<!--用户-用户状态查询-->
<Set>INP_DAT.MBLNO_OR_LOGID=$MBL_NO</Set>
<Set>INP_DAT.TX_CD=$GWA.TX_CD</Set>
<Call package="URM" function="CHK_USER_STS">
<Input>INP_DAT|</Input>
<Output>OUT_DAT|MSG_CD|</Output>
</Call>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>~TEMP=$GWA.TX_CD</Set>
<Set>GWA.TX_CD=2142020</Set>
<!-- 风控单笔限额检查 -->
<Set>RISK_DAT.MBL_NO=$MBL_NO</Set>
<Set>RISK_DAT.RISK_SWITCH=C</Set>
<Set>RISK_DAT.TX_AMT=$TXN_AMT</Set>
<Call package="LPS_PUB" function="LpsRiskControl">
<Input>RISK_DAT|GWA|</Input>
<Output>MSG_CD|</Output>
</Call>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Set>GWA.TX_CD=~TEMP</Set>
<Return/>
</If>
<Set>GWA.TX_CD=~TEMP</Set>
</process>
</Function>
</Package>