Featured image of post 个贷核心系统业务与核算规则概览

个贷核心系统业务与核算规则概览

[TOC]

业务概览

  • 授信
  • 放款
  • 还款

主要业务

授信、绑卡、放款、还款、债务重组、不规则还款、延展期、诉讼回款、柜面还款、LPR利率浮动、核销、代偿、机构撤并、管护移交、批量扣款、代偿后还款、日终账务、短信通知、记账机构管理、额度管理、客户信息管理、借据管理、贷款凭证管理、合同管理、核心产品管理、LPR利率维护、银行核心模式、助贷模式、税价分离…

联机业务

授信维护、绑卡维护、客户基础信息维护、合同维护、管护机构及记账机构维护、放款、还款、借据信息维护等

授信

授信是业务开始,只有授信后才能开始贷款。

  • 额度:客户在一定时间内能够申请贷款的最高金额
  • 业务:变更、冻结、解冻、额度占用、恢复、失效、注销
  • 额度类型:循环额度、一次性额度、一次性多次使用额度

账户

  • 账户:他行卡与本行卡的鉴权、绑定、解绑,用于客户收款和还款

  • 鉴权:为了确保用户的真实性和支付的安全性,一般是四要素鉴权

放款

  • 预防款:完成产品,额度等校验,生成借据号等关键信息。
  • 放款确认:再次校验产品、额度等信息,完成额度占用,生成借据、期供等基本信息
  • 支付放款:调用支付,完成放款(标准放款、受托支付)
  • 核算记账:放款成功后,异步通知会计核算记账

还款

  • 正常还款:借据到期后的还款
  • 提前还款:提前N天还当期
  • 提前还N期:缩期,每期本金不变,总期数减少
  • 提前还部分:摊薄,每期本金减少,总期数不变

其他概念

  • 期供:每个借据都有对应的期供,期供记录了每一期还款的本金、利息、开始日、到期日期等。
  • 还款方式:等额本金、等额本息、先息后本、一次性还本付息,周期性还本付息,气球贷,不规则还款。
  • 利率:正常利率,罚息利率,复息利率
  • 优惠券:N天免息券、利率折扣券、N期免息券、固定利率券、利息抵扣券
  • 还款日:固定还款日、范围随机还款日、最大还款日、还款日间隔

批量任务

各种流水状态同步、批量、代偿、银行核心模式行内数据拉取等

批量扣款

客户借据到期后,每日执行的扣款任务

流程

  1. 任务生成:按商户、数据库节点、时间点、支付通道等生成批扣
  2. 数据载入:按生成的不同批扣任务,载入对应的需要批扣的数据
  3. 执行扣款:按人加产品维度,结合还款账户生成扣款记录,发起扣款
  4. 短信发送:客户所有借据扣款完成后,按人维度发送扣款结果短信

业务规则

  • 扣款时间

    批扣时间点支持配置,配置三次时间 8、16、20点批扣

  • 并发控制

    涉及部分特殊支付渠道的扣款,批扣可以设置不同的并发数量控制

  • 扣款账户

    扣款账户的顺序是按照产品维度配置的,主流扣款顺序:自有虚账户–>行内虚账户–> 本行卡–> 他行卡

  • 余额查询

    扣款前会查询余额,如果余额不足,按可用余额扣款

  • 批扣短信

    扣款完成后,准实时发送扣款短信

借据代偿

借据人无法按时偿还贷款时,由担保人或保险公司等第三方代为偿还的业务

业务流程

  1. 代偿试算:命中代偿规则的借据,进行代偿试算,生成代偿明细
  2. 申请文件:根据代偿明细,生成批量代偿申请文件,上传OSS
  3. 文件通知:申请文件上传完成后,通过支付通知行内代偿申请已提交
  4. 审批结果:批量代偿审批文件下载、解析、更新审批状态:通过或拒绝,审批通过的借据,会发起代偿还款
  5. 代偿结果:代偿完成后,生成代偿结果文件,上传

业务规则

  • 代偿天数

    只借据的逾期天数,分为单期代偿天数、整笔代偿天数

  • 代偿方式

    单期代偿:单期天数控制,单期做代偿

    整笔代偿:由整笔借据逾期天数控制,做整笔借据代偿

  • 账户管理

    按渠道配置代偿账户,或在借据放款时指定代偿账户

  • 文件同步

    还款预估文件、代偿申请文件、代偿审批文件、代偿结果文件的同步

