RecurrRefund

来源:互联网 发布:网络教育英语作文 编辑:程序博客网 时间:2024/06/05 23:00

Zsmart RecurrRefund
1.计算之前会判断该订户是否处于阻塞状态,【SUBS_MIGRATION】表中的记录就是用来判断阻塞用的。
    SUBS_MIGRATION包含如下三种状态:
        NORMAL_STATE = '0',//表示未有迁移消息,这种情况下一般没有记录,这里暂且这样定义;
        READY_STATE  = '1',//表示前台发来消息准备迁移,后台进行清理
        FINISH_STATE = '2' //表示后台清理完毕,发消息给前台进行迁移


2.判断是否为如下5种租费补收算费类型:
    OWE_FEE_REFUND_MODE                      = 1, //充值补收租费子场景
    STATE_CHANGE_REFUND_MODE                 = 2, //用户状态变更补收租费子场景
    NEW_ORDER_REFUND_MODE                    = 3, //新订购产品或资费计划收取租费子场景
    BILLING_CYCLE_CHANGE_REFUND_MODE         = 4, //帐期切换补收租费子场景(EBS项目会使用)
    FIRST_CALL_REFUND_MODE                   = 5, //首次通话收取预收帐期租子场景


2.1充值补收租费子场景
    zxtool send 108 58007 "aaaaaaaaaaaaaaaaaaaa1329=1,201=1009743,211=1009881,3=20160824,1598=0"
    根据传入的消息体中包含的信息,去查询OWE_EVENT_CHARGE中的欠费记录;
    判断是否需要过滤重复记录,做相应过滤;
    处理欠费记录
        获取订户信息
        解析欠费记录中的attr_list字段
        根据欠费记录的欠费类型字段,做相应处理
        RE_RATE_AND_REPAIRE                 = 'A', //需要重新算费,余额够扣才补收
        REPAIRE_BY_OWE_CHARGE               = 'B', //根据欠费直接补收,余额够扣才补收,该类型目前已被屏蔽
        RE_RATE_AND_REPAIRE_BY_OWE_CHARGE   = 'C', //根据欠费补收费用,但是仍然通过走周期费分拣配置重新批价的方式,资费的PYTHON中直接根据欠费补收,重新批价的好处是可以通过周期费分拣来配置后续的动作,包括触发短信通知,触发ASYN_CALL等
        REPAIR_BY_OWE_AND_ACTIVE_DEPEND_PROD= 'D'  //ZMP902318补收费用,直接根据 OWE_EVENT_CHARGE 中的欠费进行补收,补收成功时需要激活依赖产品
        A:
            1.过滤后收类型租费事件
            2.重算ReRateAndRepair
            2.1获取帐期信息
            2.2执行周期费事件生成与算费GenEventAndRating
                先生称租费事件m_pRecurrEventGenEngine->DealOneOweEventCharge
                再执行算费m_pRecurrEventDealEngine->DealOneSubs这两步跟正常算费类似;
        C:
             目前完全复用上面A逻辑
        D:
             RepairByOweChargeAndActive,直接补收欠费费用,然后激活依赖产品【项目化的定制函数】
             根据欠费记录的balid,找到余额账本,然后判断是否够扣,够扣时就将该欠费值扣到该账本上。
             然后触发激活依赖产品事件【插入ASYN_CALL中】
        更新欠费记录OWE_EVENT_CHARGE中的状态为CHARGE_STATE        = '1',  //已经收取
2.2用户状态变更补收租费子场景
    只支持:后付费用户,不收取日租费用
    zxtool send 108 58007 "aaaaaaaaaaaaaaaaaaaa1329=2,201=1009743,975=1009743,969=X,3=20160825000000,1000=20"
    DealStateChange
        获取订户信息
        获取帐期信息
        补收预收类型的【月租】/【N周租】周期费产品和资费计划的租费GenEventAndRating
            生成周期费事件m_pRecurrEventGenEngine->DealStateChange:DealOneSubs
            执行周期费算费m_pRecurrEventDealEngine->DealOneSubs


2.3新订购产品或资费计划收取租费子场景
    只支持:帐务周期预收,不定周期预收,不支持日租新装的补收
    注意:新订购场景,订购资料可能并未实时传递到后台MDBCC中,需要通过前台发送的消息携带的参数来计算,但订户订购的资费套餐,这些参数类数据,肯定是已经存在于RuleCache中的。
    zxtool send 108 58007 "aaaaaaaaaaaaaaaaaaaa1329=3,254=Y,201=1009743,211=1009881,1109=196625,1102=3,3=20160825000000,104=20160801000000,16=1,973=1,5=086,812=15261850367,1000=20,881=196625"
    ExecuteForNewOrder
    对于三类租费【产品、商品、资费计划】
    对于前台传入的参数:
        1.要么iProdSpecId和iProdId同时大于零,
        2.要么iSubsGoodsInstId和iGoodsProdSpecId同时大于零,这两种情况下,需要sSubsPricePlanList也大于零。
        3.要么iSubsUppInstId和iPricePlanId大于零
    GenEventAndRating
        生成周期费事件m_pRecurrEventGenEngine->DealNewOrder,根据传入的新装产品类型,生成相应的租费事件;
        执行周期费算费m_pRecurrEventDealEngine->DealOneSubs


2.4帐期切换补收租费子场景(EBS项目会使用)
    帐期末切换补收租费:1329=4,201=xxx,973=xxx,986=xxx,921=2,3=xxx,1000=xxx 帐期末切换需要携带订户信息
    实时切换补收租费:1329=4,211=xxx,973=xxx,986=xxx,921=1,3=xxx,1000=xxx实时切换时需要携带账户信息
    月末帐期类型切换:DealBillingCycleChangeOnEndTime
        获取订户信息
        根据切换后帐期类型ID和切换时间获取切换后帐期ID
        注意:此时只补收周期类型租费,不计算不定周期和日租租费
        GenEventAndRating: DealBillingCycleChangeSubs: DealOneSubs
    实时帐期类型切换:
        产生帐期切换文件


2.5首次通话收取预收帐期租子场景
    注意:只能收取帐务周期预收类租费
    1329=5,201=xxx,3=xxx
    DealFirstCall
        获取订户信息
        获取帐期信息
        TRecurrEventGenEngine::DealOneSubs跟正常处理逻辑一致
        m_pRecurrEventDealEngine->DealOneSubs


3.数据库提交相关操作

0 0