733 lines
32 KiB
XML
733 lines
32 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!-- BonusQuery_OrderRate-->
|
|
<!-- BON_INP_DAT-节点名称 -->
|
|
<!--输入参数:MKT_ID 活动编号 必输 -->
|
|
<!-- MERC_ID 商户编号 必输 -->
|
|
<!-- MBL_NO 用户手机号 必输 -->
|
|
<!-- USR_NO 内部用户号 必输 -->
|
|
<!-- ORD_TYP 订单类型 必输 -->
|
|
<!-- SYS_CNL 系统渠道 必输 -->
|
|
<!-- BUS_CNL 业务渠道 必输 -->
|
|
|
|
<!-- BON_OUT_DAT-节点名称 -->
|
|
<!-- AC_BAL 活动剩余金额 -->
|
|
<!-- USR_ACT_CNT 用户剩余参与次数 -->
|
|
|
|
<Function name="BonusQuery_OrderRate">
|
|
<Input>BON_INP_DAT|GWA|</Input>
|
|
<Output>BON_OUT_DAT|AC_BAL|USR_ACT_CNT|MSG_CD|MSG_DAT</Output>
|
|
|
|
<!-- 查询活动券别信息 -->
|
|
<DynSentence name="QRY_MKMTPINF_INFO">
|
|
<Sentence>
|
|
SELECT C.MKT_ID,C.PRD_ID,C.ISS_BUS_CNL,C.ISS_ORD_CAP_TYP,C.PRD_TYP,C.BEG_REF_AMT,
|
|
C.END_REF_AMT,C.ISS_BILL_AMT,A.ISS_TOT_AMT AS ISS_TOT_AMT1,A.ISS_CUR_AMT AS ISS_CUR_AMT1,
|
|
B.ISS_TOT_AMT AS ISS_TOT_AMT2,B.ISS_CUR_AMT AS ISS_CUR_AMT2,C.ISS_CUR_CNT,C.ISS_MAX_CNT,
|
|
C.OMBL_MAX_CNT,C.PERD_TYP,C.PRED,C.ISS_ID,C.PRD_NM,C.ISS_ID_TYP,A.CAP_ID_TYP,
|
|
A.CAP_ID,C.USE_BEG_REF_AMT,C.USE_END_REF_AMT,C.ISS_PCT,B.ISS_EFF_DT,
|
|
B.ISS_EXP_DT,C.CLR_TYP,C.DLY_TX_LMT,C.EFF_DT_CNT,C.ULT_CLR_DT,C.ISS_DLY_LMT,
|
|
C.LST_ISS_DT,C.ISS_DLY_CNT,B.OMBL_MAX_CNT AS ISSOMBL_MAX_CNT,B.PERD_TYP AS ISSPERD_TYP,
|
|
B.PRED AS ISSPRED,A.MKT_BON_FLG,C.ID_NO_FLG
|
|
FROM MKMTACT A,MKMTISS B,MKMTPINF C
|
|
WHERE (B.USR_LMT_TYP=0
|
|
OR (B.USR_LMT_TYP=1 AND B.ISS_PROV=?)
|
|
OR (B.USR_LMT_TYP=2 AND EXISTS(SELECT 'Y' FROM MKMTIAREA WHERE MKT_ID=B.MKT_ID AND ISS_ID=B.ISS_ID AND USR_PROV=? AND (USR_CITY='ALL' OR (USR_CITY=? AND USR_CITY_NM=?))))
|
|
OR (B.USR_LMT_TYP=3 AND EXISTS(SELECT 'Y' FROM MKMTIUSR WHERE MKT_ID=B.MKT_ID AND ISS_ID=B.ISS_ID AND MBL_NO=?)))
|
|
AND A.MKT_STS='A'
|
|
AND A.MKT_HLD_FLG='0'
|
|
AND B.ISS_EFF_DT <=?
|
|
AND B.ISS_EXP_DT >=?
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND B.MKT_ID=C.MKT_ID
|
|
AND B.ISS_ID=C.ISS_ID
|
|
AND A.MKT_ID=?
|
|
</Sentence>
|
|
<Fields>USR_PROV|USR_PROV|USR_CITY|USR_CITY_NM|MBL_NO|CUR_DT|CUR_DT|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询商户内部用户号、商户归属省、归属市、归属市名 -->
|
|
<DynSentence name="QRY_URMTMINF_USRNO">
|
|
<Sentence>
|
|
SELECT USR_NO AS MERC_USR_NO,MERC_CNM,MERC_PROV,MERC_CITY,MERC_CITY_NM
|
|
FROM URMTMINF
|
|
WHERE MERC_ID=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在发行方限定周期内领用电子券数量 -->
|
|
<DynSentence name="QRY_MKMTBON_BONCNT">
|
|
<Sentence>
|
|
SELECT COUNT(*) AS BON_CNT
|
|
FROM MKMTBON
|
|
WHERE USR_MBL_NO = ?
|
|
AND MKT_ID = ?
|
|
AND ISS_ID = ?
|
|
AND USR_NO= ?
|
|
AND ISS_DT BETWEEN ? AND ?
|
|
AND IS_TRANS = '0'
|
|
</Sentence>
|
|
<Fields>MBL_NO|MKT_ID|ISS_ID|USR_NO|ISS_PERD_EFF_DT|CUR_DT|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在券别指定天数时第一次领用电子券的日期-->
|
|
<DynSentence name="QRY_MKMTBON_PIFIR">
|
|
<Sentence>
|
|
SELECT MIN(ISS_DT) AS USR_FIR_DT
|
|
FROM MKMTBON
|
|
WHERE USR_MBL_NO = ?
|
|
AND MKT_ID = ?
|
|
AND USR_NO = ?
|
|
AND ISS_ID = ?
|
|
AND PRD_ID = ?
|
|
AND IS_TRANS = '0'
|
|
</Sentence>
|
|
<Fields>MBL_NO|MKT_ID|USR_NO|ISS_ID|PRD_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在券别限定周期内领用电子券数量 -->
|
|
<DynSentence name="QRY_MKMTBON_PBONCNT">
|
|
<Sentence>
|
|
SELECT COUNT(*) PBON_CNT
|
|
FROM MKMTBON
|
|
WHERE USR_MBL_NO = ?
|
|
AND MKT_ID = ?
|
|
AND ISS_ID = ?
|
|
AND USR_NO=?
|
|
AND PRD_ID = ?
|
|
AND ISS_DT BETWEEN ? AND ?
|
|
AND IS_TRANS = '0'
|
|
</Sentence>
|
|
<Fields>MBL_NO|MKT_ID|ISS_ID|USR_NO|PRD_ID|PRD_PERD_EFF_DT|CUR_DT|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在发行方指定天数时第一次领用电子券的日期-->
|
|
<DynSentence name="QRY_MKMTBON_IFIR">
|
|
<Sentence>
|
|
SELECT MIN(ISS_DT) AS USR_FIR_DT
|
|
FROM MKMTBON
|
|
WHERE USR_MBL_NO = ?
|
|
AND MKT_ID = ?
|
|
AND USR_NO=?
|
|
AND ISS_ID = ?
|
|
AND IS_TRANS = '0'
|
|
</Sentence>
|
|
<Fields>MBL_NO|MKT_ID|USR_NO|ISS_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_MKMTBON_BONCNT_BY_ID">
|
|
<Sentence>
|
|
SELECT COUNT(*) AS BON_CNT
|
|
FROM MKMTBON A
|
|
WHERE MKT_ID = ?
|
|
AND ISS_ID = ?
|
|
AND USR_NO= ?
|
|
AND ISS_DT BETWEEN ? AND ?
|
|
AND IS_TRANS = '0'
|
|
AND EXISTS (SELECT 1
|
|
FROM URMTPINF B
|
|
WHERE ID_NO = ?
|
|
AND ID_TYP = '00'
|
|
AND A.USR_MBL_NO = B.MBL_NO
|
|
AND USR_STS = '0')
|
|
</Sentence>
|
|
<Fields>MKT_ID|ISS_ID|USR_NO|ISS_PERD_EFF_DT|CUR_DT|ID_NO|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在券别指定天数时第一次领用电子券的日期-->
|
|
<DynSentence name="QRY_MKMTBON_PIFIR_BY_ID">
|
|
<Sentence>
|
|
SELECT MIN(ISS_DT) AS USR_FIR_DT
|
|
FROM MKMTBON A
|
|
WHERE MKT_ID = ?
|
|
AND USR_NO = ?
|
|
AND ISS_ID = ?
|
|
AND PRD_ID = ?
|
|
AND IS_TRANS = '0'
|
|
AND EXISTS (SELECT 1
|
|
FROM URMTPINF B
|
|
WHERE ID_NO = ?
|
|
AND ID_TYP = '00'
|
|
AND A.USR_MBL_NO = B.MBL_NO
|
|
AND USR_STS = '0')
|
|
</Sentence>
|
|
<Fields>MKT_ID|USR_NO|ISS_ID|PRD_ID|ID_NO</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在券别限定周期内领用电子券数量 -->
|
|
<DynSentence name="QRY_MKMTBON_PBONCNT_BY_ID">
|
|
<Sentence>
|
|
SELECT COUNT(*) PBON_CNT
|
|
FROM MKMTBON A
|
|
WHERE MKT_ID = ?
|
|
AND ISS_ID = ?
|
|
AND USR_NO=?
|
|
AND PRD_ID = ?
|
|
AND ISS_DT BETWEEN ? AND ?
|
|
AND IS_TRANS = '0'
|
|
AND EXISTS (SELECT 1
|
|
FROM URMTPINF B
|
|
WHERE ID_NO = ?
|
|
AND ID_TYP = '00'
|
|
AND A.USR_MBL_NO = B.MBL_NO
|
|
AND USR_STS = '0')
|
|
</Sentence>
|
|
<Fields>MKT_ID|ISS_ID|USR_NO|PRD_ID|PRD_PERD_EFF_DT|CUR_DT|ID_NO|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询用户在发行方指定天数时第一次领用电子券的日期-->
|
|
<DynSentence name="QRY_MKMTBON_IFIR_BY_ID">
|
|
<Sentence>
|
|
SELECT MIN(ISS_DT) AS USR_FIR_DT
|
|
FROM MKMTBON A
|
|
WHERE MKT_ID = ?
|
|
AND USR_NO=?
|
|
AND ISS_ID = ?
|
|
AND IS_TRANS = '0'
|
|
AND EXISTS (SELECT 1
|
|
FROM URMTPINF B
|
|
WHERE ID_NO = ?
|
|
AND ID_TYP = '00'
|
|
AND A.USR_MBL_NO = B.MBL_NO
|
|
AND USR_STS = '0')
|
|
</Sentence>
|
|
<Fields>MKT_ID|USR_NO|ISS_ID|ID_NO</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询商户是否适用于此活动 -->
|
|
<DynSentence name="QRY_MKMTMERC">
|
|
<Sentence>
|
|
SELECT 'Y' ISEXISTS
|
|
FROM DUAL
|
|
WHERE EXISTS
|
|
(SELECT *
|
|
FROM MKMTMERC
|
|
WHERE PRD_ID = ?
|
|
AND MKT_ID = ?
|
|
AND ((MERC_ID = ? AND IS_GRP = '0') OR
|
|
(MERC_ID IN
|
|
(SELECT MERC_GRP
|
|
FROM PAYADM.MKMTMERCRL
|
|
WHERE MERC_ID = ?) AND IS_GRP = '1')))
|
|
|
|
</Sentence>
|
|
<Fields>PRD_ID|MKT_ID|MERC_ID|MERC_ID|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_USR_IDNO_INFO">
|
|
<Sentence>
|
|
SELECT ID_NO,MBL_NO FROM URMTPINF WHERE ID_TYP = '00' AND MBL_NO = ? AND USR_STS='0'
|
|
</Sentence>
|
|
<Fields>MBL_NO|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<Set>MBL_NO=DELBOTHSPACE($BON_INP_DAT.MBL_NO)</Set>
|
|
<Set>USR_NO=DELBOTHSPACE($BON_INP_DAT.USR_NO)</Set>
|
|
<Set>MERC_ID=DELBOTHSPACE($BON_INP_DAT.MERC_ID)</Set>
|
|
<Set>MKT_ID =DELBOTHSPACE($BON_INP_DAT.MKT_ID )</Set>
|
|
<Set>ORD_TYP=DELBOTHSPACE($BON_INP_DAT.ORD_TYP)</Set>
|
|
<Set>BUS_CNL=DELBOTHSPACE($BON_INP_DAT.BUS_CNL)</Set>
|
|
<Set>SYS_CNL=DELBOTHSPACE($BON_INP_DAT.SYS_CNL)</Set>
|
|
<Set>SYS_DT=$GWA.AC_DT</Set>
|
|
<Set>USE_BUS_TYP=$BUS_TYP</Set>
|
|
<Set>CUR_DT=$GWA.AC_DT</Set>
|
|
<!-- 输出项赋值 -->
|
|
<Set>USR_ACT_CNT=0</Set> <!-- 用户剩余参与次数初始值 -->
|
|
<Set>AC_BAL=0</Set>
|
|
<!--必输项检查-->
|
|
<If condition="ISNULL($MBL_NO)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM10232"/>
|
|
<Arg name="MsgDat" value="用户手机号不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($USR_NO)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg 商户编号不能为空 -->
|
|
<Arg name="MsgCd" value="MKM40001"/>
|
|
<Arg name="MsgDat" value="用户号不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($MERC_ID)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg 商户编号不能为空 -->
|
|
<Arg name="MsgCd" value="MKM20200"/>
|
|
<Arg name="MsgDat" value="商户编号不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($MKT_ID)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM42010"/>
|
|
<Arg name="MsgDat" value="活动号不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($SYS_CNL)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM42011"/>
|
|
<Arg name="MsgDat" value="系统渠道不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($BUS_CNL)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41217"/>
|
|
<Arg name="MsgDat" value="业务渠道不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- @add 2012-11-09 -->
|
|
<!-- 调用手机号段查询 -->
|
|
<Set>INP_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Call function="GetMobilNoSegmentNew" package="URM">
|
|
<Input>INP_DAT</Input>
|
|
<Output>OUT_DAT|MSG_CD</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=1">
|
|
<If condition="IS_NOEQUAL_STRING(@O.OUT_DAT.MBL_FLG,1)">
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=0</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<!-- end -->
|
|
|
|
<If condition="IS_NOEQUAL_STRING($USR_NO,0)"> <!-- 未开户用户跳过检查 -->
|
|
<Call function="Query_MBLNO_USRNO" package="MKM">
|
|
<Input>MBL_NO|USR_NO|</Input>
|
|
<Output>MSG_CD|MSG_DAT|MBL_NO|USR_NO|USR_PROV|USR_CITY|USR_CITY_NM|USR_STS|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>MBL_NO=@O.MBL_NO</Set>
|
|
<Set>OUSR_NO=@O.USR_NO</Set>
|
|
<Set>USR_PROV=@O.USR_PROV</Set>
|
|
<Set>USR_CITY=@O.USR_CITY</Set>
|
|
<Set>USR_CITY_NM=@O.USR_CITY_NM</Set>
|
|
<Set>USR_STS=@O.USR_STS</Set>
|
|
<!-- 对于销户、待销户的状态不可以使用-->
|
|
<If condition="IS_EQUAL_STRING($USR_STS,1,3)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM40002" />
|
|
<Arg name="MsgDat" value="销户或待销户的用户不符合此次活动资格"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<!-- 查询商户内部用户号、商户归属省、归属市、归属市名 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_USRNO"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该商户 -->
|
|
<Arg name="MsgCd" value="MKM20210"/>
|
|
<Arg name="MsgDat" value="不存在该商户"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>USR_NO=#ORD_RAT_USR_NO</Set>
|
|
<!-- 查询活动的状态及截止时间及余额 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPINF_INFO" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该营销工具 -->
|
|
<Arg name="MsgCd" value="MKM21004"/>
|
|
<Arg name="MsgDat" value="不存在该营销工具"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该营销工具 -->
|
|
<Arg name="MsgCd" value="MKM21004"/>
|
|
<Arg name="MsgDat" value="不存在该营销工具"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 判断活动生效和截止时间 -->
|
|
<If condition="INTCMP($CUR_DT,1,$ISS_EFF_DT)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM40004"/>
|
|
<Arg name="MsgDat" value="此营销活动还未生效"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<If condition="INTCMP($CUR_DT,6,$ISS_EXP_DT)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM40005"/>
|
|
<Arg name="MsgDat" value="此营销活动已失效"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 计算活动余额 -->
|
|
<Set>MKM_TOT_CUR=FSUB($ISS_TOT_AMT1,$ISS_CUR_AMT1,2)</Set>
|
|
<If condition="DOUBLECMP($MKM_TOT_CUR,2,0)" >
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=0</Set>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>AC_BAL=$MKM_TOT_CUR</Set>
|
|
</Else>
|
|
<!-- 检查商户是否适用用此活动 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTMERC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该商户 -->
|
|
<Arg name="MsgCd" value="MKM42010"/>
|
|
<Arg name="MsgDat" value="此商户不适用于此活动"/>
|
|
</Exec>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 检查每日发放数量限制,配置了每日发放数量 -->
|
|
<If condition="AND(NOT(ISNULL(DELBOTHSPACE($ISS_DLY_LMT))),IS_NOEQUAL_STRING($ISS_DLY_LMT,0))">
|
|
<!-- 只有当上次发放日期等于本次发放日期时,才检查 -->
|
|
<If condition="IS_EQUAL_STRING($CUR_DT,$LST_ISS_DT)">
|
|
<Set>ISS_D_FLG=F</Set>
|
|
<Set>ISS_DLY_CNTT=ADD($ISS_DLY_CNT,1)</Set>
|
|
<If condition="INTCMP($ISS_DLY_CNTT,6,$ISS_DLY_LMT)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>USR_ACT_CNT0=SUB($ISS_DLY_LMT,$ISS_DLY_CNT)</Set>
|
|
</Else>
|
|
</If>
|
|
<Else>
|
|
<Set>USR_ACT_CNT0=$ISS_DLY_LMT</Set>
|
|
</Else>
|
|
</If>
|
|
<If condition="IS_EQUAL_STRING($ID_NO_FLG,2)">
|
|
<!-- 查询用户身份证号信息 -->
|
|
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_USR_IDNO_INFO" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>ID_NO=0</Set>
|
|
</If>
|
|
<ElseIf condition="~RetCod=0">
|
|
<Set>ID_NO=$ID_NO</Set>
|
|
</ElseIf>
|
|
<If condition="IS_EQUAL_STRING($ID_NO,0)">
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=1</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<Set>USR_ACT_CNT1=1</Set>
|
|
<Set>USR_ACT_CNT2=1</Set>
|
|
<!-- 若发行方限制单一用户领用次数则执行检查 -->
|
|
<If condition="INTCMP($ISSOMBL_MAX_CNT,gt,0)">
|
|
<!-- 发行方限定周期类型 -->
|
|
<Switch expression="$ISSPERD_TYP">
|
|
<!-- 不限制周期 -->
|
|
<Case value="0">
|
|
<Set>ISS_PERD_EFF_DT=$ISS_EFF_DT</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按日情况-->
|
|
<Case value="1">
|
|
<Set>ISS_PERD_EFF_DT=$CUR_DT</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按周情况-->
|
|
<Case value="2">
|
|
<!--计算该周周一日期-->
|
|
<Exec func="PUB:GetNextPeriod">
|
|
<Arg name="CurTime" value="$CUR_DT" />
|
|
<Arg name="Period" value="W" />
|
|
<Arg name="BegDate" value="BEG_DT" />
|
|
<Arg name="EndDate" value="END_DT" />
|
|
</Exec>
|
|
<Set>ISS_PERD_EFF_DT=CALCDATE($BEG_DT,-,d,7)</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按月情况-->
|
|
<Case value="3">
|
|
<Set>ISS_PERD_EFF_DT=STRCAT(SUBSTR($CUR_DT,1,6),01)</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按指定天数情况-->
|
|
<Case value="4">
|
|
<!--查询用户第一次领取电子券日期-->
|
|
<If condition="IS_EQUAL_STRING($ID_NO_FLG,2)">
|
|
<Set>QRY_CMD=QRY_MKMTBON_IFIR_BY_ID</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>QRY_CMD=QRY_MKMTBON_IFIR</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="$QRY_CMD"/> <!-- QRY_MKMTBON_IFIR -->
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41329"/>
|
|
<Arg name="MsgDat" value="系统忙,请稍后再试"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 未领取过则不再检查 -->
|
|
<If condition="ISNULL(DELBOTHSPACE($USR_FIR_DT))">
|
|
<Set>ISS_PERD_EFF_DT=99999999</Set>
|
|
<Break />
|
|
</If>
|
|
|
|
<!-- 已领取过则计算本次周期第一天日期-->
|
|
<Set>DIFFDAYS=DIFFDATE($USR_FIR_DT,$CUR_DT)</Set>
|
|
<Set>PERDDAYS=MOD($DIFFDAYS,$ISSPRED)</Set>
|
|
<Set>ISS_PERD_EFF_DT=CALCDATE($CUR_DT,-,d,$PERDDAYS)</Set>
|
|
<Break />
|
|
</Case>
|
|
<Default>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Return/>
|
|
</Default>
|
|
</Switch>
|
|
<!-- 查询用户周期内电子券领用次数 -->
|
|
<If condition="IS_EQUAL_STRING($ID_NO_FLG,2)">
|
|
<Set>QRY_CMD=QRY_MKMTBON_BONCNT_BY_ID</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>QRY_CMD=QRY_MKMTBON_BONCNT</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="$QRY_CMD"/> <!-- QRY_MKMTBON_BONCNT -->
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41329"/>
|
|
<Arg name="MsgDat" value="系统忙,请稍后再试"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 若领用次数超限,则退出 -->
|
|
<If condition="INTCMP($BON_CNT,ge,$ISSOMBL_MAX_CNT)">
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>ISS_FLG=T</Set>
|
|
<Set>USR_ACT_CNT2=SUB($ISSOMBL_MAX_CNT,$BON_CNT)</Set>
|
|
</Else>
|
|
</If>
|
|
|
|
<!-- 若券别限制单一手机号领用次数则执行检查 -->
|
|
<If condition="INTCMP($OMBL_MAX_CNT,gt,0)">
|
|
<!-- 发行方限定周期类型 -->
|
|
<Switch expression="$PERD_TYP">
|
|
<!-- 不限制周期 -->
|
|
<Case value="0">
|
|
<Set>PRD_PERD_EFF_DT=$ISS_EFF_DT</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按日情况-->
|
|
<Case value="1">
|
|
<Set>PRD_PERD_EFF_DT=$CUR_DT</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按周情况-->
|
|
<Case value="2">
|
|
<!--计算该周周一日期-->
|
|
<Exec func="PUB:GetNextPeriod">
|
|
<Arg name="CurTime" value="$CUR_DT" />
|
|
<Arg name="Period" value="W" />
|
|
<Arg name="BegDate" value="Beg_Dt" />
|
|
<Arg name="EndDate" value="End_Dt" />
|
|
</Exec>
|
|
<Set>PRD_PERD_EFF_DT=CALCDATE($BEG_DT,-,d,7)</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按月情况-->
|
|
<Case value="3">
|
|
<Set>PRD_PERD_EFF_DT=STRCAT(SUBSTR($CUR_DT,1,6),01)</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<!--周期按指定天数情况-->
|
|
<Case value="4">
|
|
<!--查询用户第一次领取电子券日期-->
|
|
<If condition="IS_EQUAL_STRING($ID_NO_FLG,2)">
|
|
<Set>QRY_CMD=QRY_MKMTBON_PIFIR_BY_ID</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>QRY_CMD=QRY_MKMTBON_PIFIR</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="$QRY_CMD"/> <!-- QRY_MKMTBON_PIFIR -->
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41329"/>
|
|
<Arg name="MsgDat" value="系统忙,请稍后再试"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 未领取过则不再检查 -->
|
|
<If condition="ISNULL(DELBOTHSPACE($USR_FIR_DT))">
|
|
<Set>PRD_PERD_EFF_DT=99999999</Set>
|
|
<Break />
|
|
</If>
|
|
|
|
<!-- 已领取过则计算本次周期第一天日期-->
|
|
<Set>DIFFDAYS=DIFFDATE($USR_FIR_DT,$CUR_DT)</Set>
|
|
<Set>PERDDAYS=MOD($DIFFDAYS,$PRED)</Set>
|
|
<Set>PRD_PERD_EFF_DT=CALCDATE($CUR_DT,-,d,$PERDDAYS)</Set>
|
|
<Break />
|
|
</Case>
|
|
|
|
<Default>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Default>
|
|
</Switch>
|
|
|
|
<!-- 查询用户周期内电子券领用次数 -->
|
|
<If condition="IS_EQUAL_STRING($ID_NO_FLG,2)">
|
|
<Set>QRY_CMD=QRY_MKMTBON_PBONCNT_BY_ID</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>QRY_CMD=QRY_MKMTBON_PBONCNT</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="$QRY_CMD"/> <!-- QRY_MKMTBON_PBONCNT -->
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41329"/>
|
|
<Arg name="MsgDat" value="系统忙,请稍后再试"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="INTCMP($PBON_CNT,ge,$OMBL_MAX_CNT)">
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=0</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>PRD_FLG=T</Set>
|
|
<Set>USR_ACT_CNT1=SUB($OMBL_MAX_CNT,$PBON_CNT)</Set>
|
|
</Else>
|
|
</If>
|
|
|
|
<!-- 单一手机号券别与发行方都不限制 -->
|
|
<If condition="AND(INTCMP($ISSOMBL_MAX_CNT,eq,0),INTCMP($OMBL_MAX_CNT,eq,0))"> <!-- 对手机号无限制 -->
|
|
<!-- 判断是否每日发放有限制 -->
|
|
<If condition="OR(ISNULL(DELBOTHSPACE($ISS_DLY_LMT)),IS_EQUAL_STRING($ISS_DLY_LMT,0))"> <!-- 判断是否有每日限制发放数 -->
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=999999</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=$USR_ACT_CNT0</Set> <!-- 每日限发多少张电子券数 -->
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
</If>
|
|
|
|
<!-- 发行方与券别都限制,取最小 -->
|
|
<If condition="AND(IS_EQUAL_STRING($ISS_FLG,T),IS_EQUAL_STRING($PRD_FLG,T))">
|
|
<If condition="INTCMP($USR_ACT_CNT1,1,$USR_ACT_CNT2)">
|
|
<Set>USR_ACT_CNT=$USR_ACT_CNT1</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>USR_ACT_CNT=$USR_ACT_CNT2</Set>
|
|
</Else>
|
|
</If>
|
|
<!-- 券别限制。取券别限制 -->
|
|
<If condition="AND(ISNULL($ISS_FLG),IS_EQUAL_STRING($PRD_FLG,T))">
|
|
<Set>USR_ACT_CNT=$USR_ACT_CNT1</Set>
|
|
</If>
|
|
<!-- 发行方限制,取发行方限制 -->
|
|
<If condition="AND(ISNULL($PRD_FLG),IS_EQUAL_STRING($ISS_FLG,T))">
|
|
<Set>USR_ACT_CNT=$USR_ACT_CNT2</Set>
|
|
</If>
|
|
|
|
|
|
<Set>BON_OUT_DAT.USR_ACT_CNT=$USR_ACT_CNT</Set>
|
|
<Set>BON_OUT_DAT.AC_BAL=$AC_BAL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
|
|
<Exec func="PUB:DumpETF"/>
|
|
</Process>
|
|
</Function>
|
|
</Package> |