借据核销

核销后贷款从资产负债表中剔除,相关坏账不计入当期损益

业务流程

  1. 商户校验:商户是否支持核销,减值核销或非减值核销,核销时是否检查计提
  2. 产品校验:产品是否支持核销,核销贷款余额,核销逾期天数是否满足要求
  3. 借据校验:借据状态是否正常,是否处理中,是否做过资产剥离,是否已经核销,贷款余额,逾期天数是否满足条件,最大逾期天数内是否有成功还款记录

日终任务

计提、结息、转列、拨备、计税

业务流程

  1. 日切前:根据日切时间点,拦截前后10分钟的所有交易
  2. 日切中-交易拦截:拦截掉除放款外,其他影响账务的交易
  3. 日切中-核心:执行计提、结息、转列、拨备,生成对应文件通知会计核系统处理
  4. 日切中-会计核算:处理核心系统计提、结息、转列、拨备等文件
  5. 日切中-ODS:待核心系统及会计核算系统数据处理完成后,通知ODS抽数
  6. 日间:ODS完成供数后,通知核心切日间,继续处理被阻塞的还款交易,当日零金额还款的业务。

业务规则

  • 计提

    对当天应收客户的贷款利息进行计算,体现银行的贷款利息收入

  • 结息

    按约定的时间从客户账扣收贷款利息,体现银行和借据人之间的利息结算

  • 转列

    处理贷款借据的四级分类:正常、逾期、呆滞、呆账

  • 拨备

    贷款减值准备,拨备金额主要根据贷款的五级分类来确定

总结

业务流程

借据的生命周期

贷款

由于各个银行情况不同,有些并不使用本核心做放款、还款等操作。银行为核心的产品本系统只需路由到对应的银行请求行内接口,获取结果。

  • 具体的路由方式

目前有两种路由方式:

  1. 通过产品号来路由(优先):通过银行(租户)+产品的维度请求对应的接口
  2. 通过银行路由:有些银行只有一个统一的请求接口,无需区分产品。

银行相关的配置信息,统一放入路由配置表,通过请求中的产品号获取对应的规则。

接下来的所有流程为自有核心流程

贷款试算

放款提现请的准备重要规则,预生成还款计划、计划利息、借据信息等。

前期准备
  • 首次还款日

后续期供信息需要根据首次还款日,来向后累计。在交给计算器来生成期供之前,需要先准备好首次还款日。

所有产品的首次还款日默认不许超过28(不许出现29、30、31等)

类型结果
固定还款日每月都使用固定还款日期来还款
固定还款日(下月)小于等于固定还款日:使用下月固定还款日
大于固定还款日:使用下下月固定还款日
随机【1,10】1到10号随机一天
随机【11,20】11到20号随机一天
随机【21,28】21到28号随机一天

如果客户信息中,曾记录过用户的还款日,尽量使用相同的还款日。(方便合并批扣)

  • 获取利率(授信协议)

从授信协议分项中查出授信时风险模型提供的客户贷款利率。

试算

通过首次还款日、利率信息。来预生成还款计划和借据信息

信贷核心执行过程均采用责任链模式,每一步时都会判断是否继续向后执行,无论中间哪一环出现问题直接让流程失败。

  • 试算物料初始化

    贷款开始日期、产品信息、优惠券信息

  • 使用原始利率试算(折前利率)

根据还款方式来选择试算器

不同还款方式的试算器

还款方式试算器
先息后本等额本金计算器
等额本息等额本息计算器
等额本金等额本金计算器
自定义周期性还本还息等额本金计算器
气球贷等额本息气球贷等额本息计算器
气球贷等额本金气球贷等额本金计算器
气球贷自定义周期性还本还息气球贷等额本金计算器

各计算器计算方式后文详解

通过试算器试算出:

本息总金额、利息、下次还款日、到期日、还款明细、还款期数

通过试算器得出的为折前利率,但未使用优惠,需要对总金额和利息使用优惠券(优惠券为负值)

当期初始利息=剩余本金*年利率*计息天数(距离放款的天数)/年计息规则天数(360或365)

目前已知的情报:

1、贷款开始日期、产品信息、优惠券信息

