Files
2021-01-12 22:04:24 +08:00

455 lines
22 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Package>
<Function name="OPEN_USER">
<Input>GWA|INP_DAT</Input>
<Output>OUT_DAT|MSG_CD</Output>
<!-- 查询手机用户信息表 -->
<DynSentence name="QRY_URMTPINF">
<Sentence>
SELECT USR_NO FROM URMTPINF WHERE MBL_NO=?
</Sentence>
<Fields>INP_DAT.MBL_NO|</Fields>
</DynSentence>
<!-- 根据别名查询用户操作员信息表 -->
<DynSentence name="QRY_URMTOPER">
<Sentence>
SELECT USR_OPR_NO FROM URMTOPER WHERE USR_OPR_LOG_ID=?
</Sentence>
<Fields>INP_DAT.USR_OPR_LOG_ID|</Fields>
</DynSentence>
<!-- 查询客户信息表的信息 -->
<DynSentence name="QRY_URMTCIF">
<Sentence>
SELECT CI_NO FROM URMTCIF WHERE ID_TYP=? AND ID_NO=?
</Sentence>
<Fields>INP_DAT.ID_TYP|INP_DAT.ID_NO</Fields>
</DynSentence>
<!-- 更新客户信息表的姓名 -->
<DynSentence name="UPD_URMTCIF_NM">
<Sentence>
UPDATE URMTCIF SET CUS_NM=? WHERE ID_TYP=? AND ID_NO=?
</Sentence>
<Fields>INP_DAT.CUS_NM|INP_DAT.ID_TYP|INP_DAT.ID_NO</Fields>
</DynSentence>
<!-- 客户信息表中插入新的记录 -->
<DynSentence name="INSERT_URMTCIF">
<Sentence>
INSERT INTO URMTCIF (CI_NO,ID_TYP,ID_NO,CUS_NM,UPD_JRN,TM_SMP)
VALUES (SEQ_CI_NO.nextval,?,?,?,?,?)
</Sentence>
<Fields>|INP_DAT.ID_TYP|INP_DAT.ID_NO|INP_DAT.CUS_NM|UPD_JRN|TM_SMP</Fields>
</DynSentence>
<!-- 初始化支付密码 -->
<DynSentence name="UPD_ACMTACIN_PAYPSW">
<Sentence>
UPDATE ACMTACIN SET PAY_PSWD_STS='0',PAY_PSWD=? WHERE AC_NO=?
</Sentence>
<Fields>PAY_PSWD|INP_DAT.MAIN_AC|</Fields>
</DynSentence>
<Process>
<Exec func="PUB:DumpETF"/> <!-- test -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM00000"/>
</Exec>
<!-- 检查用户是否已注册 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_URMTPINF"/>
</Exec>
<If condition="~RetCod=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20013"/>
</Exec>
<Return/>
</If>
<!-- 生成操作员内部ID -->
<Exec func="PUB:GetUniqueNo">
<Arg name="Name" value="USR_OPR_NO"/>
<Arg name="SeqNam" value="URM_OPR_NO"/>
<Arg name="Len" value="10"/>
</Exec>
<Set>INP_DAT.USR_OPR_NO=$USR_OPR_NO</Set>
<!-- 检查别名是否重复 -->
<If condition="ISNULL(DELBOTHSPACE($INP_DAT.USR_OPR_LOG_ID))">
<Set>INP_DAT.USR_OPR_LOG_ID=STRCAT(!,ADDCHAR($INP_DAT.USR_OPR_NO,10,0,1))</Set>
<Set>INP_DAT.USR_OPR_LOG_SHOW=STRCAT(!,ADDCHAR($INP_DAT.USR_OPR_NO,10,0,1))</Set>
<Set>STS=0</Set>
<Set>INP_DAT.USR_STSW=000000000000000</Set>
<Set>OMA_INP.CRT_PSW_FLG=N</Set> <!-- 自动生成支付密码标志 -->
</If>
<Else>
<Exec func="PUB:ReadRecord" >
<Arg name="SqlCmd" value="QRY_URMTOPER"/>
</Exec>
<If condition="~RetCod=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20112"/> <!-- 别名重复,请重新填写 -->
</Exec>
<Return/>
</If>
<Set>STS=2</Set>
<Set>INP_DAT.USR_STSW=100000000000000</Set>
<Set>OMA_INP.CRT_PSW_FLG=Y</Set>
</Else>
<!-- 生成内部用户号 -->
<Exec func="CMM:GenerateInnerUserNo">
<Arg name="_I_INP_DAT" value="11"/> <!-- test -->
<Arg name="_O_OUT_DAT" value="GIU_OUT"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>INP_DAT.USR_NO=@O.GIU_OUT.USR_NO</Set> <!-- 内部用户号 -->
<If condition="ISNULL($INP_DAT.REAL_NM_FLG)">
<Set>INP_DAT.REAL_NM_FLG=02</Set>
</If>
<!-- 建立客户信息 -->
<If condition="IS_EQUAL_STRING($INP_DAT.REAL_NM_FLG,01)">
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_URMTCIF"/>
</Exec>
<If condition="~RetCod=0">
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_URMTCIF_NM"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20003"/>
</Exec>
<Return/>
</If>
<Set>INP_DAT.CI_NO=$CI_NO</Set>
</If>
<If condition="~RetCod=2">
<Set>UPD_JRN=$GWA.JRN_NO</Set>
<Set>TM_SMP=GETDATETIME()</Set>
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="INSERT_URMTCIF"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20003"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_URMTCIF"/>
</Exec>
<Set>INP_DAT.CI_NO=$CI_NO</Set>
</If>
</If>
<If condition="IS_EQUAL_STRING($INP_DAT.REAL_NM_FLG,02)">
<Set>INP_DAT.CI_NO=STRCAT(90000000,$INP_DAT.USR_NO)</Set>
</If>
<!-- 调用组件开主帐户 -->
<Set>OMA_INP.USR_NO=$INP_DAT.USR_NO</Set> <!-- 内部用户号 -->
<Set>OMA_INP.USR_PROV=01</Set> <!-- 用户归属省 -->
<Set>OMA_INP.USR_CITY=100</Set> <!-- 用户归属市 -->
<Set>OMA_INP.USR_CITY_NM=$INP_DAT.USR_CITY_NM</Set> <!-- 用户归属城市名 -->
<Set>OMA_INP.AC_PROV=01</Set> <!-- 账户归属省 -->
<Set>OMA_INP.AC_CITY=100</Set> <!-- 账户归属市 -->
<Set>OMA_INP.AC_ORG=$INP_DAT.AC_ORG</Set> <!-- 账户归属机构 -->
<Set>OMA_INP.AC_TYP=100</Set> <!-- 帐户种类 -->
<Set>OMA_INP.PAY_PSWD=$INP_DAT.PAY_PSWD</Set> <!-- 支付密码 -->
<Set>OMA_INP.BUS_CNL=$GWA.BUS_CNL</Set> <!-- 开户渠道 -->
<Exec func="ACMPUB:OpenMainAccount">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="OMA_INP"/>
<Arg name="_O_OUT_DAT" value="OMA_OUT"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>INP_DAT.MAIN_AC=@O.OMA_OUT.AC_NO</Set>
<Set>INP_DAT.AC_NO=@O.OMA_OUT.AC_NO</Set>
<!-- 登记手机用户信息表 -->
<Set>INP_DAT.USR_STS=$STS</Set> <!-- 用户状态 -->
<Set>INP_DAT.REAL_NM_ATH_MOD=0</Set> <!-- 实名认证方式 -->
<Set>INP_DAT.PSN_CRP_FLG=0</Set> <!-- 个企标志 -->
<Set>INP_DAT.REG_DT=$GWA.TX_DT</Set> <!-- 注册日期 -->
<Set>INP_DAT.REG_TM=$GWA.TX_TM</Set> <!-- 注册时间 -->
<Set>INP_DAT.REG_SYS_CNL=$GWA.SYS_CNL</Set> <!-- 注册系统渠道 -->
<Set>INP_DAT.UPD_JRN=$GWA.JRN_NO</Set> <!-- 最后更新流水号 -->
<Set>INP_DAT.OLD_MBL_NO=$INP_DAT.MBL_NO</Set> <!-- 原手机号 -->
<Set>INP_DAT.REG_BUS_CNL=$GWA.BUS_CNL</Set> <!-- 开户渠道 -->
<Set>INP_DAT.BOSS_STSW=000000000000000</Set> <!-- BOSS状态字 -->
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTPINF"/> <!-- 手机用户信息表 -->
<Arg name="GrpNam" value="INP_DAT"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/> <!-- 插入多条记录,存在失败的记录 -->
</Exec>
<Return/>
</If>
<!-- 登记用户公共属性控制表 -->
<Set>INP_DAT.BUY_SAL_FLG=0</Set> <!-- 买卖属性标志 -->
<Set>INP_DAT.REG_TM=$GWA.TX_TM</Set> <!-- 注册时间 -->
<Set>INP_DAT.REG_SYS_CNL=$GWA.SYS_CNL</Set> <!-- 注册系统渠道 -->
<Set>INP_DAT.UPD_JRN=$GWA.JRN_NO</Set> <!-- 最后更新流水号 -->
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTCOMI"/> <!-- 用户公共属性控制表 -->
<Arg name="GrpNam" value="INP_DAT"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/> <!-- 插入多条记录,存在失败的记录 -->
</Exec>
<Return/>
</If>
<!-- 登陆密码处理 -->
<Set>ACCNO=STRCAT(SUBSTR($INP_DAT.MAIN_AC,1,6),SUBSTR($INP_DAT.MAIN_AC,10,10))</Set>
<Exec func ="HSM:HsmPin">
<Arg name="PINTYPE" value="L1"/>
<Arg name="PINBLOCKBYZPK" value="$INP_DAT.LOG_PSWD"/>
<Arg name="ACCNO" value="$ACCNO"/>
<Arg name="ZPK" value="$GWA.BUS_CNL"/>
<Arg name="PVK" value="264"/>
<Arg name="PINOFFSET" value=""/>
<Arg name="MINPINLENGTH" value="8"/>
<Arg name="PINLENGTH" value="6"/>
<Arg name="dstfld" value="LOG_PSWD"/>
<Arg name ="ecp_dstfld" value=""/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20143"/>
</Exec>
<Return/>
</If>
<Exec func ="HSM:HsmPin">
<Arg name="PINTYPE" value="L1"/>
<Arg name="PINBLOCKBYZPK" value="$INP_DAT.PAY_PSWD"/>
<Arg name="ACCNO" value="$ACCNO"/>
<Arg name="ZPK" value="$GWA.BUS_CNL"/>
<Arg name="PVK" value="264"/>
<Arg name="PINOFFSET" value=""/>
<Arg name="MINPINLENGTH" value="8"/>
<Arg name="PINLENGTH" value="6"/>
<Arg name="dstfld" value="PAY_PSWD"/>
<Arg name ="ecp_dstfld" value=""/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20143"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_ACMTACIN_PAYPSW" />
</Exec>
<Set>INP_DAT.LOG_PSWD_STS=0</Set>
<Set>INP_DAT.LOG_PSWD=$LOG_PSWD</Set>
<!-- 登记用户操作员信息表 -->
<Set>INP_DAT.USR_OPR_ID=$INP_DAT.MBL_NO</Set> <!-- 用户操作员编号 -->
<Set>INP_DAT.USR_OPR_TYP=0</Set> <!-- 操作员类型 -->
<Set>INP_DAT.USR_HEAD_FLG=0</Set> <!-- 用户户主标志 -->
<Set>INP_DAT.USR_OPR_STS=$STS</Set> <!-- 状态 -->
<Set>INP_DAT.UPD_JRN=$GWA.JRN_NO</Set> <!-- 流水号 -->
<Set>INP_DAT.USR_OPR_MBL=$INP_DAT.MBL_NO</Set> <!-- 联系手机号 -->
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTOPER"/> <!-- 用户操作员信息表 -->
<Arg name="GrpNam" value="INP_DAT"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/> <!-- 插入多条记录,存在失败的记录 -->
</Exec>
<Return/>
</If>
<!-- 登记用户支付密码保护信息表 -->
<If condition="NOT(ISNULL($INP_DAT.QUES1,$INP_DAT.PSWD_PTC_MBL,$INP_DAT.PSWD_PTC_EMAIL))">
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTPWPT"/> <!-- 用户支付密码保护信息表 -->
<Arg name="GrpNam" value="INP_DAT"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/> <!-- 插入多条记录,存在失败的记录 -->
</Exec>
<Return/>
</If>
</If>
<!-- 设置初始化安全级别信息 -->
<Set>INP_DAT2.USR_NO=$INP_DAT.USR_NO</Set>
<Set>INP_DAT2.FLD_ID=SAFE_LEV</Set>
<Set>INP_DAT2.FLD_NM=安全级别</Set>
<Set>INP_DAT2.FLD_CTT=3</Set>
<Set>INP_DAT2.PER_INF_TYP=SYS</Set>
<If condition="NOT(ISNULL($INP_DAT2.USR_NO))">
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTPADI"/> <!-- 用户支付密码保护信息表 -->
<Arg name="GrpNam" value="INP_DAT2"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/> <!-- 插入多条记录,存在失败的记录 -->
</Exec>
<Return/>
</If>
</If>
<!-- 登记开户历史 -->
<Set>INP_DAT.SEQ_NO=1</Set>
<Set>INP_DAT.AC_TYP=100</Set>
<Set>INP_DAT.SUB_AC=$INP_DAT.AC_NO</Set>
<Exec func="PUB:InsertRecord">
<Arg name="TblNam" value="URMTPOCH"/>
<Arg name="GrpNam" value="INP_DAT"/>
</Exec>
<If condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20000"/>
</Exec>
<Return/>
</If>
<!-- BOSS手机支付业务订购关系同步 -->
<Set>TLOG_NO=$GWA.JRN_NO</Set>
<Exec func="PUB:GetUniqueNo">
<Arg name="Name" value="SEL_VAL"/>
<Arg name="Len" value="10"/>
</Exec>
<Set>SEL_VAL=ADDCHAR($SEL_VAL,16,0,1)</Set>
<Set>PRO_TIM=GETDATETIME()</Set>
<Set>TRAN_IDO=STRCAT($PRO_TIM,$SEL_VAL)</Set>
<Set>TRAN_IDH=STRCAT($PRO_TIM,$SEL_VAL)</Set>
<Set>SEL_VAL=SUBSTR($SEL_VAL,11,6)</Set>
<Set>OPR_LOG=STRCAT(0034BIP2B260,$PRO_TIM,$SEL_VAL)</Set>
<Set>CHG_OPR=01</Set>
<Set>TST_FLG=1</Set>
<!--If condition="IS_EQUAL_STRING($GWA.BUS_CNL,UI)">
<Set>SRN=PAY_REGION</Set>
<Exec func="PUB:InvokeService">
<Arg name="ServiceName" value="T2001060"/>
<Arg name='Mode' value='NOTIFY'/>
<Arg name="LogID" value="SBSGPUB1"/>
<Arg name="ObjSvr" value="SBSGPUB1"/>
<Arg name="SRN" value="$SRN"/>
</Exec>
<Set>RetCod=~RetCod</Set>
</If>
<Else>
<Exec func="PUB:InvokeService">
<Arg name="ServiceName" value="T2001060"/>
<Arg name='Mode' value='NOTIFY'/>
<Arg name="LogID" value="SBSGPUB1"/>
<Arg name="ObjSvr" value="SBSGPUB1"/>
</Exec>
<Set>RetCod=~RetCod</Set>
</Else-->
<!-- 登记用户信息变动 -->
<Exec func="GEN:GenUserInfDetail">
<Arg name="OPR_TYP" value="A"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 登记用户操作日志 -->
<Set>DAT_INF.MBL_NO=$INP_DAT.MBL_NO</Set>
<If condition="OR(IS_EQUAL_STRING($GWA.BUS_CNL,SMS),
IS_EQUAL_STRING($GWA.BUS_CNL,WWW),
IS_EQUAL_STRING($GWA.BUS_CNL,CAS))">
<Exec func="GEN:GenUserOprHisDetail">
<Arg name="DAT_AREA" value="DAT_INF"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<!-- 登记操作员操作日志 -->
<Set>DAT_INF.MBL_NO=$MBL_NO</Set>
<If condition="OR(IS_EQUAL_STRING($GWA.BUS_CNL,UI),
IS_EQUAL_STRING($GWA.BUS_CNL,SYS))">
<Exec func="GEN:GenOperOprHisDetail">
<Arg name="DAT_AREA" value="DAT_INF"/>
<Arg name="DAT_FMT" value="FMT"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<!-- 设置开户返回信息 -->
<Set>OUT_DAT.USR_NO=$INP_DAT.USR_NO</Set> <!-- 内部用户号 -->
<Set>OUT_DAT.MAIN_AC=$INP_DAT.MAIN_AC</Set> <!-- 主账号 -->
<Set>OUT_DAT.USR_PROV=$INP_DAT.USR_PROV</Set> <!-- 用户归属省 -->
<Set>OUT_DAT.USR_CITY=$INP_DAT.USR_CITY</Set> <!-- 用户归属市 -->
<Set>OUT_DAT.AC_PROV=$INP_DAT.USR_PROV</Set> <!-- 账户归属省 -->
<Set>OUT_DAT.AC_CITY=$INP_DAT.USR_CITY</Set> <!-- 账户归属市 -->
<Set>OUT_DAT.AC_ORG=$INP_DAT.AC_ORG</Set> <!-- 账务归属机构 -->
<Set>OUT_DAT.PAY_PSWD_ECAP=@O.OMA_OUT.PAY_PSWD</Set> <!-- 支付密码 -->
<Set>OUT_DAT.LOG_PSWD_ECAP=$ECAP_DSTFLD</Set> <!-- 支付密码 -->
<Set>OUT_DAT.MBL_NO=$INP_DAT.MBL_NO</Set> <!-- 手机号 -->
<Set>OUT_DAT.TX_CD=$GWA.TX_CD</Set> <!-- 交易码 -->
<Set>OUT_DAT.BUS_CNL=$GWA.BUS_CNL</Set> <!-- 业务渠道 -->
<Set>OUT_DAT.SYS_CNL=$GWA.SYS_CNL</Set> <!-- 系统渠道 -->
<Set>OUT_DAT.REAL_NM_FLG=$INP_DAT.REAL_NM_FLG</Set>
<Set>OUT_DAT.USR_OPR_NO=$INP_DAT.USR_OPR_NO</Set>
</Process>
</Function>
</Package>