00:00
那我们来看一下,呃,下一个步骤呢,就是我们要创建这个controller了,这controller呢,我们要添加一个Thein borrow in for controller,所以呢,我们来打开我们的后台啊,然后在后台这个地方呢,我们找到啊这个controller啊,找到admin啊,然后呢,接下来呢,我们来看一下,呃,Borrow in for controller这里没有,我们就创建一个吧,所以呢,我复制一下这个名字有点长啊。然后呢,在admin这个里面我们用一下啊好,然后呢,这个controller里面的这一些,呃,就是套路性的东西,我就直接复制过来啊,咱们就不一行一行写。好,上面这块呢,就是关于一些注解,这大家都懂啊,然后这个是它的路径,然后这面呢,就是注入的service,然后这面呢,就是我们定义的一个接口了,那这个接口呢,就是要展示这个计划信息列表的,那么分页这块呢,我就不在课堂上去做了啊,那么嗯,大家如果想自己做分页功能的话,那参考之前咱们用户管理那块的分页功能,你把它加上就行了,所以这块呢,咱们就简单的实现一个列表页啊好,那么在这面呢,啊,我呢就一会儿呢写一个service,然后在service当中呢,咱们去创建咱们扩展出来的这个borrow info,注意现在咱们这个borrow info呢,已经有扩展字段了,所以呢,在组装这个borrow info的过程当中呢,并不单单只需要去查询这个borrow info表了,还需要查询一些其他的表,然后呢来做最终的数据的一个组装,这个是需要大家知道的,所以呢,大这个service呢,相对来说呢,还是有一些业务的哈,然后呢,我们。
01:42
我们就来看一看吧,我们把这个service给它实现一下,叫create method select list,然后呢,Out加enter啊好,那这样的话呢,我们就。把这个给他啊,就是做了一个啊。
02:01
呃,业务查询对吧,相当于啊,然后呢,在这个业务查询当中呢,我们呢,要呃查询一些数据了,那这个数据呢,我们先来思考一下,它都应该,嗯从哪个表当中查。应该从哪个表当中查,也就是说现在我们要展示的数据包括哪部分内容呢?除了borrow in for里面的这些内容之外,还包括name mobile以及数据字典当中的数据,所以呢,我们查询的时候呢,肯定第一要关联数据字典进行查啊,但是数据字典这一块呢,我们可能啊要嗯。有有有好几个数据要查哈,就是有两个数据要查,包括。Method,然后包括many use啊,然后另外呢,啊,你像这个用户名字和用户的手机号呢,我们来看一下包表当中。
03:06
包表当中呢,有这个用户的姓名,姓名啊,这必须得是真实姓名啊,不能是网网名对吧,不能是昵称啊,然后这块呢,是他的手机号,所以呢,我们的这个包表当中,实际上是借款人的真实信息的一个记录表,是借款人当时申请借款额度,他所填写的实名认证的一个信息表,所以呢,我们用户的真实姓名,以及呃,实际的这个绑定的手机号呢,我们就从这个包里面来查,那么如果从borrow里面来查的话,也就是说borrow in for和borrow呢,它有一个关联的啊,一个字段,那这个关联的字段呢,其实就是borrow里面的user ID啊,以及borrow in for里面的这个user ID了,所以呢,我们通过这两个字段呢,来做一个表的关联查询,这样的话呢,我们就可以把。嗯,这个姓名这个字段和手机这个字段呢,给他查询到了。
04:01
啊,然后另外呢,我们其他参数这一块,我们呢要呃组装。这个Di表啊,所以呢,这表当中呢,我们要根据什么来查呢?要根据Di表里面的这个ID里面的这个Y6值啊,根据这个Y6值,因为在包for里面存的是这里面的Y6值是吧?根据这个Y6值呢,我们要把这个名称查询出来啊,要把这个名称查询出来,好,那这块呢,就是。我们整个的这样的一个,嗯呃,就是。啊,查询了,但是这个也不能单纯的根据value查名称,为什么?因为比如说我给大家举个例子啊,Borrow info里面。我们这个return method的,比如说是嗯,看一下啊,比如说还款方式是等额本息,对吧,等额本息所对应的Y6是一对吧?啊然后呢,接下来呢,我borrow in for里面。
05:02
那我这个地方method我就应该存一是吧?啊,那你能不能只根据一来上这里面做查询呢?肯定不行,因为Y6等于一的数据呢,不单有等额本息,还有夫妻对吧,还有旅游,还有审批通过这些数据的Y6等等都等于一,你单纯的通过这个Y6等于一,你是查不到真正的等额本息的,你你会查到很多数据啊,这些你都会查到,这个都能查出来,那怎么办呢?还要看一下你当前的这个数据是属于数据字典的哪个类型啊这里啊。还要看一下你当前这个数据是属于资质数据资源哪类型,比如说这个就是属于还款方式类型,这个就是属于资金用途类型,所以在查这两个数据的时候呢,我们还是要知道什么呀,还是要知道这个数据的它的啊这个date code,也就是说date里面我们还要知道这个数据的code是什么,对吧?所以要根据code和value,然后呢去查里面的具体的内容啊,所以这样的话呢,这个关于数据字典的查询呢,可能相对来说呢,就复杂一些,那这样的话呢,我们把这个查询的过程呢,就提出来,然后把borrow in for和borrow这两个数据的这个查询的过程呢,我们写成一个啊,写成一个关联查询,那这样的话呢,既能在查询的过程当中呢,一定程度去优化我们的查询呢,这个搜索语句尽量的去少,还能够在这个写业务的过程当中呢,让我们的业务实现呢,相对来说啊,就是这个容易一些哈,所以接下来。
06:40
那我们就先来说一下这个这块的一个查询啊,你先把这两个的关联查询给它做出来,那如果要做这两个的关联查询的话呢,我们就要定一个map。在在这面啊,在这面呢,我们定一个map。所以呢,我们先找到我们的这个map,然后在map里面呢,我们去创建找到这个borrow in for哈。
07:09
Map啊,在这个borrow in for这个里面呢,我们去写一个list,然后呢,Borrow in for哈,然后呢,写select do in for list。好,然后在接下来呢,我们out。Out,加enter啊。好,然后接下来呢,根据刚才我们的分析,就是我们呢,要做一个关联查询,那这个查询呢,建议大家呢,先在这个地方呢,新建一个查询的这个地方,先试一下你的搜索语句对不对是吧?所以呢,我们比如说写下select。来等一下啊select然后是啥呢?嗯,先查到这个borrow in for表里面的所有的数据,那就是星from Bo in for啊,然后呢啊,正常情况下,我们如果想保证这个效率最高的话呢,就应该把包付表里面你需要的这个字段呢,一个一个都列出来,比如说ID逗号,User ID逗号啊。
08:25
这样写。ID逗号,User I逗号,一个一个字段写哪去了,ID逗号,User ID逗号,然后一个一个字段呢,全都列出来,那这样的话呢,这个工作就交给大家了啊,课下你自己去做去吧,我就写个星了好啊,然后接下来呢,Select from borrow in for。啊,呃,这个。Where对吧?注意我们现在呢,是自己写circle,自己写circleq的话呢,我们在查询的过程当中呢,必须把这个逻辑删除的这个数据呢,给它剔除掉啊,那如果是这样的话呢,我们就得where。
09:09
嗯,Is deleteate等于零啊,就是没有被逻辑删除的这么一个数据啊,等于零啊,然后接下来呢,我们还要做关联查询,关联谁呀,关联这个borrow啊,所以说呢,如果我们要做这个关联查询的话呢,这边呢,我们就得加上啊一个left啊,因为我们要查的其实是borrow for的数据啊,Borrowing for的数据呢,都要给它展示出来,然后所以呢,我们就用left drive。Left draw,然后呢,Borrower left join borrow,那这样的话,为了后面咱们再写这个字段的时候方便呢,我们给borrow in for和borrow呢都写一个别名,比如说borrow in for,我们就SBI,然后borrow呢,我们就SBI行吧,好,然后呢,这块呢,就是我们的一个关联查询的一个基本的这么一个阻碍关联,那当然呢,这个阻碍关联呢,我们还是需要一个关联字段的,所以关联字段呢,咱们就可以写啊,一个是BI里面的user ID啊,还有一个呢,是BI里面的user ID,好,那这样的话呢,我们就把这个关联查询的这个基本查询就写好了,先看一下这对不对啊。
10:28
It is deleted。啊,这个他说什么,他说is deleted在where语句当中是模棱两可的啊这这个是模棱两可的意思,啥意思呢?因为BI表里面和B表里面是不是都有这个字段呀,所以呢,我们就必须明确啊这个到底是哪个表当中,因为我们主表示BI表,所以这个地方呢,我们就得写bi.is明白吧?啊所以呢,咱们咱们在啊运行叫做啊嗯,是不是写错了。
11:01
B。Sb from sbi。然后设计表。你看一下啊。你是不是select啊,这块这块还得写一个select啊。BI点星啊,然后from Bo_in for。BI,然后是left转Bo。Word sb对吧?这没错哈,然后on BI下下线对吧?啊user ID,然后等于b.USCID,我这怎么写点是吧,刚才我写成什么了,刚才我是不是写成杠了。
12:01
好像是哈,我有点不记得了,然后运行一下这样就可以了,明白吧,就是呃,这是个手误哈,好,然后接下来呢,这个写好了,写好了之后那么注意我们是不是还要扩展两个字段呀。我们要扩展的两个字段是什么来着,是这个name和mobile,那它来自borrow表,所以呢,在这个地方呢,我们再把要扩展的字段呢,再给它填充上啊,然后这面呢,我们写B点内对吧?啊,然后是b.mobile啊好,这样的话呢,我们把。啊,这两个字段呢,Mo是吧,没问题啊,把这两个字段呢,给它扩充上,扩充上之后呢,那这样的话,相关的这个数据呢,我们就可以查询到了,当然现在数据库表里面没有数据,我们呢需要去填充数据啊,所以呢,我先打开我们的浏览器,然后。
13:02
做一个申请啊,然后添加数据记录进去。啊,所以这块呢是3000。好。登录。啊三二对吧,三几来着,对三二啊,然后登录登录之后呢,我们来看一下这个。然后接下来呢,咱们在这个地方写借款金额。好,然后在接下来呢,咱们写期数,三个月还款方式,一次还本还息,然后这个资金用途,旅游年利率12,然后呢,咱们点提交。
14:01
好,那么就已提交了,已提交了之后呢,看一下这面数据库,数据库这面呢,就有一条记录,然后这面呢,咱们就是执行查询,执行完查询之后呢,我们要的这个数据呢,就展示在这了,这面呢,就是他关联查询过来的名字和电话,对吧,所以说这面呢,咱们的。这个查询呢,就就有了啊,有了之后呢,咱们把这个搜狐语句呢,粘到咱们的。对面。好转过来。怎么回事?好就粘过来了,粘回来之后呢,咱们这个麦不就写好了吗?写好了之后呢,再把这个先嗯关掉。关掉之后呢,在service里面咱们呢,先嗯,调用一下刚才咱们写的这个map face map.select。
15:03
啊,Borrow in for list啊,然后接下来呢,咱们就拿到了一个borrow in for list,好,然后接下来呢,咱们在填充borrow in for list里面的那个数据字典的数据,所以呢,这面呢是borrow in for list.for each啊然后这面呢,我们遍历到的borrow for啊就是我们啊这个borrow in for类里面的其中的一条记录,然后呢,我们就组装这个borrow in for这个字段当中的数据字典的数据,数据字典的这个数据根据。刚才我们分析的这个过程呢,是数据字典当中的数据,我们要根据什么来查,我们要根据take code以及value来查它的name,对不对啊,这件事情我们之前做过啊,我在哪做过呢?在date里面做过,所以这面我们去引一个date service进来,Source。
16:00
然后呢是private service service,好,然后接下来呢,我们这个take service这一块呢,我们就take service,之前我们写过一个get name by parent take cold and value这么一个方法,对吧,还挺长的,然后呢,我们就把啊,我们的code还有这个value就给它传进来就可以了,那么哎,找数据库,那么这面的code呢,一个是还款方式啊,一个是method。啊,然后呢,Y6Y6哪来呢,Y6呢是从我们的,呃,就是包音里面来。Borrowing food get get啊,Return code return method对吧,嗯,好,那这个呢,是我们的第一个数据字典里面的这样的一个数据记录啊的对应的一个文本值,然后第二个呢,我们也是一样哈,这块呢,我们传什么呢?传。
17:08
啊,就另外一个叫做money use穿他。然后这块呢,我们写get many use,这样的话呢,这两个呢,我们就分别得到两个,呃,就是字符串一个呢是。叫return method的吧,就叫它啊,还有一个呢,叫做many use吧,叫它好,这样的话呢,这两个字符串我们得到了之后呢,啊,我们呢,就可以把它们放在这borrow in for里面了,Borrow in for点嗯,Get parameter,因为我们说我们的这个数据字典当中所得到的这个数据呢,我们都给它封装到这个其他参数里面啊,所以呢,这个Bo for.get parameter,然后点put,那这种其他参数呢,因为它是一个啊集合类型的,所以它比较灵活,你想组装什么就组装什么,这种就比较适合于我们刚开始的时候,可能对这个啊所要组装的这个参数呢,感觉它不是特别确定啊,未来可能扩充的可能性还特别大,那这个时候呢,我们就把它直接放在map集合当中,这样的话呢,这个灵活度就比较大了啊,那比较确定的这种,我们就可以以这种形式来组装,所以这个地方其实在扩展这个啊。
18:28
数据实体这方面呢,其实我们又有两种扩展方式,第一种呢,就是扩展确定的字段,第二种呢,就是扩展不确定的字段啊,一种呢是用确定的属性,一种呢就是用集合好,那所以呢,这边就我们在这个集合当中去put put什么呢?比如说我们就put这个method。然后接下来呢,咱们把这个刚才得到的这个method这个字符串呢,就复制给他啊,这是第一个,然后第二个呢,我们再扩展这个money use,然后当然呢,我们把刚才得到的这个many use这个字串呢,复制给他,这样的话呢,这两个字段我们就扩展好了,扩展好了之后呢,然后最后我们这个位置。
19:10
大家看需求啊,需求就是啊,借款信息列表这块,我们这个位置呢,还要展示一个状态,这状态呢叫审核中,当然了这个状态呢,最后在前端根据它的这个状态的这个啊。我们这边有一个状态哈,应付。就是根据这个状态的这个数值呢,在前端咱们做判断啊,通过这个不同的数值来进行不同的展示也可以,那我们呢,也可以在后端呢,把对应的这个status所对应的这个文本值呢,也给它扩展出来,这样的话呢,前端可能就直接展示就行了,前端就不用再根据一来判断一到底对应是啥了,所以我们在后端呢,统一给它扩展出来,那如果要这样做的话呢,我们status对应的文本咱们怎么取呢?这样去取就是。
20:02
还是在这个写在这个地方吧,我们status对应的文本呢,我们可以这样去写,Borrow啊,In for status in um啊,啊,然后呢,点get message by status啊,然后接下来呢,就是borrow in four,目前为止的这个status,我们把它传进去,好,那这个方法是。啊,Borrow in for get get status好,那这个方法呢,是之前我们其实在别的枚体当中分析过的一个方法,那它呢,可以通过传进来一个整形的statuss值,然后通过遍历所有的枚举,然后做和这个整形的statuss值做匹配,匹配到的这个所对应的message就是你需要的message了,所以呢,它相当于给一个整形的status,然后遍利这里面的所有的枚举,然后看一看这里面所有的枚举哪个和这个二相等,你看这个check OK和二相等,那他就把拆OK的审核通过给你返啊就是这么一个方法,所以呢,在这面呢,我们就可以通过这个get message by status啊,通过status的值获取status所对应的message,这样的一个方法呢,我们拿到这个status字符串哈,所以呢,这面呢,我们就是string status。
21:20
然后接下来呢,我们这边呢,就可以再给它扩展一下,比如说status status好,通过这种方式呢,我们就可以扩展啊更多的字段了,你想扩展什么就扩展什么,只要通过这个相对应的方式把这字符串取出来,然后呢,再通过get parameter put的方式呢,把这个字符串再设置到建值对当中就可以了,所以这块呢,是我们对整个的啊这个borrow info的一个扩展,那整个这个borrow INF for扩展完毕之后呢,因为啊整个这个borrow info list呀,它是一个引用类型的啊,然后所以borrow info被改变了呢,Borrow info list本身呢,里面所装的这个borrow info内容呢,就也都被啊这个填充上了,那这样的话呢,我们直接返回这个borrow for list就可以了,所以在这面在这面呢,我们return哈,Borrow for。
22:09
好,这块呢,就是我们整个的一个啊,业务层的一个实现,还有map层的一个实现啊,然后呢,接下来呢,我们就。来运行一下啊。测试一下哈,把这个重新启动一下,我先停一下吧。
我来说两句