2、折前:本息总金额、利息、下次还款日、到期日、还款明细、还款期数

  • 折后利率计算

返回折后利率

优惠后金额需要通过折扣利率来计算,优惠有两种

  1. 利率折扣:折后利率=正常利率*折扣率
  2. 利息优惠券:折后利率=((折前总利息-|优惠券固定优惠利息金额|)/折前总利息

目前已知的情报:

1、贷款开始日期、产品信息、优惠券信息

2、折前:本息总金额、利息、下次还款日、到期日、还款明细、还款期数

3、折后利率

  • 通过折后利率在进行一次试算

上一步中得出折后利率,利用折后利率在进行一次试算,就可得出优惠后的利息情况。

目前已知的情报:

1、贷款开始日期、产品信息、优惠券信息

2、折前:本息总金额、利息、下次还款日、到期日、还款明细、还款期数

3、折后利率

4、折后:本息总金额、利息、下次还款日、到期日、还款明细、还款期数

  • 试算出每期优惠的金额

通过优惠试算器试算出每期优惠的金额

优惠方式试算器
放款使用(折后利息计算还款计划+折扣不提(初始就是折后利息)+回收补提)放款优惠试算器
放款使用(折后利息计算还款计划+折扣不提(初始就是折后利息)+回收补提 等额本息使用优惠券)放款优惠试算器
还款使用(折前利息计算还款计划+折扣反提+回收补提)(默认试算器)还款优惠试算器
还款使用(折前利息计算还款计划+折扣反提+回收补提 等额本息)还款优惠试算器
  • 费用计算

按出资比率或约定费用计算出所需费用

放款试算总结

通过以下信息试算出期供明细+借据

  1. 试算物料初始化:贷款开始日期、产品信息、优惠券信息
  2. 使用原始利率试算(折前利率):本息总金额(折前)、利息(折前)、下次还款日、到期日、还款明细、还款期数
  3. 折后利率计算:折后利率
  4. 用折后利率试算:本息总金额(折后)、利息(折后)、下次还款日、到期日、还款明细、还款期数
  5. 抵扣金额:每期优惠金额
  6. 费用计算:根据规则计算出费用
  • 放款试算必须的条件:

产品信息、放款金额、从授信中获取的利率、期数、还款周期、放款日期、优惠方式。

放款(TCC)

无事务前期准备

  • 生成唯一流水

为了防止重复放款,先生成一条唯一交易流水,插入唯一交易流水表(放款、还款同表)。通过唯一约束的交易流水,防重放。

  • 查询产品信息

通过请求参数,查询本次贷款产品信息。

信贷管理:额度占用+预开户(事务1:try)

开启事务Transactional

  • 获取客户额度与额度协议分项(事务1.1)

校验还款方式、末期本金比例是否合规等

目前已有:额度信息(未被占用)、协议信息

  • 计算还款日(事务1.1)

根据入参计算还款日,校验卡信息

目前已有:

1、额度信息(未被占用)、协议信息

2、还款日

  • 查询(客户+产品)名下所有的申请信息(成功+处理中的)(事务1.1)

在本次放款记录落库前,先查询一遍申请信息

  • 真正的放款try(事务1.1)

利率抉择、额度占用、登记流水

  1. 校验客户信息(事务1.1)

判断客户是否可以再借款等

  1. 抉择利率(开启一个新事务1.2)

Q如何在一个事务中同一个bean内的方法调用,开启一个新事务?

A由于事务1.1与事务1.2处于同一个bean,且只有通过springAOP代理的对象才会事务生效。(同类内方法调用即使有@Transactional注解,AOP不会生效

可以通过SpringContextHolder.getBean(*.class)获取bean来调用,使事务或AOP生效

根据配置使用客户额度协议中的利率或从风险驾驶舱中获取利率

若风险驾驶舱中利率和额度协议中的利率不同,更新协议分项利率

提交事务1.2

  1. 插入唯一交易流水表(事务1.1)

防止重复交易(try)

  1. 占用额度(事务1.1)

在占用额度之前,先当前读查询额度变更流水(select for update),防止额度重复占用

select for update 该用户的额度数据(只要事务没有提交,相当于锁住了该客户的读信息)

利用mysql 更新额度数据:剩余额度=原剩余额度-借据金额

插入若干流水

返回更新后的额度分项

  1. 贷款预生成(事务1.1)

目前已知信息

产品信息、卡信息、额度协议信息(已占用)、利率、已登记流水(放款请求,额度占用流水)、还款日、客户信息

通过以上信息预生成一笔借据

生成提前申请流水

事务1.1结束

信贷核心:放款申请(事务2:try)

  • 使用独立事务登记各种流水(事务2.1)

登记交易流水、贷款系统流水、支付用流水、扩展流水。

使用同一事务完成各系统流水登记,保证请求都被记录

事务2.1结束

  • ​ 放款前检查(事务2.2)

是否营业校验、头寸校验、代偿校验

  • 生成借据号(事务2.2)

生成借据号、获取优惠起始期数

  • 贷款试算(事务2.2)

调用贷款试算,生成期供、借据等

  • 开户(事务2.2)

事务2.2结束

  • 调用支付系统开始放款

接收支付返回值,根据返回结果决定:处理中(挂起)、成功、失败。

信贷管理:放款失败(事务1:cancel)

开启事务1.1

  • 分布式事务防止资源悬挂

try请求由于网络阻塞在cancel请求后才执行

解决方式:在cancel之前,先尝试插入一遍try的流水

  • 恢复额度(1.1)

将之前占用的额度取消

  • 取消台账流水(1.1)

将之前预生成的流水状态置为取消

事务1.1结束

信贷核心:放款取消(事务2:cancel)

开启事务2.1

  • 更新流水(事务2.1)

将之前的账务流水、交易流水、主流水、支付流水置为失败

事务2.1结束

信贷管理:放款确认(事务1:confirm)

事务1.1

  • 放款申请、台账历史流水确认(事务1.1)

  • 更新授信协议分项中的放款金额(事务1.1)

事务1.1 结束

信贷核心:放款确认(事务2:confirm)

事务2.1

  • 更新账户信息、借据状态等为成功(2.1)

  • 将新借据信息发送给ACT服务(信贷核算)记账(2.1)

  • 更新计税(若有)事务2.1

事务2.1结束

还款

应还款试算

前期准备

查出借据所有期供、查询宽限期、恢复正常利率(之前利率有可能应折扣导致不准)、处理柜面还款部分

循环每期期供得出利息(真正的试算)

每期借据大致分为几种情况

  • 为满足正常的还款日要求

未到期的期供、交易日未到达正常还款日、不展示的期供信息

统一跳过处理

  • 未介入待还时间线的期供

跳过

  • 其他情况的期供会进入试算

已知的情报:

期供信息(未试算)、宽限期

利息计算

  • 需要的数据

起息日sD,上次计提日(可能为空)pD、当前交易日tD

初始利息(放款时试算得出)、已计提利息(每期的已计提利息)

  • pD>=结束日期

本期不再计息 return 0;

  • pD为空

没有计提过,让pD等于sD

计息天数:当前日期-起息日

剩余本金:当期金额+当期后的总剩余本金

计息方式计算原理
按日累计(当期本金+当期之后的剩余本金)*年利率*计息天数/年计息天数(360或365) 结果保留8位小数4舍5入
按日计息剩余本金*年利率/年计息天数*计息天数 保留两位小数

放上得出应计息金额后 - 已计提金额 =本次计提金额

  • 计息后记账

根据减值表示记录表内或表外、应收应计利息和利息发生额

转表外当天利息记表内

罚息计算

罚息计算流程与计算逻辑大致与利息计算相同

  • 不同点

罚息存在罚息利率

宽限期内:使用正常利率参与罚息计算(宽限期内可能存不记罚息的情况,后续用罚息利率一把补记)

宽限期外:使用罚息利率参与计算

费用罚息

费用计算与罚息、利息计算逻辑相似,根据配置决定费用利率

本金*罚息利率

复息计算

同上

(应收欠息+催收/减值欠息) *复息利率

复息补计提

  • 复息为什么存在补计提场景?

因为有优惠的情况存在,优惠有两种,一种还款时优惠,一种放款即优惠。如果放款优惠,期供中目前记录的利息为减免后利息, 但还复息的场景中,可能存在优惠券失效情况。若优惠券失效,需补计提减免部分的复息。

减免金额(取反)*复息利率

反向计提

因部分银行要求利息、罚息、复息等不能超过一定比例,如超过比例需反向计提。

反向计提金额:目前已计提金额-最大比例计算得出金额

处理减免

根据上方得出的各种值做还款减免计算

直接从上方金额做扣减

还款试算结束

正常还款试算总结

  1. 查出:期供、柜面还款金额、利率、宽限期
  2. 按期完成试算
  3. 利息:利用剩余本金、利率完成试算
  4. 罚息:需考虑宽限期(宽限期计息、不计息等),利用剩余本金、罚息利率完成
  5. 罚息费用(如有):根据产品配置情况,利用剩余本金、罚息费用利率完成
  6. 复息:利用利息金额、复息利率完成
  7. 复息补计提(如有):利用已减免利息、复息利率完成
  8. 反向计提:检测是否超标,若超则扣减
  9. 减免:还款时对各种优惠减免

正常还款试算流程简单,计算规则统一

计息方式计算原理
按日累计(跳切时)(当期本金+当期之后的剩余本金)*年利率*计息天数/年计息天数(360或365) 结果保留8位小数4舍5入
按日计息(正常情况)剩余本金*年利率/年计息天数*计息天数 保留两位小数

提前还款试算

前期准备

准备出:交易日期、提前还款方式、提前还款金额、提前还款期数、利率、优惠信息等

同时对本次还款进行校验

调用放款试算重新生成期供信息

  • 重新生成期供

由于需要涉及未来期次还款,之前使用优惠生成的期供新歘不可用,需调用放款试算来重新生成期供,对本次还款做扣减,方便后续扣款使用

  • 求出剩余本金

借据剩余金额-当前试算期供的累计本金(当次应还款金额)

还款后剩余本金

根据还款方式做不同的处理

提前还款本金

还款方式处理方式
提前结清还款金额为剩余金额
提前部分还款校验金额后暂不处理(仍为输入时金额)
提前还本(退货)只校验(仍为输入时金额)
提前还当期还款本金为当期期次的剩余本金
提前还N期还款本金为输入n期的剩余本金汇总
提前柜面还款试算金额- 柜面金额

提前还款利息

提前还款方式利息金额
提前结清当前已计提的利息汇总
提前还当期当前已计提的利息汇总
提前还N期当前已计提的利息汇总
提前柜面还款0
提前还本(退货)0
提前部分还款特殊处理
  • 对于提前部分还款的特殊处理

提前还款利息=天数*提前还款本金*年利率/年计息天数

应收应计利息和:汇总每期已计提利息金额

取两个利息的较小值:Math.min(提前还款利息,应收应计利息)

提前还款费用

提前还款费用=天数*借据金额*费用年利率/年计息天数

提前还款利息优惠(陕西农信)

提前还款利息优惠=天数*剩余本金*优惠利率/年计息天数(取反)

摊薄金额

摊薄方式逻辑
诉讼还款按照传输的还款顺序还款
期供优先根据配置还款顺序还款:大致为
应计:罚、利、本
非应计:本、利、罚
注意:核心账务并不怎么额外关心核销标识
纵向优先先还本、总利息、总费用、总费用罚息
本金优先按期扣减本金、后按期还利息

根据上方还款方式后摊薄期供。

做优惠

若有n期免息、n天免息券、利息减免券等再在现有期供上做扣减

利用剩余本金重新生成还款计划

利用还款后的剩余本金重新生成还款计划,如借据并未结清,则该此还款后,后续该借据以本次新生成的还款计划为准。

提前还款试算结束

提前还款试算总结

  1. 先准备交易日期、提前还款方式、提前还款金额、提前还款期数、利率、优惠信息等
  2. 由于优惠可能失效,需重新生成还款计划
  3. 根据还款方式,试算出本次还款需要还的金额(本、利、费用)
  4. 根据实还金额对现有期供做扣减(顺序有三种:期供优先、本金优先、纵向优先)
  5. 若有剩余本金则利用剩余本金重新生成期供、给客户后续使用

正常还款(TCC)

还款前校验:日切中不能还款,批量还款预先记录一条批量还款请求流水(try)

信贷管理:还款(事务1:try)

正常还款、提前还款信贷管理逻辑统一

开启事务1.1

  • 查询客户额度(事务:1.1)

  • 校验客户信息(事务:1.1)

  • 增加还款申请流水和台账流水(事务:1.1)

若为批量还款,则直接使用中台记录的批量还款请求流水

事务1.1结束

信贷核心:正常还款(事务2:try)

还款非大事务,整体流水串联没有事务,每一小步都是单独的事务

  • 无事务操作

查询账户信息、借据信息、是否日间状态是否可以还款等

  • 插入流水、日切中的还款锁定账户(临时事务,乐观锁)

开启事务

还款类型处理方式
非日间还款(非日间的联机还款或批量还款)标记为还款待处理、锁定账户、不试算
诉讼还款插入诉讼还款流水
正常还款贷款交易表、贷款交易流水表、支付交易流水表插入初始化流水
提前还款贷款交易表、贷款交易流水表、支付交易流水表插入初始化流水

插入流水扩展信息

事务结束

检测是否在营业窗口,决定是否后续流程(日切过程中直接结束)

  • 日间的还款锁定账户(乐观锁)

上方只有在日切过程中会提前锁定账户,直接返回。

对于其他还款、只插入了流水,现在锁定账户。(借新还旧特殊处理,不锁定账户)

  • 调用正常还款试算(无事务)

调用上面提到的正常还款试算,得出还款后的本、利、罚余额等

  • 调用支付请求还款

默认账户仍未锁定状态、当支付返回失败才进行解锁操作。

若支付返回处理中,仍未锁定状态,等待后续流水批量状态同步再判断是否解锁。

信贷管理:还款取消(事务1:cansel)

更新还款申请流水和台账历史流水为失败

信贷核心:还款取消(事务2:cansel)

事务开启

  • 根据主流水为失败

诉讼还款更新诉讼流水为失败

  • 解锁之前锁定的账户(乐观锁解锁)

  • 更新支付流水、贷款交易流水为失败

事务结束

信贷管理:还款确认(事务1:confirm)

若支付返回成功,则进入确认流程

开启事务

  • 更新还款申请流水、台账流水为成功

  • 恢复额度(释放额度)

根据还款本金,恢复额度协议分项表中的额度

若本次还款为代偿还款,记录当前客户被代偿次数+1

事务结束

信贷核心:正常还款确认(事务2:confirm)

开启事务

  • 查询还款前借据信息、更新主流水为成功

  • 判断是否为最后一笔还款、后续是否可以销户

  • 保存老期供信息、新建新的期供,金额为试算时的金额

  • 保存老、新建新的借据,更新借据信息

根据老借据状态对借据进行不同处理

原借据状态处理方式
核销还清:核销销户
未还清:更新核销余额
已减值已结清:销户
若期供最小到期<交易日期:转正常
期供到期日< 交易日期
逾期还款结清:销户
还完逾期:借据状态转正常
仍为逾期:只扣减金额
正常还款结清:销户
正常还款:扣减金额
  • 转正常
  1. 将期供催收金额更新到应收金额
  2. 借据催收金额更新到应收金额
  3. 更新借据扩展信息计息标识
  4. 形态转移表记录本次结转金额
  • 若本次还款中涉及计提

记录未记录的计提流水

  • 判断是否结息

结息:应计转应收

记录结息流水

更新借据信息为已结息

  • 判断是否红冲

延展期等可能导致红冲出现

一般正冲应计

若已结息则反冲应收

  • 登记减免和交易明细

  • 解锁账户表、更新账户状态(可能存在减值转正常或销户等)

  • 更新期供金额、状态

至此、借据状态、账户状态、期供状态都已修改完毕

  • 确认之前的申请流水

将之前的支付流水、贷款交易流水置为成功

  • 保存老数据用于冲正

事务结束

正常还款总结

特别说明

信贷核心还款锁定说明(乐观锁)

客户计提、还款时,为避免多次try导致金额扣减出问题,默认一笔借据同一时间只能有一次还款在处理中。所有在执行扣款、计提中(try阶段)要对客户账户上锁。

  • 账户上锁的基本原则

哪条流水(连接/线程)进行的加锁(开启事务/获取资源)操作,有且只有这条流水去进行解锁(提交事务/释放资源),而且必须保证解锁的逻辑能够执行。

否则可能导致的后果:

  1. 死锁
  2. 锁失效
  3. 事务不生效
  4. 脏资源
  • 加锁与解锁

所有借据都有对应的账户数据,账户表中有字段账户处理标识和请求编号字段。

字段名逻辑
。。。
账户处理标识0:已处理
1:账户表处理中/临时表未处理
请求流水号当前正在操作账户的流水,只有处理表示为1时才存在请求流水号,当标识为0时不存在请求流水号

加锁

1
update 账户表 set 处理标识='1',请求流水='当前请求流水' where 借据号='借据号' and 处理标识='0';

更新后检测是否更新成功,如果更新成功。则加锁成功。后续其他流水无法再锁定当前账户

解锁

1
update set 处理标识='0' where 借据号='借据号' and 处理标识='1' and 请求流水='请求解锁的流水号';

解锁只能通过上锁的流水来解锁,保证单笔借据不会重复交易,产生并发问题。

计算器

放款

放款需要的要素:

还本周期、还息周期、年计息天数、剩余本金、开始日期(借据起始日期)、年利率、总期数(产品配置中存)

还本周期(贷款扣收本金的频率):默认为授信时为客户配置,样式:3|M|A|E

周期性字段的解释

3MAE
间隔:1,3,12
常数,表示每多少后方量做一次循环
循环量:
D:天Daily
W:周Weekly
S:旬Semi-Monthly
M:月Monthly
Q:季Quarterly
Y:年Yearly
一般的配置M或月
工作日选项:
A:实际日期(无视是否工作日)
N:下一个工作日(会顺延到下一个工作日)
P:上一个工作日(同理)
日期:
E:每次循环的最后一天
1到31:满足前面循环的固定日期
*满足条件的任意一天

例:

  1. 1|M|A|15 每个月的15日,无视是否工作日
  2. 1|M|A|E 落在每月的最后那天,不管那个月有多少天。1月31日、2月28日、2月29日,3月30日等
  3. 1|Q|A|E 落在每个季度的最后一天,3月31日、6月30日、9月30日、12月31日

还息周期:同还本周期

等额本金计算器

先息后本、等额本金、自定义周期性还本还息

需要生成的字段逻辑
还息周期一般由授信信息得出,授信时会为每位客户定好固定的还息周期。还息周期一般情况为1开头
一般还息周期决定了一笔借据一期有多长,默认以还一次息为还一期期供
还本周期等额本金:等额本金还本周期必须等于还息周期
还本周期必须大于等于还息周期,不能存在本金还完后,利息还没有还完的情况。若还息周期*期数小于还本周期,则让还本周期等于最末期(先息后本)
年计息天数产品配置,一般为360或365
起息日贷款的开始日期
每期应还本金额(理想值)每期还本金额的平均值(末期可能不同)
需要还本的期数=总期数*还息周期/还本周期
平均还本金额=总金额/需还本期数
填充本金还本周期为还息周期的整数倍关系,先用理想值填充非末期的(i*还本周期/还息周期)本金余额
末期本金末期本金不是直接取平均值,而是通过总金额扣减上面每次填充的本金后的余额。
首期还款日单期借据(只有一期的借据):Math.min(次月的今天,次月的最后一天)
理想情况:为下一个月的放款日
破期(需要向下一个周期推演):3月10日推迟到4月10日
首期计息天数只针对破期的情况:
1、按实际天数计算
2、按整期计算
3、按照30天+零头计算
首期利息剩余本金*年利率*计息天数/年计息天数
其他期数其他期数按照第一确定的还款日向后推演

等额本息计算器

还息周期必须等于还本周期(房贷最常用的还款方式)

起始日期与结束日期都为固定值,一般不存在破期

字段取值逻辑
每期还款金额(本息和)放款金额*年利率*(1+年利率)的总期次数量方/((1+年利率)的总其次数量方-1)
本金.multiply(rate)multiply(Math.pow(1+rate,总期数)).divide(Math.pow(1+rate,总期数)-1)
利息剩余本金*利率*计息天数/年计息天数
本金每期还款金额-利息金额

为什么这么计算每期还款金额?

对于每一期的利息,一定是按照当期剩余本金*利率来算息,+1之后可以确定本息和。n次幂-1表示一共需要计算了n次幂的利息,则还款金额刚好等于总金额/n次幂-1

250701195852848.png

气球贷等额本息计算器

gggggggggq

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计