00:01
好,看我屏幕啊,我们刚刚已经把这个指定的图书添加到用户的购物车当中,我们已经把这个功能已经把它完成了。然后呢,我们需要去做个跳转,我们需要跳转到卡的点读页面上,让他重新再查一次购物车。所以呢,我们就回到这个cut controller。在cut controller里面呢,在这个地方。Public。我们写个方法,使index。因为我跳转过来的时候呢,因为我跳转过来的时候,我没有加那个operate。那没有opera的,要不我就写个index方法吧。啊,就写这个方法。那行这个方法把我完整的功能就是加载。加载当前用户的购物车信息。啊,加载当前用户的购物车信息,HTTP筛选。然后在这个里面在线点get attribute current user,我先获取当前用户。
01:02
User,好,先获取了当前用户,然后user.get cut,这是它里面的购物车嘛,好,我现在要做的事情是什么呢?我需要从这个get叫cut it service里面,它有个方法叫get card,对不对?加载特定用户的购物车信息。这个方法他会帮我们去做查询。查询之后得到一个购物车信息,所以我调用一下他就可以了。因此。所以cut it service get cut。啊,把我们user把它放进去,这样我就能得到一个卡卡的。然后user.set把cut再重新扔进去,然后我们筛选再保重新保存一下,筛选点set。Current user进去。然后我们再跳转,那这个地方,这个地方我需要跳转到什么地方去呢。Pages下面有个叫cut cut里面有个叫cut HTML是吧?
02:00
所以我就跳到cut,下面的cut能看得懂吗?前面这个cut是不是指的我的文件夹cut?后面这个card指的是我cut.html前面这个名字是吧?啊,这个不要搞混了啊,不要觉得很奇怪,怎么为什么写两个是吧,行。那行呗,咱们下面就把焦点转移到这个cut.htm上面去。好,我们把这页面一起来写一下,这个页面对应的。稍等啊。呃。嗯,那个页面找不到了啊。再来。也就是当我们点击购物车的时候,我们要到那个购物车页面上去啊。然后呢,再来。再来。呃,在这个页面上,在当前的这个页面上。我这边有个叫购物车啊,我要显示这个购物车的详情页面。
03:03
所以现在这个上面的数据都是死的啊,都是写死的。我们现在回到找到这个页面啊。也就是当前的页面。那行吧,我们我们一点一点来修改吧。咱们一起来看一下啊。跑到这边来TH冒号。A大括号。把这玩意删掉。然后咱们把秘密空间把它导入进来。3W。timeli.g。好,这边也把它改一下CTRLC。到这边来QV。Can you wait。Ctrl c ctrl v ctrl v OK,就是这样的。嗯,这个把它改完了再往下走。
04:02
这边的小图片我们也可以把它改掉。这个是什么?这是一个index.html。TH冒号。到了。把这玩杀掉。然后剪切,把它分成进去。嗯,下面这个也把它改一下。然后这边把它改一下。把这玩意儿删掉。然后呢,把这个剪切把它拨进去是吧。行,反正看到一个就改一个啊。这个是欢迎谁谁谁光临,那这个欢迎这边是写死,这边不能写死。TH冒号TXT。咱们要写的是Dollar,然后current user啊筛选啊筛选。在线点开的user对不对,然后一个叫点U,我记得。是吧,就是它啊点U。欢迎谁谁谁光临,这个是我的订单,呃,我的订单这一项不改也行,先放着吧,啊,这个也先放着,这边返回也先放着,再往下这个,这应该就是我的那购物车详情了。
05:10
呃,购物车详情里面这边有个表头叫table head,这是个表头。Table啊,这是一个表头。这个叫table body,这是我们表格的主体部分,那主体部分这边是写死的数据,一行一行的嘛。我们只要留一个就可以了。所以下面这些都删掉。好,这最后一个不能删啊,一直到这把它全部删掉。三。我们只留了一个题啊,是吧,同学们。那这个T2是不是应该要迭代啊。冒号一。我们可以写一起之前。我们可以加个if判断。啊,当然,你不加衣服其实也没事,你不给别人提示也没事啊,T熊猫和一气,就这样吧,简单一点啊。那我们应该去迭代什么呢?同学们帮我想想。
06:00
我们应该要去迭代什么?我们要去迭代我们的购物车。啊,到了大括号三点。Current user下面有一个car的属性,对吧?Car的属性里面有一个叫car的item map,不就是想迭代它吗?可以再接着点,点出values。Values不就是它里面所有的卡item吗?没错吧,同学们。所以我就在这边写个叫卡item冒号。迭代烫。呃,第一个是小图片,这个小图片怎么获取呢。T冒号src。大括号,然后呢,把这玩意删掉,把这一坨剪切挪到里面去,那你这边得加竖线,然后挪进去,那这个值咱们要把它替换掉,对不对?呃,这个值应该是啥。
07:01
咱们cut item点应该是里面的book吧。Book book里面还有一个叫什么,不一卖几吧。哎,就是他。书的图片,这个是。书的名字是吧?那行T和text等于。然后呢,我们写个叫item。Card item。哦,这个。这个好烦啊,每次都要咔嚓一他们去点。我可以搞个object是吧。那行吧,反正都已经写到这,写吧点。Book name。应该有个叫bookna是吧,没错吧,同学们就这样,呃,减号加号,先不管它这个是啥。这个是什么,同学们?这个好像是那个什么购买的就是购物车里面这个这本书的数量是吧。行,那这个应该是一个value啊value。
08:01
叫到大括号。到的大括号,然后我们这边写个叫卡item点。应该有一个叫什么by com的吧,行,叫白com。再来。这个。嗯,这个是价格,然后下面一个是小G是吧,行。价格TH冒号,然后text。价格,那就是卡的item。点。点吧价格。嗯,这个里面是什么呢?item.book。Prize。乘以item.by count对不对,小G嘛。行,差不多啊,我感觉写差不多了。再来,再来。清空购物车,继续购物,共几件?共几件商品?
09:01
这个几件好像就是那个总数量了。是不是啊,就应该是总数量。好,这边还有个总金额,总金额好办。总金额比较好办,总金额就写个T冒号text,然后多了大括号,我们写一个卡item。卡,哎,发现它不在外面了,因为我们当前是在这边迭代的。那我这个应该是cut,应该是session.current user.card点我记得有个叫total money。总金额嘛,哎,这样就搞定了啊,这是总金额还是一个多少件,这个多少件不应该是购物车的数量了,应该是里面的真的是真实的商品的总数量。那我感觉同学们。我得赶紧去cut里面再补个属性,总数量的那个属性。可以吧,行,补一个呗,好。
10:00
再次找到PJ类。再找到他,再找到cut,行,那就再补一个。Private in,我们这边写一个叫这个数量,应该咋写呢?Total book com,行吧,同学们,我就写个叫total book count,这个指的是购物车中书本的总数量。而不是购物车项的总数量是吧?是书本的总数量,那这个书本的总数量我们得写个get的方法。Get up。它也是只读的吧。那它的这个总数呢,咱们应该应应该咋写哦。应该怎么写?其实和上面差不多。You c拷过来,You。嗯,稍等一下啊,不是这个,我怎么把这个拷过来了。
11:02
看一下啊,If cut item不得了啊,并且你上一次大于零行大于零的时候,我们应该怎么做呢?我这边应该写个负循环。我要写个负循环。对吧。呃,怎么写?Item map.for each。好,我里面需要一个,需要一个consumer是吧,For。呃,迭代,那我迭代的时候里面写啥呢?我要进行累加,这个是不是大家觉得很别扭是吧,那我还是写,还是老老实实写这个啊好大。冒号,这样大家应该会看得懂点values。好,这样应该是没问题的啊,这个复循环肯定能看得懂。然后取出cut.get呃,这个叫by com购买的数量嘛。购买的数量。咱把它累加上去。放到这等于它加上它是不是。这样不就把数量全部累加了吗?啊,就是这样的。
12:03
OK。那么这个啊,这个我把它。把它写好了。嗯。最后把它return掉,应该没问题啊,叫total book count total book count行再回到页面上去。也就是共几间这个地方。TH冒号text等于到了大括号三先点current user.cut.total book com,对吧?行,差不多吧。啊,下面的可以先不管,那我们一起来试一试,看这个页面能够能不能把它展示出来啊,启动一下。
13:10
好,来试试啊,点登录。好,全部跳过去。再回到页面上。好,购物车当前有六个,咱们点一个进去,加进去。好,进来了,来可以的吧。哎,它全部都能显示。啊,然后这边数量总数量是多少,哎,他也能显示出来,图片出不来啊,上面的名称出不来,看一下吧。看着啊。一起来看一下。他说你这个表达式有问题。筛选。点current user cut total money有问题。这个有问题。
14:02
Total money有问题。控制针。稍等一下啊。回到cut里面去。他说偷money有问题,偷money我已经复制了。0.0负值了。回到回到,稍等一下啊。嗯,我知道怎么回事了。我知道怎么回事了啊。To count有问题。
15:05
偷偷看会有问题啊。这样我现在回到回到car controller这个。咱们这边查询出来的,咱们一起来看一下啊,把断点放在这行吧,同学们一起来看一下这个cut里面结构到底是什么样的,先清空掉再来一次。后退。咱们再加一个,再加入行,进入到断点,咱们来看一下啊往下走。Cut打开。卡map有值的吧,绿有值的没问题。那说明这边值,我是查出来的。啊是查出来了,但是这边值它没有计算,确实没有计算。是吧,确实是没有计算,这是没有问题的啊,但是我在调用的时候,它应该会执行这个get的方法。为什么会执行呢?其实你看一看,我们在首页这个上面的时候,这边已经有数量了。啊,有这个数量,那就说明他肯定是计算了,也就是total com,他肯定会用他的get方法计算啊,那这边应该是没有问题的。
16:06
怎么会报错了呢?在这个地方。啊,他认为这个地方有问题。cut.total money,这个我也没有拼错。到了大括号。Session cut user cut,然后total money。我们先回到首页啊。首页上,我刚刚在上面这边写的是。往下走。在这。先点current user cut叫total count,我这边有这个值,这个值是能读成功的。
17:01
啊,其实两者是相似的是吧。Cut count。Total money。这两者有哪里不一样?让我看一眼啊。偷偷money在这儿。看在这是一样的吧,确实是一样的啊。怎么会不对的呢,我们设个断点看一下啊。把盾点放在这儿。再后退。咱们再加一个。好,他进来了。进来是再执行,再执行过去,你看它这边是有的啊。给他负一个值,负个0.0嘛。然后往下走。负循环它确实进来了啊,哎,这个一执行就出问题了。是吧,这句话出问题了,那我们点开看一下,看这句话为什么会有问题。啊,得看一下这句话为什么会有问题。
18:04
我把断点放到这啊,我先先跳过去。然后咱们再来试一次。好,随便加一个无所谓。再回来看一下啊,这个端点就不要了。直接跳过去到这边来,然后进来进来进来进来进来,我估计这个卡it是不是有问题是吧,就会导致这里面有问题,看一下啊。Cut item打开。找到。不可。然后呢,它还有一个叫by count by是五,这个是没有问题的,然后看一下这个book打开。哦,果然。是不是啊,同学们。果然是有问题的。是吧?也就是说我在计算,呃,我在计算这个数,这个总金额的时候。你这个获取到的book,它的prize是没有的。对吧,同学们啊,这个price是没有的,那咋办呢。
19:02
大家帮我想一下呗。我们应该是在往里面添加的时候出的问题。是吧,那其实,但是又仔细的一想,我们在添加的时候,假设我们往卡item添加,人家确实是只需要ID嘛。是不是人家确实是只需要ID,他根本就不需要你book里面其他的信息,所以我感觉这个添加应该也应该也没什么大问题。那我就只能再去找他查询,他要加载吗?加载他的购物车信息吗?因此,我们来看一下到底是咋加载的。好,我们找到cut service,我们找到这个get card对不对,它是不是定这玩意儿。就用这个方法,然后在这个方法内部。点进去。哦,他只查了一下cut item item,那就难怪了。你光查询这张表,是不是只有book的ID?没有其他的,你只有book的ID。
20:00
啊,我感觉应该就是在这儿出的问题。所以。所以我们回到it service。那么这个地方。Get cut这个啊叫get item list,我们用的是do当中的这个方法。但是我定用它之后得到的cut item list里面的每一个item里面的book,它只有ID对吧,它没有价格,那原因就是这个是吧?同学们啊,这就是我们出错的原因。所以呢,我现在我要想办法。我要想办法来做一件事情。我当前这是service。Service里面。我调用了do的一个叫get list这个方法,稍等一下啊,我现在我要在对我这个service,我来做个封装。我在这个service里面,我要重新来写个方法。回头找。Void。啊,不叫叫list。
21:00
Item。叫get item list这个方法。然后呢,我们模仿一下啊,刚刚呢,我们在这里面我们参数看一下啊。我们用的参数是user的,那行,我这边也用user,没问题的。写给user。获取指定用户。用户的所有购物车项的项列表。啊,需要注意的是。注意的是。这个方法内部查询的时候会将。桂江。Book的详细信息设置进去。啊,这是我要做的一件事情。所以我要来封装出这个方法。那么我再回到实现类。回到这里。好,所以我就来写这个方法,那么在这个方法当中,我把刚才那句话考过来,也就是这句话。拷过来,把它放到这儿。
22:02
那请问这个list里面所得到的每一个卡item,每一个卡item内部的book是不是只有ID?所以现在我要做一件事情。我在这儿。我需要把book service。把它拿进来。是不是,然后我要去调用book service,一会我要通过负循环要去getb,我发现没有根据ID获取的方法吧,那咱们赶紧去补一个。大家能能能听懂我的逻辑吗?Get a book。Take ID。好,那行,咱们得回到它里面去补一个方法。好,那他肯定要经历do嘛,那do好像也没有点get是吧,那咱们再到do里面再去补一个。Get a book in ID可以吧,补一个,然后再回到实现内再去补一个。漏的。
23:00
Select from提book我ID的一个值,把ID放进去,对了吧,行,再回退回退,好到这边来就get a book把ID放进去是吧,然后再回退,再回退,再回退。再回退好,再回退一次,好到这边来,然后get book。那不就是每个ID吗?那行,那就好办了。循环。Cut item item list。拿到每一个卡。啊,我们拿到每一个卡,他一桶。好看item.getb.get ID。然后这玩意进去。把这参数把它挪进去,我是不是会得到一个book呀?这样我就能查到这个book。等于它啊,这样就能查到了,查到这book之后看到item.setb。是不是?哎,我们再把它再设置进去。啊,再把它再设置进去。
24:00
哎,就是这样的。那行,咱们一起来试一下。那么最后我们return的时候,我们再这个cut list对吧,再return它,然后这个点你就不要调用do的了,我是不是就调用自己的呀,删掉是不是调用上面的方法。是不是啊,那此时这个list里面是不是不可介入price了,那你这边有price,这个map里面它的cut是不是介入price了?然后咱们这个cut。那就没问题了,Re cut,他们找到CTRL了。找到找到找是吧,那这个cut里面应该就没问题,它这个cut里面没问题,哎,那我们再去计算。把里面的每一个book。不可出来,然后得到price应该就没问题了。行,咱们把配种,你把它补全了。我们刚才在。我们刚才在看item。Service里面我们补了一个book service是不是咱把这个补充上去啊。在这里面。
25:00
Property lab service if book service行读完了啊。再启动。好,点击登录。那行,现在有七个,不管他无所谓,再加一个。咱们试试看啊,进来了,咱们现在再来看。现在是不是又进到这个方法里面来了。行,往下走。往下走,往下走,往下走往下走,我们看一下,咔一打开。打开cut it。稍等点错了啊。点塔找到book,打开,你看有直报。
26:03
那现在我这句话应该就能通过了吧?断点去去掉了啊。好,全部执行过去,返回到页面上去,你看一下是不是就有了。啊,这样数据我们就能展示了,然后下面这个值是不是也有啊。对吧,共多少件商品,然后共多少多少钱没问题。啊,这样咱们就把它全部查出来,为什么,为什么我刚刚啊,咱们有同学说老师你这边名称也没有什么单价也没有,因为我知道原因都没有的,原因是同一个原因。就是因为你book里面只有ID。是不是你只有ID那里的什么封面啊,名称啊,单价不都没有吗?是吧,所以我们只要解决这一个问题啊,原因都是相同的。那行吧,那购物车的这个详情页面,我也把它搞定了。
我来说两句