00:00
好,这个里面呢,首先我们呢,先拿到这个还款计划列表,那么还款计划列表呢,是我们要生成的多人还款对吧?啊,所以最终呢,一笔投资,刚刚我们说了,假设说分三期啊,就是那个一笔借款,假设说分三期的话,那么我还款就应该还几期。还三期吧,一笔借款我分三期我还款我还几期,是不是还三期啊,所以呢,我现在我生成还款计划列表的话,我是不是得按照这个还款的期限来生成就可以了。对吧,所以这个line点下的period是不是还款期限呢?比如说是三个月,那我这个lines是不是就是生成三笔还款计划就行了,那这三笔还款计划最后被填充到这个拉类里面,是不是就变成了一个还款计划的一个列表啊,明白吧?啊,所以这块是创建还款计划里表,然后这块呢是拿到期数,然后这块呢是根据期数去做一个循环,然后中间这块全都是场景还款计划,好把我们整个的这个还款计划到到这啊。
01:19
到这为止,创建完成之后,就是我们把这个每一个还款计划是不是叫做,嗯,我看一下叫吧,我这边是还款计划列表LA return是个类存,然后我这块呢,是针对每一笔还款啊,创建一个return好,中间这块呢,我就是把所有的这个LA呢,都给它准备好啊,把各项准备好,然后我就把这个LA我就放在了这个LA子里。明白吧,啊,所以这个过程是不是我就把整个的还款计划列表给它准备好了啊,准备好了之后呢,我保存保存这个地方我们用了一个批量保存啊,当然了,你也可以在这个里面去怎么样,每一个LA保存一下也可以啊,当然我们这个地方呢,我们用的是批量保存,用的是service里面的,这样的话呢,我们就把这个所有的还款计划呢,就给它准备好了啊,就给他准备好了,好那在这个还款计划里面的一些常规的一些参数,还有一些属性,我们就一个一个需要的时候把它设置上就啊这是常规的,有一个有几个比较特殊的。
02:33
哪几个比较特殊呢?就是涉及到金额这一块,这几个比较特殊啊,还款计划land return,这个里面有三个字段,Principle。和妥,我们来看一下款精华。在嗯,刚才咱们这个PU安里面叫拉是吧,这个是我们的还款记录表,好,这里面呢,有三个值,一个值呢叫做。
03:05
本金就我每一期我要还的本金是多少,还有一个呢是利息,我每一期我要还的利息是多少,还有一个呢,是本息,就是本金加利息的总和啊好,然后呢,在这个里面呢。我们这个本金加利息加本息,我每一次的还款,我假设说按照刚才咱们有十个投资人投资的话,我要还给十个人。明白吧,我每一次还款,我要还给十个人,我每一次还1万块钱,十个人假设说他们投资的金额都一样,每个人呢,还1000块钱,那么十个人的1000块钱加起来正好是我还这1万块钱,十个人一人等于千,对不对?好,那假设说我的这个钱呢,是1万块钱,110万块钱能算了啊,100块钱我要还给三个人,就像上次我说的似的,100块钱我要还给三个人,那我每个人还多少?
04:11
33块三毛三。那一分钱多还了一分钱,对不对,我还100块钱,三个人呢,每个人拿到33块三毛三,那一分钱给谁就出现问题了,有就说给平台也行哈,平台就收下了,好,那这就有问题,那还款人说就他们三个人这个没有拿到我手上的这个钱,那一分钱要退给我对不对?利息我已手续费我已经交过了,是吧,你扣款的时候,手续费如果扣下去了,那这一分你能给,所以说咱们这个地方怎么算呢?先不算还款人应该还多少钱,因为其实我们是能够通过已知的信息啊,通过他借了多少钱,通过他借了多少期,通过他的年化是多少,直接能够算出他每期还多少钱,但是这个钱我们不存到数据库当中,我们存哪了,我们根据已知的信息,要算投资人投了多少钱,每个投资人需要收多少收回。
05:17
这多少钱明白吧,好,我们把十个投资人或者是三个投资人还要收回的钱全算出来之后,把他们收回的钱加起来是还款的,还款这个逻辑大家知道吧,就是不要分别算啊,就是分别算是什么,先算我记了多少钱,然后按照我的年化呀,什么我借了多少钱,时长啊,我算我还多少钱,这是分别算,然后呢,呃,分别算投资钱,投资人我投多少钱,然后我按我投的钱呢,算我应该收回多少钱,那这个过程当中,因为一个是按借的钱算,一个是按投的钱算的,所以难免会出现进度的一个误差,那么我们现在怎么算,我们只算投资人投入多少钱,然后投资人投钱的过程当中呢,他在回款的时候,他每个月能回多少钱,好,十个投资人每个月回十笔,那我每个月就把这十个投资人回的十笔加起来。
06:11
才是我还款人要还的钱,就这样明白吧,你说他少还一份,那少还一分就少还一分,反你说他多还一份,那这个东西就就是算法是这样,只能这样,所以我们当时在算的时候就是什么就当嘛,就按那个rundown了,就按这个截取算对吧,截取算最后可能还款人他在还的时候,最多最多他可能就是少还一分钱那样的,对吧,但是你不会多收取他钱,这样的话体验不是不好嘛,对吧?啊好,那这块呢,就是还款,就是刚才我们说的还款计划当中这一块的代码,就这块不有个说明嘛,啊这三部分的内容啊,然后呢,不能在这算,不能在这个还款计划当中,直接是需要怎么设置啊,需要先生成对应的回款计划,先把回款计划生成,生成完了之后,把回款计划当中的每一个投资人的这些项加起来。然后是在。
07:11
再往还款计划里补充啊,所以就是这样的一个逻辑,然后再有这块还有一个特殊的逻辑,就是也是嗯,在算最后一个月的时候,也是和前面的月份是有区别的,在算最后一个月的时候呢,你不应该去把比如说我一共。我一共借了1万块钱,对吧,然后通过刚才咱们那个运算,第一个月把所有的还是100太大了三,然后呢,通过咱们的计算,第一个月把所有的这个投资人投的钱,比如说一共三个投资人,一共三个投资,把所有的投资人投的钱不都加起,就是要回款的钱不都加起来吗?把所有投资人要回款的钱加起来之后,发现我要还款33块三毛三,对吧,第二个月也是把所有的投资人。
08:12
要回的款都加起来了,算完了之后呢,我要还33块三毛三,第三个月同样的算法,把所有的投资人要回的款都加起来了,我要还33块三,差一分钱。这明白吗?你当时借了100块钱,你只能买到99块九毛九,那怎么办?所以第三个月是把你借的钱减前两个月你已经还的钱,就是第三个月的钱。这个逻辑明白吧啊,所以一个是我还款的时候还最后一个月的时候呢,我要把前面的钱减下去才是最后一个月,然后我还款的时候,还前面月份的时候呢,一定是把别人的回的款加起来,才是我还的前面月份的,所以每个月的计算方式都有稍微有这样的一个区别的啊,目的呢,就是最后我们总和加起来是不变的。
09:11
啊,对吧,这个概念在金融学当中叫零和博一,就是加起来必须就是是零是吧,正负的加起来必须是零,你不能多,一定不能少啊好嗯,然后呢,接下来呢,我们嗯,就看一下吧,这个地方其实它就是处理这最后一个愿望,所以最后我们不是要在这个回款接划当中去处理这最后一个愿望啊,所以呢,我们最后这个做一个标识,现就是LA限里,咱们先做一个标识,先标哪个月份是最后一个月,那么当I等于line的时候,也就是说这个I从一开始一直到Le啊,一直到L,当这个ii表示月份了,等于len,就是最后一个月的时候,我们先给这个LA这个还款计划先做一个标识,这是最后一月了,一会碰到这个标识,这月份算法是不一样的啊,然后呢,接下来呢,在这个地方呢,就是对这个。
10:11
还款期他也做一个标示,这不是最后一个月,那这个月份计算的时候呢,就直接把所有的呃,投资人的回款加起来就可以了啊,所以呢,这块是针对于最后一个人的一个梳,所以呢,这个里面就两个地方就比较重要,一个是这个先读数理后面梳,一个是这个关于月份的一个书啊好,那其他的都是常规的一些属性的一些填充了,这个嗯,对我们来说比较好理解,然后接下来呢,这边保存完了之后呢。我们下面就开始要先生成回款计划列表,为什么生成回款计划列表完了之后才能再回头把这些东西都填充上,对吧?啊,所以呢,我们在这个地方呢,就生成硫压力表啊。大家生成生成完了之后呢,在这个地方。
11:03
就是这这一部分的内容是生成回款计划的,然后这一部分的回款计划呢,它很显然这块有个便利吧,这便利便利的是谁?那你的爱是什么?是不是投资就是投投那个,嗯,相当于一笔标的有若干笔投资,对吧,这个是那若干笔投资,我们从这个标的根据标的的ID啊,取到成功的投资,然后把这一个标的下面的所有的投资都取出来,取出来之后呢,组成一个列表,然后是不是便利这个投资呀,啊便利这个投资,那这个烂item就是其中的一笔投资了,每一笔投资我们是不是对应生成回款计划,好那么这个return外就是刚才咱们写的第二个方法,就是回款计划叫明白吧,每一笔投资我要生成。
12:07
一一一系列的回款计划,比如说三个月,那我们生成三个月的回款计划,是三条记录,对吧?啊,我借12个月,那就是12个月的回款计划,是12条记录好,那么这是每一笔投资的回款计划,那么一循环是不是所有投资人的回款计划是不是都生成了?明白吧,啊,所以呢,在这个地方,刚才我们写的这个return invest这个方法,它所生成的这个land item list这个列表呢,是针对个投资人的回款计划,这可以理解吧,这是针对一个投资人的回款计划,然后上面这个叫land I all,这个是不是就是所有投资人的所有汇款计划,明白吧,所以呢,我们把一个投资人的回款计划呢,把它添加到我们这个大的这个列表里,那么这个land的item return all类似呢,就是所有投资人的所有回款计划了,好,所有投资人的所有回款计划,如果我们都处理完了之后呢,我呢,我看一下啊,Land item always。
13:36
As。就是加他的钱。对,然后呢,我们,呃,我看一下啊,生成回款计划,对这个是所有投资人的所有回款计划,我们都处理完了之后,实际上呢,我们应该把他们存起来,对吧?啊,那存是在哪存的呢?他这个外的这个方法。
14:06
就是下面就有个return,然后最后的最后它肯定有一个保存,看见了吧,啊,也就是说我们针对一个投资人。的所有回款计划做了一一次的保存,如果有十个投资人的话,那么就十次性办,这个可以理解吧,啊,所以刚才咱们在这个地方看到的。就是循环生成回款计划的时候,在这个方法里面,它调用结束之前。这个列表里的数据是不是就已经存到数据库中了,是在这个方法里存的,那这个是针对当前这一笔投资的所对应的投资人的所有买计划,然后最后呢,把他们都放在一个大的item return类里啊,放在大的land return类里面的目的是什么呢?目的就是为了我们最后要做哪些运算啊,要做这个运算。
15:07
因为大家想一想,我现在的这个啊,返回的这个烂item类是不是一个投资人,这叫什么一个投资人的所有。这款对吧?啊,是一个投资人的所有股款,那么我要用它算什么,我要用所有投资人的所有回款,我是不是要算借款人的每一笔还款呢?还记得吧,啊,要计算借款人的每一笔还款,对,好,那我用一个投资人的所有回款,我能不能算出借款人的每一笔还款?对,算出来,因为只有一个投资人,我们得算其中一期的所有投资人,对不对啊,所以说呢,我们得把一个投资人和其他投资人的所有的回款是不是都放在一起啊,然后整体做过率,整体做便利是不是啊,所以呢,在这个地方呢,我们就把。
16:16
这个啊,这个位置你看一下送哪去了,在这个位置我们就把这一个投资人的所有规款加到是什么呀,加到所有投资人的所有回款列表里。明白哈啊,加到所有投资人的所有平款余额,然后加完了之后我们要干嘛来着,是不是根据还款的计划算还款,我这笔要还多少钱呢?这意思吧,然后就干嘛,就便利还款计划,开始便利还款计划,然后再回款,就是刚才这个or在回款里面做过率啊,这里面有什么reduce做过率过滤是什么,就把和当前的这笔。
17:04
这个叫land return ID,这个叫land return ID,就把和当前的这笔还款相关的回款都加起来,这可以理解吗?注意它们两个之间有一个关系啊,Land item和return和land return之间有一个关系,什么关系呢?在我们的烂的里面,这个是什么?还款吧,在我们的烂里面有一个叫做ID的这么一个值叫主件,对吧,这个是缓款啊,Land s呢,这个是。回款还有个ID,这笔回款对应的是哪一笔还款?这可以理解吗?啊,回款里面有一个LAID,这个LAID的意思就是我这笔回款是谁还给还给我的,比如说ABC进行了投资,然后甲进行了借款,那么甲的这一笔借款应该是ABC当中的A还是B还是C还给他的,所以这个就是是谁还给他的,那当然了,这里面关联的是不是那个人的ID,是那个还款的ID。
18:19
明白吧,嗯。这块能不能搞清楚,我再简单的再说一遍啊,就是刚才我们所说的呢,就是首先一个投资人的所有回款啊,会放在哪个里面呢?会放在这个。把这个拿出来看一下啊,会放在这个land iem return里面啊,然后所有投资人的所有尾款呢,会放在land I2类似里,然后接下来呢,我们要计算借款人的每一笔还款,每一笔还款呢是。所有投资人的其中的一期的回款,对吧?啊,是所有投资人的其中的一期的回款啊,是所有投资人其中的一期的所有款,那么我就得知道我每一笔借款人的还款对应所有投资人的哪一期的回款。
19:29
这个可以理解吧,就是每一笔还款计划和若干笔回款计划是一对多的关系是吧?啊,还款计划和回款回款计,嗯,计条款是多少是什么关系,是一,然后对多的关系,是这个意思吧,计划计对吧?所以说他们两个肯定得有外径关联吧,啊,那么这个外径应该建在哪啊?
20:15
是不是回款计划里面应该有还款计划的ID啊,明白吧?啊,回款计划有还款计划的ID,那么这个回款计划里面在这呢。回款计划,回款计划,这是回款计划的ID,这个是还款计划的ID是吧?然后这个是还款计划表,明白这意思吧,嗯,好,那这样的话大家明白了,明白了之后呢,那就是说我计算每一个还款的时候,我必须得拿着和这个就是我怎么找啊,怎么在这不是一个大列表,我们得从这个大列表里找到对应这笔还款的所有的回款了,那么就根据还款ID找不就得了。
21:00
明白吧,我在大列表里面找回款里面的那个还款ID,和这笔还款的还款ID一样的,就是我这次要拿出来的。这个回款了,明白哈,所以在这个地方。看这个代码啊,在这个地方是不是在啊回款记录里呢,这是这个item是什么,Item是针对于这个烂的哦,这是什么?是所有的回款记录吧。这块是一个便利啊,这个代码有点复杂,我先说一下他这个ione视频,这个是不是所有的回款记录,这个知道哈,好,然后他进行了进行了stream filter,这个是当前的这个lemon表达式里面的那个呃,参数,这个参数应该就是他被便利的那个当前对象对吧?啊好,然后这个被便利的当前对象,他的这是什么回款,他的那个烂的return ID是他的外建还款ID吧,他的还款ID等于当前的这笔还款和还款ID的时候,那这笔回款是不是就是我要还款的其中的一笔回款,明白这意思吧,好啊好啊,然后最后呢,我把这笔回款里面的P本金全都相加,这个是整个这个栏目表达式就是一个。
22:34
轴啊,Filter是什么?我从这个集合中过滤出满足这个条件的所有数据。啊,然后map是什么,Map是其中,把其中相关的属性拿出来,哪个是相关属性本金好,然后呢,又是什么,对相关的属性进行处理,怎么处理,做加法操作,大家都前面是加加零对吧,零,然后加上所有的。
23:02
啊,所以呢,再说一遍啊,这块呢,就涉及到stream编程里面的future什么意思,再说把所有的短款。记录都拿出来,我把这写一下啊。把所有的回款,回款就是所有的投资者的所有的回款记录。把所有的投资者的所有的回款记录,呃,取出取出取取的是这个啊,这个是先拿到所有投资人做,然后接下来下一步做filter做过滤,这个是取数句啊,取数句把数据先取出来,第二个呢做过率,过率是什么,把某一笔。这是还款是吧?还款和某一笔就是回款是吧?对,就是还款就是回款,把某一笔的还款和某一笔回款当中就是具有这个相同的还款ID的数据过滤起来,对吧?啊,那也就是说针对当前这笔还款的所有的回款ID是吧?啊就这个判断一下,然后把这个回款取消。所以呢,把。
24:29
做规律,然后这个先取数据,取数据,然后做电力啊对吧,前面是取数据啊,后面是做电力,再加上一个注信息做便利,便利谁便利还款这里有对吧,便利还款列表,然后呢,接下来呢,座过率,把和当前还款对象对应的所有尾款记录是吧,找出啊当前还款对象其实更确定是当前这期对吧,这一期的还款对象所对应的所有的啊回款记录找出,当然肯定也是对一期的,这是综合率的一个过程,综汇率,然后接下来呢,找数据,找哪个数据你。
25:29
把记录找出来了,不是记录里面的所有的数据我都要处理的,我就处理其中的一个属性,那么就用map啊,那map的话呢,就是找数据,或者是先找数据吧,找出需要处理的属性,好,那就是map,那找出需要处理你就会处理的就是这个系啊,烂的I回款记录中的系,然后接下来呢,做数据梳理reduce,然后呢,做数据梳理对吧?然后将找书的数据相加,好做到这大家知道了,加起来就是什么呀,所有的回款记录找出来,把本金找出来相加是不是就是还款额了,就是当前这个人的还款额,那么当前这个人这一笔还款金额我们就算出来了,叫S。
26:29
嗯,Interest,嗯,这什么interest对吧,啊interest,那么这个是什么呢?这个。这个是啊这个啊,这个是本金,然后这个是什么利息,本金是,然后这个是利息,利息的计算过程和本金的计算过程一样的,只不过呢,我们找数据的时候找的是利息,上面找数据的时候找的是本金啊,然后这个呢是total total是什么?是本金加利息对吧?啊本息之和好,那所以这三个数据我们是不是就算出来了。
27:07
第三个数据算来,三个数据算出来之后,是不是把它放到land return里,就是还款记录,把它放到还款记录里面,刚才这个land return这三个值,我们是不是说暂时先不处理对吧,那不处理在哪处理,是不是在这处理一下,把他们三个再给它存进去,明白吧,存进去之后是最后再对整个这个LA类型做一个批量更新,做一个批量更新啊好,那所以呢,这个。还款计划是不是就写好了?好,这整个还款计划有多少啊,那么在这个还款计划当中,我们这个位置拿到的是所有的回款计划是吧,前提是回款计划里面的这些值数已经算好了。我的回款这不是回款计划列表里面的一个属性吗?那你这个要是得算好了才能算还款计划的这个这个值,那也就意味着我们在算这些值之前,是不是得先生成回款计划,所以回款计划的生成就插在了这个和上面这个中间了,明白吧,所以在中间这个地方呢,我们要先把回款计划生成,生成完每一个人的回款计划,再放在所有的回款计划里边,然后再这个回款计划表做刚刚我们所说的,明白这个意思吧,嗯,所以说呢,这是整个还款计划相,然后接下来咱们再来看回款。
我来说两句