分期还款服务(步骤2)-还款开发流程图-V1.1.0
2020-01-17 10:01:00 1 举报
分期还款服务(步骤2)-还款开发流程图,支持手动还款、自动还款、逾期还款、一次性提前结清,服务高可用、业务具有高容错性
作者其他创作
大纲/内容
*更新无异常,且所影响的行数=1则成功,否则表示当前期供可能正在还款中,应视为失败。
原子性事务:1、更新当前期供状态为『还款中』2、保存支付消息
*原子性实现:利用事务型数据库原子特性。*以惟一标识+状态『未还』作为更新期供条件。*更新还款订单的当前期数、逾期次数。
数据库
并行
是
*每次与最新时间比较。
*如果需要返回具体被拒绝原因给客户端则有必要进行判断,否则直接进入下个步骤。*被拒绝条件举例:1、逾期未还(之前期供根据状态判断,当前期供实时计算)。
申请减免
*建立请求超时时间设置为3000毫秒,冻结金额实时计算。
请求冻结存管账户资金
结束
否
是否成功
提前结清流程
事务回滚
*设置支付消息状态为『冻结成功』。
轮询未还款消息
轮询消息并将消息加入队列
减免申请审核通过
开始
是否拒绝
返回申请成功
*以惟一标识+状态『逾期』作为更新条件。
终止重试条件:1、是否达到最大重试次数。
*如果在逾期宽限期内,只需要更新计算罚息时间和保存消息通知。
当前日期与应还款日期是否一致
还款服务
以惟一标识+状态『未还』作为更新条件。
业务系统
异步邮件通知开发人员(带上消息标识及业务标识)
触发消息队列重试机制
*数据轮询规则:1、在每日3时至23时之间,每隔2小时的第30分钟执行一次,即03:30:00、05:30:00、...23:30:00。*数据轮询条件:1、所有期供中无逾期未还的。2、应还款日期>=当前日期 00:00:00<=当前日期 23:59:59。3、期供状态为『未还』。
*数据轮询规则:1、每隔1小时的第0分钟、第9分钟分别执行一次。*数据轮询条件:1、应还款日期<当前日期 00:00:00。2、期供状态为『未还』。
轮询逾期消息
返回原因
是否重试
事务型数据库
删除消息
保存支付消息
*原子性实现:利用事务型数据库原子特性。*以惟一标识+状态『逾期』作为更新条件,更新所影响的行数=1则继续,否则表示还款进行中,应视为失败并立即结束流程。*设置支付消息状态为『未付』,支付金额实时计算(含减免)。*使用最后一次计算罚息时间与当前时间比较,防止跨日还款。
申请减免阶段
数据库死信队列
本地记录日志(异常信息及MsgId)
消息队列
*原子性实现:利用事务型数据库原子特性。*消息至少要包含有topic、tag、keys(业务惟一标识,如:合同编号、借款编号)、body(创建还款计划请求参数)。
开发人员处理
友好提示
提前结清
*数据轮询规则:1、在每日3时至23时之间,每隔2小时的第45分钟执行一次,即03:45:00、05:45:00、...23:45:00。*数据轮询条件:1、最后一次计算罚息时间>=当前日期 00:00:00<=当前日期 23:59:59。2、期供状态为『逾期』。3、最早一期的逾期。
数据轮询
*如果需要返回具体被拒绝原因给客户端则有必要进行判断,否则直接进入下个步骤。*被拒绝条件举例:1、当前期供非『逾期』状态。
运营人员处理(成功后更新消息状态)
原子性事务:1、更新业务状态2、消息落库
*如果需要返回具体被拒绝原因给客户端则有必要进行判断,否则直接进入下个步骤。*被拒绝条件举例:1、非当前应还期供。2、已还款。3、所有期供中有逾期未还的(之前期供根据状态判断,当前期供实时计算)。
逾期减免流程
*设置支付消息状态为『冻结失败-其它原因』。
原子性事务:1、更新罚息2、更新计算罚息时间3、保存消息通知
原子性事务
申请减免审核通过阶段
更新当前期供状态为『还款中』
*原子性实现:利用事务型数据库原子特性。*以惟一标识+状态『未还』作为更新条件,更新所影响的行数=1则继续,否则表示还款进行中,应视为失败并立即结束流程。*设置支付消息状态为『未付』。
原子性事务:1、更新当前期供状态为『逾期』2、更新还款订单3、保存消息通知
手动正常还款
*数据轮询规则:1、每隔1小时的第14分钟、第24分钟、第43分钟分别执行一次。*数据轮询条件:1、最后一次计算罚息时间为空或<当前日期 00:00:00。2、期供状态为『逾期』或『减免申请中』。3、期供的冻结消息中没有状态为『冻结成功』的消息。
保存消息到数据库死信队列
更新期供状态为『减免申请中』
*更新期供状态以惟一标识+状态『减免申请中』作为更新条件。
*待审核、审核被退回事件参照这种通知机制。
异步邮件通知运营人员(带上消息标识及业务标识)
原子性事务:1、更新期供状态为『逾期』2、更新减免状态为『审核通过』
计算罚息阶段
更新所有未还款期供状态为『还款中』
返回已结清
自动逾期还款流程
*更新无异常,且所影响的行数=总期数-已还期数则成功,否则表示可能有还款进行中的期供,应视为失败。
手动正常还款流程
自动正常还款流程
事务补偿阶段
标记逾期阶段
*以还款订单标识+状态『未还』作为更新条件。
0 条评论
下一页