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

263 lines
11 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Package>
<!-- 用户参与活动资格查询组件PFBK_BonusQuery)-->
<!--输入参数:MBL_NO 手机号 选输 -->
<!-- USR_NO 内部用户号 必输 -->
<!-- MERC_ID 商户号 必输 -->
<!-- RAT_AMT 折扣金额 必输 -->
<!-- BUS_TYP 业务类型 必输 -->
<!-- BUS_CNL 业务渠道 必输 -->
<!-- OUT_DAT USR_ACT_FLG 用户可参与标志 -->
<Function name="PFBK_BonusQuery">
<Input>INP_DAT|GWA|</Input>
<Output>OUT_DAT|MSG_CD|MSG_DAT</Output>
<!--查询该商是否是聚惠啦 商户-->
<DynSentence name="QRY_MERC_IS_EFF">
<Sentence>
SELECT A.MERC_ID, A.IS_GRP,B.MERC_ID,A.MKT_ID
FROM PAYADM.MKMTMERC A, PAYADM.MKMTMERCRL B
WHERE A.MERC_STS = 'A'
AND B.MERC_GRP='1207060001'
AND A.MERC_ID = B.MERC_GRP
AND B.MERC_ID NOT IN ('888009953110001','888009948160002')
AND B.MERC_ID=?
AND MKT_ID=?
</Sentence>
<Fields>MERC_ID|MKT_ID</Fields>
</DynSentence>
<!-- 查询用记身份证号 -->
<DynSentence name="QRY_USR_IDNO_INFO">
<Sentence>
SELECT ID_NO,MBL_NO ,USR_NO FROM URMTPINF WHERE ID_TYP = '00' AND USR_NO = ? AND MBL_NO = ?
</Sentence>
<Fields>USR_NO|MBL_NO</Fields>
</DynSentence>
<!--查询用户当前月是否享受过订单直减-->
<DynSentence name="QRY_USR_SUIT_MKT1">
<Sentence>
SELECT * FROM MKMTPRIZE
WHERE PRZ_CD=? AND PRZ_RUL_ID=? AND ISS_DT BETWEEN ? AND ?
</Sentence>
<Fields>ID_NO|MOT_DT|STA_DT|ISS_DT</Fields>
</DynSentence>
<!-- 查询 浦发快捷支付活动奖品规则信息表-->
<DynSentence name="QRY_MKT_INFO">
<Sentence>
SELECT PRZ_RUL_ID AS MKT_ID ,EFF_DT,EXP_DT ,PRZ_TYP PUB_USR FROM PAYADM.MKMTPRZRULE WHERE PRZ_NM='浦发快捷支付活动'
</Sentence>
</DynSentence>
<DynSentence name="QRY_MKT_CUR_BAL">
<Sentence>
SELECT NVL(SUM(CUR_AC_BAL),0) USE_AMT FROM MKMTBON WHERE BON_STS='A' AND MKT_ID=? AND USR_MBL_NO=?
</Sentence>
<Fields>MKT_ID|PUB_USR|</Fields>
</DynSentence>
<Process>
<Set>MBL_NO=DELBOTHSPACE($INP_DAT.MBL_NO)</Set>
<Set>USR_NO=DELBOTHSPACE($INP_DAT.USR_NO)</Set>
<Set>MERC_ID=DELBOTHSPACE($INP_DAT.MERC_ID)</Set>
<Set>RAT_AMT=DELBOTHSPACE($INP_DAT.RAT_AMT)</Set>
<Set>BUS_TYP=DELBOTHSPACE($INP_DAT.BUS_TYP)</Set>
<Set>BUS_CNL=DELBOTHSPACE($INP_DAT.BUS_CNL)</Set>
<Set>SYS_DT=$GWA.AC_DT</Set>
<Set>USE_BUS_TYP=$BUS_TYP</Set>
<!-- 输出项赋值 -->
<Set>OUT_DAT.USR_ACT_FLG=Y</Set>
<!--必输项检查-->
<If condition="ISNULL($MBL_NO)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM10232"/>
<Arg name="MsgDat" value="用户手机号不能为空"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<If condition="ISNULL($USR_NO)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg 商户编号不能为空 -->
<Arg name="MsgCd" value="MKM40001"/>
<Arg name="MsgDat" value="用户号不能为空"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<If condition="ISNULL($MERC_ID)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg 商户编号不能为空 -->
<Arg name="MsgCd" value="MKM20200"/>
<Arg name="MsgDat" value="商户编号不能为空"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<If condition="ISNULL($BUS_CNL)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM41217"/>
<Arg name="MsgDat" value="业务渠道不能为空"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<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>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<Set>MBL_NO=@O.MBL_NO</Set>
<Set>USR_NO=@O.USR_NO</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>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<!-- 查询快捷活动编号 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKT_INFO"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CmpSetMsg">
<!-- @msg不存在快捷营销活动-->
<Arg name="MsgCd" value="MKM40003"/>
<Arg name="MsgDat" value="营销活动不存在"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg不存在快捷营销活动-->
<Arg name="MsgCd" value="MKM40003"/>
<Arg name="MsgDat" value="营销活动不存在"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<Set>MKT_ID=$MKT_ID</Set>
<Set>CUR_DT=$GWA.TX_DT</Set>
<If condition="INTCMP($CUR_DT,1,$EFF_DT)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg不存在快捷营销活动-->
<Arg name="MsgCd" value="MKM40004"/>
<Arg name="MsgDat" value="此营销活动还未生效"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<If condition="INTCMP($CUR_DT,6,$EXP_DT)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM40005"/>
<Arg name="MsgDat" value="此营销活动已失效"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<!--查询该商户是否满足订单扣减资格-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MERC_IS_EFF" />
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CmpSetMsg">
<!-- @msg不存在该营销工具 -->
<Arg name="MsgCd" value="MKM40006"/>
<Arg name="MsgDat" value="此商户不属于订单直减商户"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<!-- 扣减金额检查:单笔直减金额最高不超过50元 -->
<If condition="DOUBLECMP($RAT_AMT,6,50)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg扣减金额单笔限额超过50元-->
<Arg name="MsgCd" value="MKM40007"/>
<Arg name="MsgDat" value="扣减金额单笔限额超过50元"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<!-- 扣减金额检查,扣减金额为非法金额 -->
<If condition="DOUBLECMP($RAT_AMT,le,0)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg扣减金额为非法金额-->
<Arg name="MsgCd" value="MKM40008"/>
<Arg name="MsgDat" value="扣减金额非法"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG =N</Set>
<Return/>
</If>
<!--红包余额的情况-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKT_CUR_BAL" />
</Exec>
<Set>USE_AMT=$USE_AMT</Set>
<If condition="DOUBLECMP($USE_AMT,1,$RAT_AMT)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM40011"/>
<Arg name="MsgDat" value="此活动的余额已不足扣减"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG=N</Set>
<Return/>
</If>
<!-- 查询用户身份证号 -->
<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_NOEQUAL_STRING($ID_NO,0)">
<!-- 用户是否满足资格,一月只领一次 -->
<Set>ISS_DT=$GWA.TX_DT</Set> <!-- 计算用户当月是否有过订单直减 -->
<Set>STA_DT=STRCAT(SUBSTR($ISS_DT,1,6),01)</Set> <!-- 计算月初 -->
<Set>MOT_DT=SUBSTR($ISS_DT,1,6)</Set>
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_USR_SUIT_MKT1" />
</Exec>
<If condition="~RetCod=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg不存在该营销工具 -->
<Arg name="MsgCd" value="MKM40012"/>
<Arg name="MsgDat" value="此用户当月已享受过浦发快捷赠送电子券活动"/>
</Exec>
<Set>OUT_DAT.USR_ACT_FLG=N</Set>
<Return/>
</If >
</If>
<Exec func="PUB:CmpSetMsg">
<!-- @msg交易成功 -->
<Arg name="MsgCd" value="MKM00000"/>
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Exec func="PUB:DumpETF"/>
</Process>
</Function>
</Package>