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

94 lines
3.9 KiB
XML

<?xml version="1.0" encoding='UTF-8'?>
<Package>
<!--设置订阅发布交易码-->
<Function name="QuerySubTxCd">
<Input>ISS_BUS_TYP|TX_CD|</Input>
<Output>MY_TX_CD|MSG_CD|</Output>
<!-- 检查交易码是否存在于业务类型表中 -->
<DynSentence name="QRY_MKMTBUSTYP_IN">
<Sentence>
SELECT 'Y' IS_EXISTS
FROM DUAL
WHERE EXISTS(SELECT * FROM MKMTBUSTYP WHERE BUS_TYP=? AND TX_CD=?)
</Sentence>
<Fields>ISS_BUS_TYP|TX_CD|</Fields>
</DynSentence>
<!--查询营销业务类型表中的交易码-->
<DynSentence name="QRY_MKMTBUSTYP">
<Sentence>
SELECT TX_CD FROM MKMTBUSTYP WHERE BUS_TYP=?
</Sentence>
<Fields>ISS_BUS_TYP|</Fields>
</DynSentence>
<Process>
<!-- 检查该交易码是否在订阅发布的范围内,不存在依然返回原交易码 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTBUSTYP_IN"/>
</Exec>
<If condition="IS_NOEQUAL_STRING($IS_EXISTS,Y)">
<Set>MY_TX_CD=STRCAT("('",$TX_CD,"')")</Set>
<Exec func="PUB:CmpSetMsg">
<!-- @msg交易成功 -->
<Arg name="MsgCd" value="MKM00000"/>
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!--订单直减、消费属于特例:同一业务类型具有不同的交易码且代表不同的类型-->
<If condition="IS_EQUAL_STRING($TX_CD,2011102,2011210,2015802)">
<If condition="IS_EQUAL_STRING($TX_CD,2011210)">
<Set>MY_TX_CD=STRCAT("('",$TX_CD,"')")</Set>
</If>
<Else>
<Set>MY_TX_CD=STRCAT("('",2011102,"')")</Set>
</Else>
<Exec func="PUB:CmpSetMsg">
<!-- @msg交易成功 -->
<Arg name="MsgCd" value="MKM00000"/>
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!--从营销业务类型表中查找该业务类型对应的交易码且生成sql中可用形式-->
<Else>
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_MKMTBUSTYP"/>
<Arg name="RecordName" value="BUSTYP.REC"/>
</Exec>
<!--业务类型表中不存在,依然返回原交易码-->
<If condition="~RetCod=2">
<Set>MY_TX_CD=STRCAT("('",$TX_CD,"')")</Set>
<Exec func="PUB:CmpSetMsg">
<!-- @msg交易成功 -->
<Arg name="MsgCd" value="MKM00000"/>
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!--业务类型表中存在,则进行拼接-->
<Set>INDEX=0</Set>
<Set>MY_TX_CD="("</Set>
<While condition="$INDEX &lt; $REC_NUM">
<Set>INDEX=ADD($INDEX,1)</Set>
<Set>BUS_TX_CD=$BUSTYP.REC[$INDEX].TX_CD</Set>
<!-- 去掉订单立减的情况 -->
<If condition="IS_NOEQUAL_STRING($BUS_TX_CD,2011102)">
<Set>MY_TX_CD=STRCAT($MY_TX_CD,',$BUS_TX_CD,')</Set>
<!--如果后面还有值,则添加逗号-->
<If condition="INTCMP($INDEX,1,$REC_NUM)">
<Set>MY_TX_CD=STRCAT($MY_TX_CD,",")</Set>
</If>
</If>
</While>
<!--添加右括号-->
<Set>MY_TX_CD=STRCAT($MY_TX_CD,")")</Set>
</Else>
<Exec func="PUB:CmpSetMsg">
<!-- @msg交易成功 -->
<Arg name="MsgCd" value="MKM00000"/>
<Arg name="MsgDat" value="交易成功"/>
</Exec>
</Process>
</Function>
</Package>