00:00
接着我们前面的逻辑,那创建好了这个订单,也创建好了这些订单项,那接下来呢,我们希望计算出我们订单里边的这些信息,最终要做一个验价,那么接下来呢,就来做上一个方法,这个方法呢,它是专门来计算这个价格的computer price,而这个验价呢,我们现在也不用做,那只需要把最终我们计算好的这个价格放到这个to里边就行了,好在这个comp price在计算的时候,那传入我们要计算哪个订单,然后这个订单里边的所有订单项,然后我们这个传入以后呢,最终计算来的价格我们肯定会放在我们这个订单的这个实体对象里边,所们现在呢,就希望这呢有一个方法就是计算价格相关,这个计算价格相关的所有数据呢,我们都放在这儿走来创建出来,那么接下来编写这个方法的实现,首先我们订单里边价格相关的,我们来订单。
01:00
价格相关的订单价格相关的数据呢,我们要进行计算,因为订单里边的价格们现在来看一下我们这个数据表,来打开我们这个订单改变表,订单里边我们来关心的价格,首先是我们订单的总额加来是应付额运运费,这个运费呢我们之前已经设置过了,我们在构建订单的时候呢,设置过了,所以呢,接下来我们就来设置其他的价格,首先我们订单里边呢,先要用第一个订单的总额,订单总额就是所有购物项相加后的结果,我们把这个所有的购物项it点一个来stream。我们直接来进行一个for each便利叠加就行了,那现来便利我们这个所有的订单项,这个订单项数据,然后把订单项里边每一个订单的这个价格,它呢有一个叫price SQ price把这个价格来拿来来做一个总和相加,好来拗一个贝decim,那现在呢,这是有一个总价格,我们现在默认是0.0,这个呢是一个total价格。
02:10
那这个总价格呢,就应该是我们现在呢,每一个这是一个单价,单价呢我们要乘以数量,是有一个multi派,Multi派呢,我们现在这个订单我们要买多少个点一个getate get一个我们现在的SQ的这个数量,我来找一下,这个数量呢,在下边有一个SQ quas,好,这是我们的这个数量,当然这个数量呢,我们还要封装成一个DEC,我们来进行计算,贝个DEC,好,那现在把这个数量呢来放过来,这是一个TE,我们来加上string比较合适,好那现在呢,相当于计算出了每一项的这个价格,那这个每一项的价格,那顺便我们把这个价格呢,应该给我们这个订单项里边也保存好,你们订单项里边都没有这个价格,或者我们在构建订单项的时候,直接将每一个订单项的这个总价格,你应该计算出来,好,我们在这儿呢,既然返回当前订单项,那么就应该给这个订单项。
03:11
他一个价格来看,订单项里边有没有相关的价格,订单项在这儿,订单项价格相关的数据在这一块,我们要优惠后的这些各种价格,然后呢,还有一个最终呢,有一个该商品经过优惠后的分解金额,相当于我们减去所有优惠以后当前商品的价格,所以呢,我们可以来设置一下这个属性,这个属性叫我们的integration amount,好,我们现在来set一个integration。我们在这来构建价格的时候呢,我们就可以把这个设置上来,我们这个设置呢,在每一项里边设置这一块呢,有这些信息,然后我们接下来第六步还有我们这个订单项的价格信息,订单项的价格信息,这个价格信息先计算出当前项的价格,那当前项的这些价格呢,里边呢,包含这些价格,所有的优惠相关的这个价格,我们有各种分解价格,那这三个promotion carbon,这几个amount,然后呢,最终这些amount得来以后呢,有一个real amount好,我们现在这几个优惠价格呢,我们都是零的,所以们现在可以来设置上把这几个优惠价格,有一个叫promotion,我们这个促销的这个优惠价。
04:26
我们当前这个这一项可能有一些促销信息,我把这个促销以及计算以后,可能会给他减上一些价格,那减了多少,比如我们来写在这儿,那现在呢,就是0.0们减个零,那接下来还有我们的这个信息integration,点一个set,那促销信息是零,包括呢,我们现在的这一块优惠券,我们现在呢也是零,那想要用优惠券,大家都可以去来查一下,来计算一下,我们现在呢,都给他给一个默认的这个零,好,这是他优惠券要用的是零,以及我们这个里边它会订单项里可能会用到我们的这个积分优惠的integration啊set一个integration这个价格它呢也是零,然后呢,那接下来还有一个总价格,我们这个订单项呢,接下来还有当前项的实际价格,点一个set,有一个real amount,那这个real amount实际的价。
05:26
格就应该是我们订单项的单价乘以我们当前订单项的数量,那单价数量在前边呢,我们都已经设置好了,那接下来就从这里边来获取itemm,这个里边我们来获取它的这个单价,这是它的单价,然后呢,我们可以来乘以数量,有一个叫multi来乘以一个数量,数量呢是我们这个里边专门封装了有一个quantity,好,我们乘以它的这个数量,这样get一个,有一个叫SQ quaity,但这个数量呢,我们要乘,因为我们是用big decimma计算的,这个也得是一个big decimma。好,现在这个数量呢,我们就把原来的这个数量来加上,这个数量是一个整数,我们变成字符串,让它呢构造成一个贝格decimma,然后计算来乘号后的结果,这就是当前订单项的实际金额。当前订单项的。
06:23
实际金额。那这个实际金额呢,就是我们这个总价乘数量,但是我们要计算订单总价应该加每一项的实际金额,加上每一项的这些优惠金额,因为我这个实际金额假设是100块钱,我们减去优惠的一块,两块,三块,减完以后呢,就是当前项的我们这个金额,所以呢,现在这个订单项的实际金额我们来放在这儿,当然这个实际金额我们可以这个总价算完以后,把这三个直接减掉好,我们现在呢,就实际金额我们就直接来计算好,我们把这个计算后好后的这个价格我们拿过来,这是它原来的价格。
07:02
这是它原来origin,这是它原来的这个价格,然后呢,我们接下来原来的价格必须减去点一个subtract,我们减去什么呢?减去它的这些各种优惠价,所以呢,之前我们设置了优惠价,那这个优惠价呢,我们现在都是用鞋子的,如果我们需要远程查询,大家可以去来远程查询,那他减去优惠价得到一个金额继续减,再来减去。我们这是优惠券,优惠以后我们会给他减掉多少钱,还有我们这个打折信息,所以我们从这一块,因为我们之前的这些信息都是零,但是我们还是要获取来,我们通过这个打折信息给你减了多少钱,你再来减掉,然后呢,再来subtract,我们这个打折呢,有还有我们的这个积分,我们给你减了多少信息,我们也可以在这儿再来减去这个积分的金额,所以我们订单的实际金额应该是总额减去这些所有的数据,得到我们订单的实际金额,那就是总减去各种优惠。
08:07
好,这是当前订单项我们的实际金额,那这个订单项的这个金额算好了,我们来看到我们这个前边,前边我们这个计算价格的时候,那这一块呢,就不用计算了,我把这一块呢,先来删掉CTRLY,因为每一个订单项我们在构建的时候,当前订单项的所有金额我们都有,主要我们来get一个real amount,这就是当前订单项的真实金额,我们订单的总额就是这些真实金额的叠加,我们这个total点一个and,把这个真实金额加上来加厚的结果,因为每项都要叠加,加厚的结果再来赋值上来,好,这样呢,相当于我们叠加了每一个。订单的总额,订单的总额,总额呢,就是叠加每一个每一个订单项的咱们这个总额数据,总额信息好,这是我们这个订单的总额,那订单的总额呢,我就可以来设置进来,Order entity,点一个来set了一个,这有一个叫订单总额,我们来找一下订单总额的属性,在这它还不是应付总额,就是这个订单总额叫total amount,应付的总额呢,我们还要让运费之类的参与计划计算,所以我们现在set一个,有一个叫total amount,我们的总额,总额呢就是它那订单的总额set上那订单的其他价格,点一个set,除了有我们这个订单的总额,还有这个应付总额,还有我们这个运费金额,那这个应付总额。
09:46
我们再来设置上set pay amount set,我们这个点一个pay amount,这是一个应付总额,然后呢,再来加上订单点一个们set set一个什么呢?除了应付总额还有一个运费金额,这个运费金额我们之前都已经set过了。
10:06
在构建订单的时候,我们set过,所以我们这一块呢就没有了,所以呢,我们这个应付总额应该是我们的总额,因为这个总额呢,已经把每一项的优惠给他减去了,所以我们这个总额再来加上一个我们的运费就行了,我这个订单的运费我们之前都有点get。我们的amount,这是我们的运费,那现在呢,这就是我们设置这个应付总额,好,那这个呢就设置上了,但订单的其他几个额度,促销优化的金额,积分抵扣的金额,以及我们优惠券抵扣的金额,我们现在呢也得统计出来,给每一个来计算上们现在呢,订单里边。因为每一个订单项的这个应付的这些额度我们都有,现在订单的总共。总共优化后的价金额有一个promotion好点,一个set一个promotion,那这个呢,就是应该我们来便利每一个订单项的时候,除了拿到订单项的实际金额,我们还可以拿到订单项优惠券减去了多少,然后呢,接下来这个订单项还有我们的这个积分减去了多少。
11:24
还有我们这个订单项,订单项我们还有一个,我们这一块再来看,还有一个我们打折减了多少,我们promotion或者carbon,好,我们现在呢,打折点一个get promiion来减了多少,所以呢,我们订单里边汇总的这个数据,应该是所有订单项他们优惠减了多少,这些减了多少,所以呢,我们现在几种金额我们全放在这儿,要进行计算,第一个是couple,好,我们这个优惠券减了多少,有一个备个贝西吗?好,我们现在0.0,我们放在这儿,然后呢,现在是我们的这个优惠券,我们得到每一个的这个优惠券,那么就应该是优惠券的这个额度,加上我们当前订单项呢,减了这么多,然后呢,接下来他们的总优惠减了就是这么多,好,这是我们这个优惠券就有了,然后同样我们的这一块积分给我们减了多少,那现在再来创建一个这。
12:24
那现在呢,就叫积分减了多少,那积分减的这个数量跟我们这一块呢一样,那们积分点一个加上我们当前项这个积分减了多少,相当我们要汇总好,把这个呢删掉,CTRLY删掉,然后呢,我们得到一个总数值,把这个积分在一复制覆盖好,每一项的这些优惠了的东西,我们都要来进行一个汇总,还有我们的promotion这个打折减了多少,CTRLC走我们这个打折呢,现在CTRLC我来复制过来,那么这个打折在这一块也是一样,点一个and,每一项的这个信息点一个get。
13:07
我们的打折减去的金额,这就是我们订单总共减去的打折的金额啊。所有都有了以后,那我们的现在订单的总额,各个优惠的金额,我们现在相当于都有了,那这个总额我们也把它放到这儿好,我们全部写成统一写法走,那现在呢,我们接下来给订单把所有的数据就放上们的总额在这儿,我们打折,总共优惠了这么多,然后呢,其他的order实体类点一个set,我们积分总共优惠了这么多,就是这一块的内容,以及我们order实体类点一个set,我们还有一个优惠券,我们现在优惠了这么多,把这个优惠券拿来好,那现在呢,我们这个金额各种我们就设置好了,另外我们在构建订单的时候,我们来看订单信息,哪些还没设置,这一块金额的所有信息我们全设置好了,然后呢,后台调整订单的使用折扣金额,比如我们管理员还有权限给他优惠一些,那这个呢,我们就放在这吧。
14:16
然后还有我们的这个订单来源,这些我们不设置了,但是重要的是订单状态,我们在创建这个订单的时候,每一个订单默认的这个状态我们肯定都得设置上,好我们再来设置订单的时候,在设置订单的相关状态信息,首先我们这个订单,订单我们在这构建订单的所有信息,收货地址,它的运费,那都构建完了,订单还有这个状态,这个状态呢,我们就叫status,点一个status status那默认的状态,我们订单呢,专门有一个枚举类订单,Status的这个枚举,它的这个默认状态呢,就应该是那订单刚创建,那就是待付款状态,点一个get code的,把它这个状态码呢,给他一保存这订单的状态,再来看订单还有哪些信息,自动确认时间,想订单几天,用户没有点确认收货,他呢,就算自动确认收货。
15:16
这样我们全系统都可以来设置一个默认七天等各种信息,我们来set一个,有一个叫confirm自动确认时间,我们现在呢都是七天啊默认,然后呢,再来加上物流,这些信息有了物流才能有,还有当前订单可以获得的积分和可以获得的成长值。这个积分其实就是订单里边所有商品,每一个商品能获得多少积分,每一个商品呢能获得多少成长值,然后我们给它加上去的,所以呢,我们现在订单在这算价的时候,我们在这儿计算价格,因为每一个订单项呢,我们也都设置好了他能获得的积分,在后边我们能获得的积分和获得的成长值,所以呢,我们再来叠加到所有的总订单上,当然我们不叠加的话,我们后来也计算也是没问题的,所以们现在呢,还想要叠加一些信息,就是当前订单能获得的积分,Get我们的这个integration,我们这个积分,这是我们第一个我们的积分信息,然后还有我们的一个当前订单项,这个订单项里边呢,还有一个get我们的成长值信息,所以能获得多少积分,能获得多少的成长值,而订单的总积分和成长值又是一个叠加状态。所以我们这。
16:37
遍历每一个计算价格的时候,这些所有东西我们都来算好,这是我们的总积分,等有一个就把它复制过来,CTRLC,然后还有我们的总成长值。总成长值,然后呢,每一个又是一个叠加状态,我们这个积分加等于点一个加上我们现在自动获取到的这些积分走,但我们现在都必须用一个decimma这个类型的点一个to string,好,我们这个积分呢,加完了以后得到我们的这个积分。
17:11
这是我们的整个积分来给它创建一下,还有我们的成长值也是一样,我就把这个复制过来,好,我们把这个积分做完了,把这个删掉,然后成长值,成长值呢,我们拿过来,它呢也是调用一个加法,那怎么加呢?还是我们这个decimma来用一个贝个这个加法里边把原来的这个。积分的这个值,成长值的值拿来点一个吐丝转来给它变成decimma,然后进行添加,这个互相叠加呢,最终叠加到这个growth,好,这是我们这个积分,而积分和成长值,那么最终呢,也要放到我们这个这个总订单的信息里边,那这个设置积分等信息,相当于告诉我们这个单系统,我们这个订单里边的这些积分能积多少分等等,点一个set。
18:06
赛什么呢?那现在能积的这个分数,那现在订单里边专门有一个可以获得的积分,Integration和。Growths,好,我们来set一个integration,那能积的分我们用decimma已经算好了,那算好了以后呢,我们接下来就给它把我们的这个拿过来,他要int,那我们就直接给它转成一个int也是可以的,然后接下来在这里边积分有了,还是我们有一个成长值,当前订单能获取到的所有成长值我们都在这儿。点一个。我们直接给它转成一个int,积分成长值呢,都要用int,而且我们订单项里边每一个在这计算积分成长值,我们看当时是怎么计算的,我们在这呢,是来计算价格,我们都设置好了这些积分信息来在这儿来计算订单项的时候。
19:03
构建订单项的时候,我们每一个积分信息直接是拿他购物车当前买的商品的这个价格来集的,其实我们这个积分呢,应该按照我们这个价格乘以他购买的这个数量,他买的越多,花的越多钱,我们积分呢就应该越多,所以我们应该是这个price得到以后,Multi乘以我们的这个数量,数量呢由于是一个整数,还是DEC过来,把当前的这个数量拿过来一乘。乘来以后,由于我们这个呢是一个整数,所以我们再来给它变成一个整数multiple,我们乘完在这把它呢变成一个整数int y6。然后呢,最终我们的这一块就有了,还有我们的成长值也一样,两个算法呢都是一模一样的,把这个拿过来,CTRLC,我们复制过来这每一个购物项的积分与成长值,购物项的这个积分成长值算完了以后,我们在这来计算订单价格和积分等相关信息,价格积分等相关信息,那在这呢就可以来设置好这一块是价格,这一块是积分,来看订单还有什么内容,这些收货人信息我们提前构建的时候都已经有了,然后还有订单的这些删除状态。
20:22
呃,订单呢,刚创建出来默认删除状态呢,都是零,没有被删除好,那们现在呢就来设置一下,把这些我们能设置的信息都可以来设置上它的删除状态,现在呢都是零,零代表未删除,未删除好,那现在呢,我们这个订单的信息我们就准备好了,主要我们在这儿计算了一下,订单里边订单的总额和他应付的这个总额,这块呢,还有一个应付的总额,应付总额是订单的总额,加上运费,那就是应付的总额,那整个设置完做完以后,我们这个create order,我们相当于就创建好了,这个创建好以后呢,订单创建好,我们要做的第一步是来创建订单,创建订单订单项等信息,这块信息呢我们都创建好了,接下来第二步就该验价了,而且这个价格呢,其实都在题里边有,因为质疑,既然创建好了订单。
21:22
那么就可以拿到这个订单,这个订单呢,我们可以拿到他的应付金额,有一个叫pay amount,这就是我们订单自己算来的这个金额,然后呢,我们想要验价,那就是跟页面提交的这个金额,你可以把页面提交的金额拿过来,点一个get,页面给我们也提交了一个金额,这两个金额如果一样的话,那么就算是验证成功了。当然由于我们后台的各种优惠计算,可能存在小数点后很多位,比如我们现在呢,前端提交只提交了小数点后两位,比如78块一毛六,然后我们后台计算出了78块一毛672548等等,那这两个能不能比成功呢?其实应该让它比成功的,就是只要他们两个之间的差价小于0.1,应该是0.01,因为我们金额就是小数点后两位,他们两个计算出来是0.007,所以只要差价小于0.01,那就是我们可接受的这个价格偏差。
22:22
大范围,所以呢,我们现在验价不能直接判断两个相等,我们让它减一下,等一个subtra后台的金额减去我们这一块的金额。无论谁大谁小,我们可以求一个绝对值,慢点一个ABSABS呢,我们在这求绝对值,我们把这一块减去的这个金额变成一个double value,只要我们计算的这个金额的这个绝对值,它们的相差范围小于0.01,那就算是对比成功小于0.01。
23:01
那这个呢,就是对比成功的,所以我们既然验价这一块呢,就是金额对比,那这一块金额对比成功,我们就可以来做接下来的事情了,那对比失败我们就可以来给一个返回来继续直接返回我们的response,我们这个response呢,我们来set一个code,只要我们这个扣得码现在是二,那就是金额对比失败。那下一节课就来写金额对比成功,验价成功下边的逻辑。
我来说两句