396 lines
16 KiB
XML
396 lines
16 KiB
XML
<?xml version="1.0" encoding='UTF-8'?>
|
|
<Root>
|
|
<!-- DNF道具发放 -->
|
|
<Function name="IssDNF">
|
|
<Input>INP_DAT|GWA|</Input>
|
|
<Output>OUT_DAT|MSG_CD|MSG_DAT|</Output>
|
|
|
|
<!-- 查询奖品发放规则表 -->
|
|
<DynSentence name="QRY_MKMTPRZRULE">
|
|
<Sentence>
|
|
SELECT DISTINCT RM_NUM FROM MKMTPRZRULE
|
|
WHERE PRZ_TYP = ? AND EFF_DT <= ? AND EXP_DT >= ?
|
|
AND BEG_REF_AMT <= ? AND END_REF_AMT > ?
|
|
</Sentence>
|
|
<Fields>PRZ_TYP|TX_SYS_DT|TX_SYS_DT|PE_AMT|PE_AMT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询奖品发放规则表 -->
|
|
<DynSentence name="QRY_MKMTPRZRULE_RUL">
|
|
<Sentence>
|
|
SELECT * FROM MKMTPRZRULE
|
|
WHERE PRZ_TYP = ? AND EFF_DT <= ? AND EXP_DT >= ?
|
|
AND BEG_REF_AMT <= ? AND END_REF_AMT > ? AND PRZ_RUL_ID = ?
|
|
</Sentence>
|
|
<Fields>PRZ_TYP|TX_SYS_DT|TX_SYS_DT|PE_AMT|PE_AMT|PRZ_RUL_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询推荐号码本月已推荐他人缴话费次数 -->
|
|
<DynSentence name="QRY_MKMTRMPC_RMCNT">
|
|
<Sentence>
|
|
SELECT NVL(COUNT(*),0) AS NOW_RM_CNT FROM MKMTRMPC
|
|
WHERE RM_MBL_NO = ? AND IS_DNF_RM='1' AND TX_SYS_DT BETWEEN ? AND ?
|
|
</Sentence>
|
|
<Fields>RM_MBL_NO|MM_BEG_DT|MM_END_DT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询奖品发放总量 -->
|
|
<DynSentence name="QRY_MKMTPRIZE_RULCNT">
|
|
<Sentence>
|
|
SELECT NVL(COUNT(*),0) AS ISS_CNT
|
|
FROM MKMTPRIZE WHERE ISS_STS='1' AND PRZ_RUL_ID=? AND ISS_DT BETWEEN ? AND ?
|
|
</Sentence>
|
|
<Fields>PRZ_RUL_ID|EFF_DT|TX_SYS_DT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新中奖随机数 -->
|
|
<DynSentence name="UPD_MKMTPRZRULE">
|
|
<Sentence>
|
|
UPDATE MKMTPRZRULE SET RAD_NUM=? WHERE PRZ_RUL_ID = ?
|
|
</Sentence>
|
|
<Fields>RAD_NUM|PRZ_RUL_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询奖品存量 -->
|
|
<DynSentence name="QRY_MKMTPRIZE_CNT">
|
|
<Sentence>
|
|
SELECT NVL(COUNT(*),0) AS PRZ_CNT FROM MKMTPRIZE
|
|
WHERE PRZ_RUL_ID = ? AND ISS_STS = '0'
|
|
</Sentence>
|
|
<Fields>PRZ_RUL_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询推荐号码本月已推荐他人缴话费次数 -->
|
|
<DynSentence name="QRY_MKMTRMPC_DNFSTS">
|
|
<Sentence>
|
|
SELECT NVL(COUNT(*),0) AS DNF_RM_CNT FROM MKMTRMPC
|
|
WHERE RM_MBL_NO = ? AND IS_DNF_RM='1' AND TX_SYS_DT BETWEEN ? AND ? AND DNF_PRZ_STS = '0'
|
|
</Sentence>
|
|
<Fields>RM_MBL_NO|MM_BEG_DT|MM_END_DT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新推荐关系表 -->
|
|
<DynSentence name="UPD_MKMTRMPC">
|
|
<Sentence>
|
|
UPDATE MKMTRMPC SET DNF_PRZ_STS='1' WHERE RM_MBL_NO = ? AND IS_DNF_RM='1' AND DNF_PRZ_STS = '0' AND TX_SYS_DT BETWEEN ? AND ? AND ROWNUM <= ?
|
|
</Sentence>
|
|
<Fields>RM_MBL_NO|MM_BEG_DT|MM_END_DT|RM_NUM|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询奖品信息 -->
|
|
<DynSentence name="QRY_MKMTPRIZE">
|
|
<Sentence>
|
|
SELECT PRZ_CD,PRO_NM FROM MKMTPRIZE WHERE ISS_STS='0' AND PRZ_RUL_ID=? AND ROWNUM='1' FOR UPDATE
|
|
</Sentence>
|
|
<Fields>PRZ_RUL_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新奖品信息 -->
|
|
<DynSentence name="UPD_MKMTPRIZE">
|
|
<Sentence>
|
|
UPDATE MKMTPRIZE SET ISS_STS='1',MBL_NO=?,USR_NO=?,USR_PROV=?,
|
|
USR_CITY_NM=?,USR_CITY=?,ISS_DT=?,ISS_TM=?
|
|
WHERE ISS_STS='0'
|
|
AND PRZ_CD=?
|
|
AND PRZ_RUL_ID=?
|
|
</Sentence>
|
|
<Fields>RM_MBL_NO|USR_NO|USR_PROV|USR_CITY_NM|USR_CITY|TX_SYS_DT|TX_SYS_TM|PRZ_CD|PRZ_RUL_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<Process>
|
|
<Set>TX_SYS_DT=DELBOTHSPACE($INP_DAT.TX_SYS_DT)</Set> <!-- 交易日期 -->
|
|
<Set>TX_SYS_TM=DELBOTHSPACE($INP_DAT.TX_SYS_TM)</Set> <!-- 交易时间 -->
|
|
<Set>PE_AMT=DELBOTHSPACE($INP_DAT.PE_AMT)</Set> <!-- 缴费金额 -->
|
|
<Set>MM_BEG_DT=DELBOTHSPACE($INP_DAT.MM_BEG_DT)</Set> <!-- 月初 -->
|
|
<Set>MM_END_DT=DELBOTHSPACE($INP_DAT.MM_END_DT)</Set> <!-- 月末 -->
|
|
<Set>RM_MBL_NO=DELBOTHSPACE($INP_DAT.RM_MBL_NO)</Set> <!-- 推荐号码 -->
|
|
<Set>USR_NO=DELBOTHSPACE($INP_DAT.USR_NO)</Set>
|
|
<Set>USR_PROV=DELBOTHSPACE($INP_DAT.USR_PROV)</Set>
|
|
<Set>USR_CITY=DELBOTHSPACE($INP_DAT.USR_CITY)</Set>
|
|
<Set>USR_CITY_NM=DELBOTHSPACE($INP_DAT.USR_CITY_NM)</Set>
|
|
<Set>PRZ_TYP=DNF</Set> <!-- 奖品类型 -->
|
|
|
|
<!-- 查询奖品规则信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPRZRULE"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="MKM64013"/>
|
|
<Arg name="MsgDat" value="查询奖品规则信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="MKM64014"/>
|
|
<Arg name="MsgDat" value="没有符合发放要求的奖品"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!-- 查询推荐号码本月已通过DNF链接推荐他人缴话费次数 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTRMPC_RMCNT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60008"/>
|
|
<Arg name="MsgDat" value="查询推荐号码本月已推荐他人缴话费次数失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60009"/>
|
|
<Arg name="MsgDat" value="查询推荐号码本月已推荐他人缴话费次数找不到记录"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Set>TMP_RM_NUM=DIV($NOW_RM_CNT,$RM_NUM)</Set>
|
|
<If condition="INTCMP($TMP_RM_NUM,lt,1)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60010"/>
|
|
<Arg name="MsgDat" value="推荐号码本月推荐他人缴话费的次数还不满足领取奖品的条件"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="INTCMP($TMP_RM_NUM,gt,5)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60010"/>
|
|
<Arg name="MsgDat" value="推荐号码本月推荐他人缴话费的次数还不满足领取奖品的条件"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<!-- 查询推荐号码本月已通过DNF链接推荐他人缴话费还未参与活动的次数 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTRMPC_DNFSTS"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60008"/>
|
|
<Arg name="MsgDat" value="查询推荐号码本月已推荐他人缴话费次数失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60009"/>
|
|
<Arg name="MsgDat" value="查询推荐号码本月已推荐他人缴话费次数找不到记录"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<If condition="INTCMP($DNF_RM_CNT,lt,$RM_NUM)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60010"/>
|
|
<Arg name="MsgDat" value="推荐号码本月推荐他人缴话费的次数还不满足领取奖品的条件"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 去掉降档发放的逻辑
|
|
<Set>CNT=0</Set>
|
|
<While condition="INTCMP($TMP_RM_NUM,ge,1)">
|
|
<Set>CNT=ADD($CNT,1)</Set>
|
|
-->
|
|
<Set>PRZ_RUL_ID=STRCAT(DNF,$TMP_RM_NUM)</Set> <!-- 拼奖品类型 -->
|
|
<!-- 查询奖品规则信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPRZRULE_RUL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="MKM64013"/>
|
|
<Arg name="MsgDat" value="查询奖品规则信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64014"/>
|
|
<Arg name="MsgDat" value="没有符合发放要求的奖品"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<If condition="IS_EQUAL_INT($RAD_NUM,2)">
|
|
<Set>RAD_NUM=1</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>RAD_NUM=ADD($RAD_NUM,1)</Set>
|
|
</Else>
|
|
<!--If condition="IS_EQUAL_STRING($CNT,1)"-->
|
|
<!-- 更新中奖随机数 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTPRZRULE"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64018"/>
|
|
<Arg name="MsgDat" value="更新中奖随机数失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<If condition="IS_NOEQUAL_STRING($RAD_NUM,2)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64022"/>
|
|
<Arg name="MsgDat" value="幸运数字未达到发放条件"/>
|
|
</Exec>
|
|
<!-- 更新推荐关系表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTRMPC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60011"/>
|
|
<Arg name="MsgDat" value="更新推荐关系表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Return/>
|
|
</If>
|
|
<!--/If-->
|
|
<!-- 查询奖品已发放总量 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPRIZE_RULCNT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64016"/>
|
|
<Arg name="MsgDat" value="查询奖品已发放总量失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64016"/>
|
|
<Arg name="MsgDat" value="查询奖品已发放总量失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Set>DT_NUM=DIFFDATE($EFF_DT,$TX_SYS_DT)</Set><!-- 计算系统日期与奖品发放生效日期之间的天数 -->
|
|
<Set>MUL_NUM=ADD($DT_NUM,1)</Set><!-- 相差天数加上今天 -->
|
|
<Set>MAX_CNT=MUL($DT_MAX_CNT,$MUL_NUM)</Set><!-- 计算目前允许发放的最大奖品数 -->
|
|
|
|
<If condition="INTCMP($ISS_CNT,ge,$MAX_CNT)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64017"/>
|
|
<Arg name="MsgDat" value="该时间段奖品已发放完毕"/>
|
|
</Exec>
|
|
<!-- 更新推荐关系表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTRMPC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60011"/>
|
|
<Arg name="MsgDat" value="更新推荐关系表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Return/>
|
|
<!--Set>TMP_RM_NUM=SUB($TMP_RM_NUM,1)</Set>
|
|
<Continue/-->
|
|
</If>
|
|
|
|
<!-- 查询该档次奖品的存量 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPRIZE_CNT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64013"/>
|
|
<Arg name="MsgDat" value="查询奖品规则信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64014"/>
|
|
<Arg name="MsgDat" value="没有符合发放要求的奖品"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<If condition="INTCMP($PRZ_CNT,lt,1)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64020"/>
|
|
<Arg name="MsgDat" value="该奖品库存不足"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 去掉降档逻辑
|
|
<Else>
|
|
<Set>TMP_RM_NUM=SUB($TMP_RM_NUM,1)</Set>
|
|
</Else>
|
|
</While>
|
|
-->
|
|
|
|
<!-- 更新推荐关系表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTRMPC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60011"/>
|
|
<Arg name="MsgDat" value="更新推荐关系表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 查询奖品信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPRIZE"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64019"/>
|
|
<Arg name="MsgDat" value="查询奖品信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64020"/>
|
|
<Arg name="MsgDat" value="该奖品库存不足"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<Set>MBL_NO=$RM_MBL_NO</Set>
|
|
<!-- 更新奖品信息表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTPRIZE"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM64021"/>
|
|
<Arg name="MsgDat" value="更新奖品信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>SMS_TMP_ID=MKM712</Set><!-- 短信模板ID -->
|
|
<Set>REP_VALS=STRCAT($PRO_NM,|,$PRZ_CD,|)</Set><!-- 短信参数 -->
|
|
<!--异步发送短信-->
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="0305010"/>
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
<Arg name="LogID" value="OMKMPUB1"/>
|
|
<Arg name="ObjSvr" value="OMKMPUB1"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM22039" />
|
|
<Arg name="MsgDat" value="短信发送失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
</Process>
|
|
</Function>
|
|
</Root>
|