00:00
接下来我们就来编写购物车的功能,首先我们做的第一件事情,我们上节课呢,分析了购物车的数据结构,以及每一个购物项应该有什么信息,我们先来抽取出它对应的VO,因为我们后来要操作,要封装对象,那就封装到这儿,好们先来写一个包,那这个包呢就叫VOVO里边呢,首先第一个是我们这个购物车整个对象,好,这个cut,我们是整个购物车,这是整个购物车。那整个购物车我们对照页面,我们来封装一下该有什么,然后呢,接下来我们还有一个购物车里边呢,有每一个一个的购物项,所以我们应该叫cut,艾好,这个呢是购物车里边的每一个购物项,整个购物车指的就是这一块,因为我们整个购物车里边商品有几件,包括总价格这些信息是属于我们整个购物车的内容,而我们接下来的这个购物项是我们购物车里每一项的详细信息,所以我们接下来再来这个呢,就是我们的购物项目,我们继续来进行封装购物项内容,那这个购物项内容呢,我们按照我们之前的分析,首先private有一个浪类型的,这个浪类型呢,首先是我们这个商品的ID,我们就叫SQID,好们把这个an data,我们先来加上,这是一个我们让它生成get set方法,好,然后接下来商品的ID有了,我们来看构项里。
01:29
我们还应该有的是我们当前商品的标题,以及它是否被选中,商品的ID是否被选中,以及商品的图片标题,以及它的套餐。好,我们挨个封装就行了。商品的ID,还有private,我们应该有一个布尔类型的,是否被选中,Check这个呢,我们让它默认等于true,相当于我们只要添了一个勾物项,这个选中状态呢就是true。还有我们接下来我们商品的图片标题,这些我们都要封装好,Private,商品的string,它的title,商品的标题。
02:06
以及我们这个商品的图片image,好,我们就叫图片,还有我们这个商品的套餐信息,相当于SQ at tr,而且呢,这个套餐我们直接给成一个string,比如它是什么套餐版的,那这一块呢都有,而且呢,这个套餐我们可以看到点过来,这一块呢,由于我们这儿是选择了两种属性,第一种是什么,第二种是什么,所以我们在购物车展示的时候,也是两种属性在分别展示,所以这个属性呢可能有很多,为了能分别展示,我们就来写一个list,这是它的这个套餐信息,然后再接下来我们这个商品,购物车的这个商品里边和我们对照这一块,接下来就是它的价格以及数量,还有它的小计价格,那这个价格我们private拿过来,我们使用贝格dima,我们因为要牵扯到计算,我们一定要用disma类型,然后呢,还有我们的这个数量private,我们数量呢,我们使用类型的count。
03:06
来进行一个计数,包括我们再来往下走,这是价格数量,还有它的小记total price好,我们可以private,也是一个big,我们这个decma类型的,我们这个total private price好我们这是它的总价,但是呢,大家注意那这块呢,有一个非常大的特点是什么特点,就这个总价呢,是根据数量动态计算出来的,所以呢,我们这个总价我们给它自定义来,它的get方法,我们就叫get total price好我们把这个an data我先去掉。我叫get total price,好,我们把这个拿来,这个total price呢,我们应该给它动态计算,那怎么动态计算,我们就应该是这样子的,但为了防止我们这个按data把我们这个方法呢覆盖掉,我们现在呢就不用enter data了,们为所有的属性都我们自己来生成get set方法al insert,好,我们现在呢找准get set,我们为所有的属性都来生成所有属性的get set,现在我们只需要一个就是我们的这个总价,好,总价在获取总价的时候,我们要进行计算,计算呢就应该是我们当前商品的单价乘以它的数量,就是当前商品的总价,但页面去来计算也是没什么问题,那么拿到当前商品的单价price,然后呢,我们要乘数量,因为它是一个big decma,我们想要乘我们调用它的multi派这个方法,它是来乘,乘一个我们叫big decma,我们这个类型的我们的数量,数量呢,我们。
04:41
拿过来我应该是this,点一个能count,这是我们的数量,因为数量呢是一个整数,所以我们把它变成了字符串,然后呢让它乘,乘出来最终的结果,这是我们的总价,好拿过来总价呢,我们手动需要来计算一下,这是我们计算勾物项总价,这是计算当前项,然后接下来这是我们一个购物项的信息,我们将来在reddi里边保存的数据就应该是这个样子的,那我们整个购物车呢,就应该是我们这样,首先list,我们来一个我们购物车里边有非常多的购物项,所以我来封装一个car it,好,我们这个就叫it,这是我们所有的购物项,除了这个购物项呢,我们整个购物车还要封装这几个,首先第一个private in类型的,我们到底有几项啊,这个是呢,商品数量,这个数量呢,就有类似于我们京东这一块的统计。
05:41
几我们现在呢,有两种商品,不是两个,因为每一个商品呢,三个要算总数量,应该是六个总数量,所以呢,我们这一块呢,是全部商品是两种和六件,我们在这儿来统计好,首先我们这个count number,这是我们这个商品的数量,还有我们再来统计一个商品的有几种,我们就叫count type,统计商品的类型,哎,有几种,这是商品类型的数量,商品类型数量有几种不同的商品。
06:14
然后再来加上我们这个购物车呢,除了有这两项信息外,然后还有我们的这个购物车的总价,而且这个总价呢,是我们所有商品的总价减去我们后来的优惠了的价格,这才是我们的总价,所以我们这一块呢,再来加一个就叫总价,总价呢还是使用贝格decma类型的,我们就叫total,我们就叫一个amount amount这呢就是我们的商品总价,商品总价,然后呢,当然还有我们优惠了多少钱,我们也可以展示在这儿,我们就叫reduce,我们减免的这个价格,当现在默认的这个价格就是没有我们这个减免价格,好,我们先放在这儿,然后呢,我们整个购物车,我们还是为它生成get set方法,但是呢,整个购物车所有东西都是需要进行手动计算的,除了我们这个it,我们有多少的购物项我们能封装进来,我们这个有多少购物?
07:14
账我们应该是从red里边查过来的,但是呢,其他的我们都需要计算,我们来到cut里边好商品的数量,以及商品类型的数量,有几个我们可以来算一下,比如我们在这获取商品的数量,怎么计算呢?我们就拿到it点一个for each,我们来进行一通便利,将每一个商品的数量呢进行迭代,所以呢,我们在这来最好来做一个判断,如果如果我们这个item不等于,那并且呢,我们这个有商品,It点一个get size就是我们的这个长度,它呢是大于零,说明我们这个购物车里边有购物项,我们就计算当前有多少的这个商品,我们来进行一个便利,Items点一个for each们使用我们的增强for进行来变利,然后呢,我们将总数量拿过来,我们先让总数量等于零,好,我们让总数量呢等于零。
08:12
然后我们来进行一个叠加计算总数量加就等于我们当前item的这个数量,点一个get count,这就是我们的数量,然后我们最终迭代把我们的总数量来进行返回,当我们可以自己在这来声明一个,每次呢让它都重新来计算一下,我们比如呢就叫count,好我们每次呢都是给这个count加加,那我们自己呢,是来计算了一下我们这个商品的总量,同样的商品的这个总量的set方法我们就不让它有了,因为我们只是想要进行获取的,然后呢,我们这个商品到底有多少类型,我们把这个呢set方法也去掉,我们是需要让它获取的,我们同样是需要来进行遍历,好我们来进行一个遍历,而此次的便历呢,我们每次遍历都是加等于一。
09:03
相当于我们统计了一个商品类型就行了,那么最终再来返回我们这个商品类型有多少个,包括我们商品的这个总金额,我们把这个set方法呢也去掉,总金额呢有多少,我们就应该是便利每一个商品的总额,然后再减去我们需要减掉的这个金额,好我们这个需要满减的金额呢,我们可以先来给他给一个零,你有一个备个DEC,好我们就给他指定一个零,只要默认呢,没有减免任何的价格,然后接下来我们在这来计算总价,现在总价呢,我们还是一个,我们先来整一个备个decma,我们就叫amount,然后这个amount现在呢,默认整一个贝个decma,默认的这个amount是零,然后接下来呢,我们要计算总价,我们肯定要遍利所有的商品,这是我们便利所有的商品。那怎么计算总价呢?我们先求出我们当前正在便利的这个购物项,我们求出每一个购物项,它的单价乘以数量就是当前。
10:04
物项的这个总价,而且呢,当前这个购物项,因为我们也重写了它的这个总价方法,有一个叫get当前购物项的total price,当前购物项的这个total price呢,都是我们这个计算出来的,所以我们直接拿到计算出来的这个价格,然后呢给它进行叠加就行了,我们这个总价呢,点一个and,加上我们当前商品的这个总价,他们的总和,好,我们再来复制过去,相当于我们是一个不断的叠加过程,我们叠加出它的总价,然后呢将这个总价返回,当叠加结束以后,我们可以将所有的优惠信息我们再来减掉,我们现在优惠信息呢,都是零,无所谓,好我们现在呢,第一步应该是计算,计算购物项总价,计算购物项总价,然后呢,接下来第二步,第二步呢,是减去我们这个优惠。
11:04
总价,所以我们这个VO呢,写的跟其他不一样,我们这个VO的get方法,我们属性的值是需要计算,我们在这呢都写好了计算方法,好我们用它来减去,我们就叫subru,好我们来减,减去一个数,那就减去我们的这个优惠,我把这个优惠呢获取来们直接调用它的这个方法得到优惠,那将优惠的值我们减掉以后,这就是我们最终的总价,我们把这个总价呢一返回,而每次我们要获取都要重新计算,所以我们在这一块呢,这两个VO的封装稍微有点独特,就是呢,需要计算的属性,需要计算的属性必须重写它的get方法,然后呢,保证我们每次获取这个属性的时候呢,都会进行计算,保证每次获取属性都会进行计算,好,我们先来准备了。
12:04
两个VO,那下一节课呢,我们再来编写购物车的逻辑。
我来说两句