289 lines
12 KiB
XML
289 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
==============================================================
|
|
交易名称:事务推送机制处理
|
|
创建日期:20210127
|
|
==============================================================
|
|
-->
|
|
<Tran>
|
|
<!--事件处理 -->
|
|
<Transaction code="PUSH_EVENT" log_switch='1' desc="">
|
|
<DynSentence name="QRY_CAPEVTRLR">
|
|
<Sentence>
|
|
SELECT *
|
|
FROM CAPEVTRLR
|
|
WHERE EVT_TYP= ?
|
|
AND RLR_STS='0'
|
|
</Sentence>
|
|
<Fields>EVT_TYP|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_CAPSMSLST">
|
|
<Sentence>
|
|
SELECT *
|
|
FROM CAPSMSLST
|
|
WHERE EVT_TYP= ?
|
|
AND ROL_TYP= ?
|
|
AND RLR_STS='0'
|
|
</Sentence>
|
|
<Fields>EVT_TYP|ROL_TYP|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_SMSTTMPS_MAL"> <!--查询邮件或短信模版及相关参数-->
|
|
<Sentence>
|
|
SELECT A.SM_TYP,A.SMS_CLS,A.SMS_MO,A.SMS_TMP,A.REP_FLD,A.ID_KEY,A.PSW_FLG
|
|
FROM SMSTTMPS A
|
|
WHERE A.SMS_CD=?
|
|
</Sentence>
|
|
<Fields>SMS_CD|</Fields>
|
|
</DynSentence>
|
|
<FlowCtrl>
|
|
<Set>EVT_TYP=$EVT_TYP</Set> <!-- 事务类型 -->
|
|
|
|
<!-- 查询预警规则表CAPEVTRLR -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CAPEVTRLR"/>
|
|
<Arg name="GrpNam" value="EVT"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<!-- @msg 读取数据库{1}失败 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="PWM90100"/><!--错误码待定 999999999-->
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>SMS_CD=$EVT.MAL_TPL</Set>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_SMSTTMPS_MAL"/>
|
|
</Exec>
|
|
<If condition="~RetCod<0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg="查询模板失败"</Set>
|
|
<Break/>
|
|
</If>
|
|
|
|
<Set>AC_DT=GETDATE()</Set>
|
|
<!--Exec func="PUB:DumpETF"/-->
|
|
<!-- 设置短信模版变量 -->
|
|
<Set>IND1=\[</Set>
|
|
<Set>IND2=\]</Set>
|
|
<Set>IND3=\$</Set>
|
|
<Set>IND4=STRCAT($IND1,$IND3,$IND2)</Set>
|
|
<!--替换邮件模版中的变量,组织下发邮件内容-->
|
|
<Exec func="SMS:ReplaceWithSMSTemplate">
|
|
<Arg name="template" value="$SMS_TMP"/> <!--邮件模版-->
|
|
<Arg name="repl" value="$IND4"/> <!--变量符号-->
|
|
<Arg name="text" value="$REP_FLD"/> <!--变量列表-->
|
|
<Arg name="objNam" value="SMS_INF"/> <!--邮件内容-->
|
|
</Exec>
|
|
|
|
<Set>ALERT_NAME=$EVT.EVT_TYP</Set>
|
|
<Set>SUMMARY=$EVT.EVT_DSC</Set>
|
|
<Set>SMS_INF=STRCAT($SMS_INF,"(",instance=,@SYS.ics.sys.nodeid,;time=,GETDATETIME(yyyy-MM-dd HH:mm:ss),")")</Set>
|
|
<Set>DESCRIPTION=$SMS_INF</Set>
|
|
<Exec func="PUB:CallThirdComm" error="IGNORE">
|
|
<Arg name="HTxnCd" value="alert" />
|
|
<Arg name="ObjSvr" value="SCAALERT" /> <!-- 发往监控系统告警 -->
|
|
</Exec>
|
|
|
|
<Set>EVT.IS_SND_MERC=$EVT.IS_SND_MERC</Set> <!-- 是否发送给商户 已废止 -->
|
|
<Set>EVT.IS_SND_DEV=$EVT.IS_SND_DEV</Set> <!-- 是否发送开发 -->
|
|
<Set>EVT.IS_SND_BUS=$EVT.IS_SND_BUS</Set> <!-- 是否发送给业务 -->
|
|
<Set>EVT.IS_SND_OPR=$EVT.IS_SND_OPR</Set> <!-- 是否发送给运营 -->
|
|
<Set>EVT.IS_SND_OTH=$EVT.IS_SND_OTH</Set> <!-- 是否发送给其他人-->
|
|
<Set>EVT.IS_SND_SMS=$EVT.IS_SND_SMS</Set> <!-- 发送短信 -->
|
|
<Set>EVT.IS_SND_MAL=$EVT.IS_SND_MAL</Set> <!-- 发送邮件 -->
|
|
<Set>EVT.SMS_TPL=$EVT.SMS_TPL</Set> <!-- 短信模板 -->
|
|
<Set>EVT.MAL_TPL=$EVT.SMS_TPL</Set> <!-- 邮件模板 短信邮件用一个模板 -->
|
|
<!--是否发送商户邮件 已废止-->
|
|
|
|
<!--是否给开发发送预警 短信 或 邮件-->
|
|
<If condition="IS_EQUAL_STRING($EVT.IS_SND_DEV,Y)">
|
|
|
|
<Set>ROL_TYP=DEV</Set><!--角色类型 MERC:商户 DEV:开发 BUS:业务 OPR:运维 OTH:其他人-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPSMSLST"/>
|
|
<Arg name="RecordName" value="MAL_DEV"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>N=0</Set>
|
|
<Set>DEV_NUM=0</Set>
|
|
<Set>DEV_NUM=$REC_NUM</Set>
|
|
<While condition="INTCMP($N,1,$DEV_NUM)">
|
|
<Set>N=ADD($N,1)</Set>
|
|
<Set>EVENT.ROL_NAM=MAL_DEV[$N].ROL_NAM</Set> <!-- 角色姓名 -->
|
|
<Set>EVENT.MOB_TEL=MAL_DEV[$N].MOB_TEL</Set> <!-- 手机号码 -->
|
|
<Set>EVENT.MAL_ADR=MAL_DEV[$N].MAL_ADR</Set> <!-- 邮箱 -->
|
|
|
|
<Set>EVENT.EVT_DSC=$EVT.EVT_DSC</Set>
|
|
<Set>EVENT.SMS_CD=$EVT.MAL_TPL</Set>
|
|
<Set>EVENT.IS_SND_SMS=$EVT.IS_SND_SMS</Set>
|
|
<Set>EVENT.IS_SND_MAL=$EVT.IS_SND_MAL</Set>
|
|
<Set>EVENT.SMS_INF=$SMS_INF</Set>
|
|
<!--调用短信发送-->
|
|
<Call package="SMS_PUB" function="SEND_MAL">
|
|
<Input>EVENT|</Input>
|
|
<Output>Rsp_Cd|Rsp_Msg</Output>
|
|
</Call>
|
|
|
|
|
|
</While>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="MAL_DEV"/>
|
|
</Exec>
|
|
<Delete>DEV_NUM</Delete>
|
|
<Delete>REC_NUM</Delete>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="CAP00021"/>
|
|
<Arg name="MsgDat" value="数据库错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
|
|
</If>
|
|
<!--是否给业务发送邮件-->
|
|
<If condition="IS_EQUAL_STRING($EVT.IS_SND_BUS,Y)">
|
|
|
|
<Set>ROL_TYP=BUS</Set><!--角色类型 MERC:商户 DEV:开发 BUS:业务 OPR:运维 OTH:其他人-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPSMSLST"/>
|
|
<Arg name="RecordName" value="MAL_BUS"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>N=0</Set>
|
|
<Set>BUS_NUM=0</Set>
|
|
<Set>BUS_NUM=$REC_NUM</Set>
|
|
<While condition="INTCMP($N,1,$BUS_NUM)">
|
|
<Set>N=ADD($N,1)</Set>
|
|
<Set>EVENT.ROL_NAM=MAL_BUS[$N].ROL_NAM</Set> <!-- 角色姓名 -->
|
|
<Set>EVENT.MOB_TEL=MAL_BUS[$N].MOB_TEL</Set> <!-- 手机号码 -->
|
|
<Set>EVENT.MAL_ADR=MAL_BUS[$N].MAL_ADR</Set> <!-- 邮箱 -->
|
|
|
|
<Set>EVENT.EVT_DSC=$EVT.EVT_DSC</Set>
|
|
<Set>EVENT.SMS_CD=$EVT.MAL_TPL</Set>
|
|
<Set>EVENT.IS_SND_SMS=$EVT.IS_SND_SMS</Set>
|
|
<Set>EVENT.IS_SND_MAL=$EVT.IS_SND_MAL</Set>
|
|
<Set>EVENT.SMS_INF=$SMS_INF</Set>
|
|
<!--调用短信发送-->
|
|
<Call package="SMS_PUB" function="SEND_MAL">
|
|
<Input>EVENT|</Input>
|
|
<Output>Rsp_Cd|Rsp_Msg</Output>
|
|
</Call>
|
|
|
|
|
|
</While>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="MAL_BUS"/>
|
|
</Exec>
|
|
<Delete>BUS_NUM</Delete>
|
|
<Delete>REC_NUM</Delete>
|
|
</If>
|
|
<ElseIf condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="CAP00021"/>
|
|
<Arg name="MsgDat" value="数据库错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
|
|
<!--是否给运维发送邮件和短信-->
|
|
<If condition="IS_EQUAL_STRING($EVT.IS_SND_OPR,Y)">
|
|
|
|
<Set>ROL_TYP=OPR</Set><!--角色类型 MERC:商户 DEV:开发 BUS:业务 OPR:运维 OTH:其他人-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPSMSLST"/>
|
|
<Arg name="RecordName" value="MAL_OPR"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>N=0</Set>
|
|
<Set>OPR_NUM=0</Set>
|
|
<Set>OPR_NUM=$REC_NUM</Set>
|
|
<While condition="INTCMP($N,1,$OPR_NUM)">
|
|
<Set>N=ADD($N,1)</Set>
|
|
<Set>EVENT.ROL_NAM=MAL_OPR[$N].ROL_NAM</Set> <!-- 角色姓名 -->
|
|
<Set>EVENT.MOB_TEL=MAL_OPR[$N].MOB_TEL</Set> <!-- 手机号码 -->
|
|
<Set>EVENT.MAL_ADR=MAL_OPR[$N].MAL_ADR</Set> <!-- 邮箱 -->
|
|
|
|
<Set>EVENT.EVT_DSC=$EVT.EVT_DSC</Set>
|
|
<Set>EVENT.SMS_CD=$EVT.MAL_TPL</Set>
|
|
<Set>EVENT.IS_SND_SMS=$EVT.IS_SND_SMS</Set>
|
|
<Set>EVENT.IS_SND_MAL=$EVT.IS_SND_MAL</Set>
|
|
<Set>EVENT.SMS_INF=$SMS_INF</Set>
|
|
<!--调用短信发送-->
|
|
<Call package="SMS_PUB" function="SEND_MAL">
|
|
<Input>EVENT|</Input>
|
|
<Output>Rsp_Cd|Rsp_Msg</Output>
|
|
</Call>
|
|
|
|
|
|
</While>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="MAL_OPR"/>
|
|
</Exec>
|
|
<Delete>OPR_NUM</Delete>
|
|
<Delete>REC_NUM</Delete>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="CAP00021"/>
|
|
<Arg name="MsgDat" value="数据库错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
|
|
<!--是否给其他人发送邮件或邮件-->
|
|
<If condition="IS_EQUAL_STRING($EVT.IS_SND_OTH,Y)">
|
|
<Set>ROL_TYP=OTH</Set><!--角色类型 MERC:商户 DEV:开发 BUS:业务 OPR:运维 OTH:其他人-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPSMSLST"/>
|
|
<Arg name="RecordName" value="MAL_OTH"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>N=0</Set>
|
|
<Set>OTH_NUM=0</Set>
|
|
<Set>OTH_NUM=$REC_NUM</Set>
|
|
<While condition="INTCMP($N,1,$OTH_NUM)">
|
|
<Set>N=ADD($N,1)</Set>
|
|
<Set>EVENT.ROL_NAM=MAL_OTH[$N].ROL_NAM</Set> <!-- 角色姓名 -->
|
|
<Set>EVENT.MOB_TEL=MAL_OTH[$N].MOB_TEL</Set> <!-- 手机号码 -->
|
|
<Set>EVENT.MAL_ADR=MAL_OTH[$N].MAL_ADR</Set> <!-- 邮箱 -->
|
|
|
|
<Set>EVENT.EVT_DSC=$EVT.EVT_DSC</Set>
|
|
<Set>EVENT.SMS_CD=$EVT.MAL_TPL</Set>
|
|
<Set>EVENT.IS_SND_SMS=$EVT.IS_SND_SMS</Set>
|
|
<Set>EVENT.IS_SND_MAL=$EVT.IS_SND_MAL</Set>
|
|
<Set>EVENT.SMS_INF=$SMS_INF</Set>
|
|
<!--调用短信发送-->
|
|
<Call package="SMS_PUB" function="SEND_MAL">
|
|
<Input>EVENT|</Input>
|
|
<Output>Rsp_Cd|Rsp_Msg</Output>
|
|
</Call>
|
|
|
|
|
|
</While>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="MAL_OTH"/>
|
|
</Exec>
|
|
<Delete>OTH_NUM</Delete>
|
|
<Delete>REC_NUM</Delete>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="CAP00021"/>
|
|
<Arg name="MsgDat" value="数据库错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
<Set>MSG_CD=$Rsp_Cd</Set>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Tran>
|