00:00
那上午呢,我们主要是整合了投标这个页面当中的。这个立即投资的按钮啊,把它整合完毕了,整合完毕了之后呢,我们需要呃,让前后端对接起来,也就是说前端既然我们开发完成了,接下来呢,我们就在基于前端的这个功能呢,在开发后端的接口,那所以呢,我们把后端的接口呢,呃要先定义出来,那么定义出来的这个同时呢,我们就需要思考一下了,我们的这个后端接口,它一定是要接收我们前的数据的,也就是说当你点击这个立即投资的时候,那么前端包括投资金额的一系列的数据呢,要传到后端去,那么包括什么呢?我们在这里面呢,就把这几个内容呢,就给它封装起来,第一个封装的呢,就是land ID啊,那第二个封装的呢,就是last amount,实际上真正我们想在前端传过去的,其实就是这两个内容啊,就这两个内容,然后这两个内容呢,并不是从前端直接传过去的,而是从前。
01:07
那通过我们的token,然后获取出来之后,在后端的controller里面呢,再把它俩填充上,这样的话呢,我们希望在service层,那一定呢去处理这样的一个对象,或者是传输这样的一个对象,所以说这里面的VO定义呢,就就相对和之前啊,就是有有一些不太一样啊,之前我们定义的VO呢,就是全都是从前端组装的数据,那么这个里面呢,只有这两个是从前端组装的,然后这两个呢,是其实是从controller层组装的,当然你前端组装如果更为严格的话呢,不组装它家也行啊,然后从ler层获取出来,单独的传到service维从也可以,所以这个其实呃数据的组装从这里面大家就可以看出来,其实比较灵活啊,它没有一个就固定的答案,一定要怎么去做,只要你能完成这个功能,把它这解释合理就可以了,啊,那这块是我们的一个没有,那我们就先把它创建出来。
02:09
在SRB这个里面我们找到包。好,我们先把这个嗯外给他定一出,然后接下来呢,我们把这里面的内容,这少沾了一个艾是吧。好了。然后呢,这样的话,我们这个VO那就组装好了,组装好了之后呢,那我们来看ctrler这一层,我们直接读一下这代码啊,它是不是直接接收这个VO啊啊,然后有这个呃,Request request里面要做什么事情,是不是从request里面获取通,然后获取ID啊好,那么之前我们的那个token里面呢,实际上也封装了username,所以我们也可以一定从token里面把username获取出来,当然了这个也比较灵活,不从这获取也行,我最后我在业务层通过UCID来获取UC内容是不是也行啊,就这方法很多啊,那这样的话呢,我们就是从偷当中获取UID获取。
03:29
然后接下来呢,就把我们拿到的这个UCID和UC内容是不是就组装到了V里面啊,其实从某种意义上来说,这个UCID和user内容也是来源于客户端,为什么?因为它是来源于token的,所以说呢,那它就都算我们客户端主端的这个event没有对象了,然后将来呢,我们在这地方就一定把这个我们组装好的这个advance这一次提交的view就一起呢,就commit到我们的service层,然后呢,在service层我们去做啊表单提交的动作,也就是说这个数据呢,我们整个在service层要组装我们嗯,恢复宝里面需要的参数了,那么组装完了之后,是不是你看这种熟悉的层上又出现了,是不叫放实上这里面所做的工作的最终的目标,就是根据我们当前已知的这个VIVO里面的所有的条件来组装我们的呃,表单自动串,然后还。
04:30
也是需要把这个表单词串传到前端,然后呢在前端我们去渲染,然后做表单提交,所以是一样的流程啊,那这个很超来呢,相对来说业务逻辑比较简单,我就不花费时间去敲了,我们把精力放在后面更复杂的这个内容上啊,那这块咱们就复制一下吧,叫land,我们可以说了。嗯,找到我们的粉托了,然后呢是API里面啊,然后烂的们有没有是吧,没有的话从这复制过去就行好,然后呢,这就烂的I说了啊,然后接下来呢,我就直接把刚才咱们说的这话复出来了,写了。
05:14
就块大家你看你应该能做到一目十行吧,就是你写代白,你写着写着原因你一一开始你会觉得一目十哈,简直是天方夜谭哈,一个字母一个字母看我不范能看懂,然后你看现在这个代码基本上就是我们天天见的对吧,一下就能看出来什么意思啊,所咱们就不去写它了。好,那这样的话呢,我们就来到了咱们的这个commit变词的这个方法当中,那么这个可变性event的这个方法呢,实际上咱们最终的目标是要做什么呀?就是要组装数据,我们看这个组装数据哈。就是前面做了一大堆事情啊,你别管它多复杂,那最终的目的要干嘛,就是要做这件事情对吧?好,然后做完这件事情之后,然后我们去构建这个表单,表单词块构建出来,然后指定一下外URL,然后把前面组装的参数都放在这里面呀,明白吧?啊所以那嗯,后面这部分的这个参数组装,我们是根据文档组装的,对不对,所以我们你要自己做的话,你是不是得打开文档啊,你们先把文档打开啊,资料第四对话文档。
06:40
然后呢,我们要做的是投标吧,三点看一下啊,3.3.10是吧,满足投标,然后呢,现在我们要做的是提交投资信息啊这个流程,那么它的参数呢,就是这个a ID vote ban code ban g ban code,这个agent ID就是之前我们所说的,我们每一个接口当中都用的啊,给商户分配的唯一标识,然后呢,这个班扣的呢,就是投资人的那个班的扣的,然后这班费的班扣的呢,就是借款人的班扣的啊,因为咱们在这个投标的过程当中,实际上投资人呃的这个相关信息和借款人的相关信息都要有修改,比如说投资人他要生成回款记录,然后借款人呢,他要生成还款记录,然后投资人的账户里面的金额呢,还要进行冻结,所以我们要操作这两种用。
07:40
库的一些相关的优据库表,那么呢,我们就要把这两个用户的班code都传过去,然后接下来呢,就是agent project code project code实际上就是啊,相当于你是哪个项目的这个编号就是跟标的相关啊,是标的的这么一个流水嘛,然后这个呢是project name,那这个呢,就是标的的那个名字,比如说白领带零一啊,这是标的的名字,然后这个呢是agent field number,凡是叫这个什么订单号的,这个就是针对当前的这笔操作的一个流水,那么我们当前的这笔操作就是投资操作,那所以呢,这笔投资它有一个,呃,这个自己的一个流水啊,那比如说这一个标的有十个人投资,那么这十个人就会生成各自独立的流水哈,有十笔流水啊,这投资流水,然后呢,这个呢是vote AMT,这是投资金额,比如说我在文文本框当中,我录入的这个金额。
08:39
在。啊,这边啊,在这个文本框当中录入的金额就是那个投资金额啊,这边然后接下来呢,就是投资奖励金额,这个咱们系统当中有整合这个功功能啊好,那咱们就肯定就穿越就行了,然后如果你项目当中有这个功能的话,还得根据实际需求去做啊,然后我们这边就先暂时忽略掉,然后户手续费,商务手续费这块就是呃,那个咱们的。
09:12
嗯,商户收的那个用户的那那笔手续费啊,就比如说我,嗯,我我有用户借了1万块钱,然后商户中间的中介费,他要收1000块钱,那么这就是1000块钱,最后我的平台给的这个借款人,嗯,放款的时候,放款的时候放多少钱呢?我只放9000块钱,也就是说他这个他现在这个平台的规则是这样的,就比如说你要借12万,最后放款放在你手是不到12万的。啊,它是这样的一个规则,有的平台是你借12万,然后呢,他放款放到你上,他是给你就给你放12万,然后接下来呢,他手续费是单手的,他是从别的地方可能就是有一个手续,说你买股票,你买了5000块钱的股票,然后他其实给你扣是扣了5005,对吧,他手续费是单手的,但是这个呢,他给你放款啊,你借5000块钱,他不是给你放5000,他是给你放4995,是这个意思啊好,然后呢,所以这个是呃,这个手续费了,然后呢,这是项目的总金额,那是就是项目的,而且这个是不是必填的,所以说其实跟咱们目前为止这个没什么太大的关系,我们只传这个就行,就是投资投资金额啊好,然后呢,嗯,然后接下来呢,这个是读读也不是亲的,然后再接下来呢,是。
10:37
就是那个回调通知的ul了,这个呢就是我们呃接收信息源返回的ul,这个呢是时间错,这个是签名,这几个大家都比较熟悉了,每一个记录当中都有行公四个好的,所以这几个呃参数的组装呢,因为之前咱们在呃充值和账绑定都一个一个的给大家写的,所以这块我就不一个一个写了,那我刚才一个一个给大家说了一下,所以呢,我先一次性的先把后面这部分内容啊,前面我们是需要自己写一下的,因为前面的业务逻辑性还挺强的,那这一部分就是机械性的组装参数了,那我们呢,就把他们先在直接做过来了。
11:17
这没问题吧,嗯,因为这一个一个写,我感觉有点浪费时间啊,那咱们还是得要一个一个看一下的,一个看一下呢,像A侦ID它是不是就还是取那个这边相当于给你配的那个SPID什么的东西啊,就你的商户号啊啊,相当于你的商每个商户都有一个会员号,是啊,就是那个商户的那个会员码一样的东西,然后这个vote班扣的就是,嗯,投资人的班扣的,一会我们再取出来。Benefit code是借款人的code,一会我们再取出来,然后呢,Agent project code就是项目的编号,当时我们生成标的的时候,我们是给他生成了一个流水号的,那么我们要把这个标的的流水号给它取出来,然后这个呢,就是标的的名字啊,然后这个呢,是当前的订单的编号,一会我们要通过流水号工具再为当前的啊,所谓的订单就是当前的这笔投资再生成一个订单,然后这个呢,就是从当前的这个标记里面取出标记的总金额,然后这咱们你愿意写点啥就写点啥,那我就备注上么?然后这是这几个值,常规的之前咱们写过很多次这几个值,所以你看其实咱们整个这个业务要写什么也就知道了,要写什么,是不是就要把这几个数找出来啊,明白吧,啊,我们整个这个业务层其实最终的目标就是组装缝尺寸,然后我们组装分尺寸的位。
12:51
过程当中我们要给这些东西赋值,我们赋值的过程当中有现成的我们就附上了,没有现成的那我们就要找出来,所以前面所做的所有的事情,那么有一部分工作啊,有两部分工作,有一部分工作就是什么呀?呃,就是组装,或者是说获取parameter map中需要的参数,对吧?啊,所以这是一大堆事情要在这个地方做,然后接下来呢,还有一部分工作,还有一部分工作是什么呢?就是咱们在啊前端不是做了很多校验吗?
13:33
前端的这些校验在这个投资这里面是吧,校验用户是否登录啊,校验用户是否是投资人啊,是否超慢啊,是否一般的证书费啊,余额啊什么的,我们为了保证这个项目的安全性,为了保证恶意用户任务前端直接做提交,那么我们实际上在后端也要对这些进行校验啊,所以呢,就是健状性的校验。所以建个性的校验,所以你会发现这业务再复杂,无非就是围绕着这一件事情来做,就是为了让第一让这些参数传过去更安全,有建设性的校验,第二把这些参数都找到,那么这个就是组装需要的参数,然后最后的目的还是做啥对不对啊,所以前面做啥我们就知道了,那么我们就来看一看吧,那首先呢,我们来看一看这个。
14:30
啊,间段性校验这一块啊,间段性校验这一块呢,我们先判断这个,第一个就是我们先判断一下这个标标的的状态啊,就是跟前面稍微有一点啊,不一样的地方呢,就是在咱们的这个后端,在咱们这个后端不但要判断像之前咱们说的有没有超卖足不足啊,还有一个呢,就是到后端了之后,我们是可以通过藜麦性VO拿到这个标的的ID,然后呢,我们继而呢,能够通过land matter resource叫land map land land map,我们这样人能够通过land map去叫应该是get land map.select的人来ID land。
15:30
你的ID能够拿到这个land,那么在land里面我们能够拿到什么呢?在land里面呢,我们能够拿到这个land,也就是说这个标的的状态。为木资中啊,好,所以呢,首先我们得判断一下这标题的状态呢,他是正在募资中的,如果是已经募资结束了,然后呢,有些人又通过接口恶意的要再进行募资,或者是啊,那我们就不需要让它去能够这么承诺的执行,或者不能够让它去承诺执行,所以呢,我们先判断一下它的状态,呃,Third点这数好,这个is数的话呢,我们把这个land的嗯,Status给它拿出来,嗯,然后呢,让他和谁比呢?和那个land status。
16:33
里面的in west叫募资中啊,Investor叫get status,呃,我们让他呢,我看下这个get status。那S还数对啊,然后呢,我们让它俩进行比较,它俩进行比较,如果相等的话就证明什么呀,我们对标记的状态是对的,就是木字中啊,所以我们用A数断言它一定是相等的,那么如果它不性不等就证明什么,就证明我们的标题状态不正确,那么就赶紧退出去啊,会意的操作了,所以呢,是啊,Response en nu点就当前状态无法投标,烂的error啊。
17:27
我们要这样呢,一个判断好,那这个话呢,是对标的状态的一个判断啊,然后接下来呢,我们再来判断,就是比如说超慢超慢哈,超卖的派呢,那就是啊还是跟之前一样,就是特麦怎么看断乙头。就是已投金额吧,加上当前投资金额对吧,如果是大于呃,我们的那个标的金额佣金金额,那么就超卖了对吧。
18:18
当已投金额加当前投资金额,如果是大于标的金额,那么就超慢了,所以呢,我们就可以先算出它的这个值,就是land的点啊,Get invest amount,这是引头金额啊,然后呢,啊,和谁相加呢?加上I的I和谁相加呢?大于我们的这个当前的这个图形,当前图形是在eo里面呢?我们从前面传过来封装起来了对吧,所以呢,也外是VO对吧,盖色嗯也外色帽子这个这是当前的头型,然后它这里面是从错端传过来的,它直接用spring给给这个直直接就呃给他接收了,这是可以的,那其这款可以,但是我们这款不可以,就这款我必须得给他转一下,你有这个S。
19:20
好,那这样的话呢,这个就是我们的啊整个的这么一个啊,已投金额加本次投资金额对吧,就是嗯,相加的一个结构,嗯,然后那个总和吧,然后呢,嗯,third.is is is true is true,然后我们some some的话,我们啊它它大于它是超慢,那么如果是数的话,就是它必须得小于等于。嗯,标记金额对吧,就是没超卖,这样写吧,小于等于标记金额就是正常对吧,否则是超慢,然后我们现在就要判断正常的情况啊,要判断X处的情况,那么我们就按照这个写,那就是sum小于,小于等于那个标的金额,标的金额那就是long.get amount对吧?啊,但是它俩不能直接比,嗯,它俩得给它转换成这个double,然后这个也是转一下Y6,好,然后呢,用它俩来比,那它俩比完了之后,如果小于等于这件事情成立了的话,那么我们呢,就会认为就是response en nu,然后点land这块已满标无满坐标。
20:59
就相当于超卖,没办法啊好,那这个是超卖的情况,然后在接下来呢,就是余额判断一下用户的余额。
21:13
用户余额啊,然后判断用户余额的话呢,那就是嗯,当前的用户余额呢,必须得大于等于当前用户的投资的那个金额,对吧,我账户你说1万块钱了,我要投2万,那你肯定不行的,所以你当前的余额要大于等于你投资的金额,当前用户的余额大于等于当前投资金额哈,然后接下来呢,我们就把这个嗯,当前用户的余额,那你要查当前用户的余额,你是不是还得查那个用户账户表啊,得把那个用户账户给他查出来,用户账户怎么查,用户账户用UID查呢?所以呢,我们在这个west VO里面呢,我们可以先盖出UI。
22:14
啊外U啊,这个是投资人的啊U,然后接下来呢,咱们用UC account service查这个no户,Source private user account。为啥是service matter呢?因为我们之前在这个service里面写过一个方法,插U的方法,直接用就行了,User can'service.get can,这是之前咱们写的,然后这个方法呢,它直接就接受一个user ID,所以invest user ID传过去,那这边呢,我们直接就拿到了一个用户的余额啊,然后呢,我们就需要做判断了,当前的余额大于等于当前投资金额的时候,我们说呢,它是正确的,我约按就是错的,所以呢啊,third.is竖。
23:17
A数呢,那我们判断的是amount必须是大于等于,嗯,West VO啊,然后点get当前投资金额invest amount对吧?啊然后呢,这块呢,我们是amount,我们还是给它转成double value amount是什么类型,对单对吧,但是这个里面amount是它是词类型的,这个转就是来回转的这个这这个单还表什么的,是double的是吧?那我们就也得把这个string转成double,这个是你们自学渣基础的时候,应该印象比较深刻的就double.pass double啊,或者是in t.pass印象是吧,那个是转较数的啊,这个double.pass double是转几点,然后将来的话就比,比完了之后呢,如果它不满足这个S条件的话呢,我们就是response。
24:17
弄点啊。有一个叫做余额不足啊,余额不足啊好,那在这个过程当中,还有可能会有一些其他的,就是更严谨的内容需要判断什么的,这些就留大家自己去往后补充啊,比如认为这个要判断,比如说你认为用户类型也要判断,他到底是不是个投资人,他还是借款人,对吧,那你就把谁取出来,通过user ID再把user取出来,然后再把user当中的那个ID,那个那个T你还得去比较对吧?啊,你还得跟当前登录用户啊,你还得去啊,就是那个是当那个T还得跟一比较,对吧,如果不是一的话,那也不能让他投资,所以这些就比如大家自己去写了,那你再想一想,还有没有什么其他的更严谨的一些东西需要你判断,那你一个一个都给它写上,好吧,这边就给大家抛砖引率啊,我们写一个好,那这样的话呢,我们就把这些呢,啊,就是这个判断呢,咱们就都给你写好。
25:19
所以我先存一下吧。
我来说两句