00:00
接下来我们再来细化我们这个订单确认页的两出功能,第一处就是我们整个收货人的列表信息选择,第二处是我们这个有货无货状态,那这个收货列表信息选择,我们可以提前给数据库里边再来添一个我们收货信息,比如还是我们这个六号会员,我们之前呢,保存了好几个地址,比如有一个上海市的,北京市的,那这样的话呢,我们一刷新,我们这就有两个地址,那选哪个,那下边呢展示哪个,而且呢,我们还可以加上运费的计算,比如我们选了这个地址,运费有多少,我们要进行实时的计算,最终得到一个扣减结果,以及我们这一块的有货无货状态,我们现在呢,是将有货无货状态直接合并到了每一个我们这个订单,这个项里边我们这儿呢,保存有货无货状态。但是呢,我们这个每一个都来查,我感觉比较麻烦,我们可以来写一个批量查询,来查询我们很多商品的有货无货状态,那把这个货物的状态呢,我就从这儿先来剔除掉,然后从我们的confirm页面,我们再来找一下我们的有货无货状态,那这个有货无货状态应该一直在我们的上边,好,那上边我们这个现这一块会来显示我们是否有货,那把这一块的有货的显示我们就来放在这,好那就默认都叫无货,那现在呢,重新来组织一下,我现在这么来写,我们来到订单服务里边,订单服务只要我们去购物车查来每一个商品以后,那接下来我们就来查询这些商品的所有库存信息,所以我接下来调用一个异步任务叫z z wrong,接下来呢,我们以异步的方式继续来查询我们的库存信息,好,然后呢,我们还是提交给我们的。
01:50
变成池去来执行,那这个去来查询库存信息,本应该呢,我们可以来接收上一步的结果,比如我们查询到的所有的这些信息,那上一步没结果,那来到下一步,我们想要用结果,其实也简单,因为上一步只要做完能来下一步,我们在这个VO里边itto都已经设置好了,所以我们在这个VO里边把这个itto我们来得到。
02:16
那得到我们这个its以后呢,接下来我们就来批量查询每一个商品的所有库存信息,那我就先来收集好我们所有的商品ID item,点一个我来一个stream,我写一个map,好,我们现在item,那只返回item,点一个商品的ID get SQ ID,那现在想要查商品的状态。它的库存状态好,我们来写一个to list。我们拿到所有商品的ID以后,我们希望有一个远程方法,当然是我们商品的服务的这个远程服务,好我们来到我们的订单里边来写一个远程的服务来,除了调用会员系统,我们的购物车系统,还有我们的商品系统,我要查库存,那查库存还不应该是调用商品系统,应该是调用我们的库存系统,好库存系统呢,我们就叫WLS,我们的份service,我们库存系统的这个远程接口,好我们来点过来,那现在呢,我们来说它是一个远程调用,这个远程调用呢。
03:24
就是来调用我们的库存系统,那库存系统提供一个方法,能查所有的商品的库存信息,然后给我们来进行返回,所以接下来在库存系统里边,在库存系统里边我们来专门提供上一个方法,因为所有的库存都在我们库存系统里边,我们来找一下这个表,在这个SQ的这个库存信息表里边,比如每一个商品,一号商品到底有没有库存,我们其实要看一号商品所在的这两个记录的总量,总量呢只要大零,那就是有库存,所以我们现在呢,就来写上第一个方法,我们来到库存的CTR,好。
04:07
那么这呢,之前已经写好了一个检查我们这个SQ是否有库存,也是我们的批量检查方法,那么现在呢,就可以直接把这个方法复制过来走,那么既然以前有了,那就直接拿来用走,来检查SQ是否有库存好,然后呢,接下来我们这一块呢,整个会有一个返回咱整个的库存检查方法,我们要把前置路径这一块拿来,CTRLCCTRLV。好,前置路径呢,我们也复制过来,我们来看一下库存的这一块检查来点进来,我们就是呢,拿每一个SQ的ID,我们在这儿来进行匹配,匹配呢,我们当前的库存总量减去我们这一块的库存锁定量,只要呢它大于零,那有库存状态呢就是true,否则呢就是false,所以我们会返回一个是否有库存的这个VO,每一个商品是否有库存,那正好我们把这个VO我们来给我们的这一块。
05:11
我们订单服务里边也放一个库存状态检查的这个VO,好,我们就叫SQ sqto VO。好,那么这个VI里边的所有数据在这来写一个an data,那么既然以前的库存系统既然已经有了这个数据,我们就直接来复制,那么这个方法呢,现在已经复制到远程接口,那远程调用呢,肯定是没问题的,想要远程调用,我们先来保证我们的库存服务注册到了我们注册中心来看一下,好,没问题,Discovery client没问题,那接下来来到我们的订单系统。那么订单系统我们继续来编写我们的业务逻辑service,好,那么订单系统的这个service确认订单数据,那在这呢,要来检查我们的所有库存,库存呢在这都有,那接下来把我们的库存这个远程服务拿过来。
06:06
拿来库存的远程服务,聚焦WMS份service owa一下好,库存的远程服务我们来复制过来,我们在这来进行一个检查,它呢直接有一个方法get SQ汉字to,然后呢,我们传入所有的SQID,但是接下来我们这个方法呢,是返回一个完整的R对象,那么现在呢,就把这个对象来返回。在这个R对象data数据里边,我们封装了一个详细信息点,一个我们可以来get data,我们直接获取data数据,因为我们远程放的时候,我们也是set data放进去的,它是一个list类型的数据,所以我们也可以给它转换过来,那么现在呢,就来给它转换过来,我们来到这,我们get data,来new一个type reference,好来,接下来给它转换成一个list类型的,List类型的什么呢?因为我们所有库存的VO数据,我们封装成了一个SKU。
07:08
你的sto VO封装成了这个样子,所以我们可以来转换成它,那接下来我们在这儿呢,就拿到我们的这个转换方法,最终我们得到了每一个库存的状态信息,但是在页面呢,我们边便利我们的订单里边的每一个订单项信息,我们还要快速的获取到它的库存状态,所以呢,我把这个库存状态重新加工,如果我们获取到有数据if data,我们不等于空,我们来做一个重新加工,我来加工成一个map,最终放到这个。Come VO里边,好,我们来点进这个con VO,我希望呢,Con VO里边有一个能表示库存的这个map,它的结构是这样子的,Map的K就是当前SQ的ID,然后呢,它是否有库存,那就值,那就是一个布尔类型,所以呢,我们就叫sto sto,好,我们就叫tos,我们希望呢,有这么一个map。
08:12
那我们接下来就来准备上这么一个map get set方法,好,我们现在呢,把我们这个list里边的数据来转成一个map,好点一个stream,我们可以直接调用它的collect方法,我们呢想要把它转成一个map,我们使用这个collectors,点一个to map,然后呢,Map要用的K是什么?那其实就是我们,因为每一个数据都是S,这个vok呢,就是这个VO里边的SQID是作为K,那值那就是它里边的是否有库存这个状态我们来作为值,所以我们最终把这个map我们来返回,返回成一个这个布尔类型的map,我们然后把这个map我们放到confirm data里边,好,我们这个con VO里边点一个set,那现在呢,有一个叫stocks,把这个map拿到那以后,在页面想要获取我们哪个东西,到底有没有库存,那就非常简单了。
09:12
那现在呢,直接来到我们的页面,订单确认页,Come HTML好,这一块有货无货,应该是这样子的,那双中括号Dollar福大括号,因为我们呢,以前是把它封装到item里边,我们现在没封装了,我们全部把我们这个数据封装到了confirm VO里边,所以我们现在就应该这么来获取拿到order confirmfor VO。好,这是这个里边的数据,这个data里边呢,我们现在放了一个这个属性叫tos,它是一个map,好,这是一个map,然后呢,Map里边我们想要取一个它的值,因为这个map取值呢,我们要用的K是当前商品的ID,所以呢,我们现在可以直接拿它点一个,比如我们当前商品的ID,我们拿拿它来取,专门来获取到map里边当前商品的ID这个数据,然后呢,来判断它问号,它呢是不是等于如果是处我们在这呢,就显示有货,否则呢,我们就来显示无货。
10:20
好,我们现在呢,就将我们的整个这么来修改了一下,我们的库存服务以前就有检查方法,我们现在订单服务呢,重新来启动一下走。那在订单服务我们只要查完的所有商品,那们接下来呢,就运行一个异步任务来进行库存检索,我们将所有检索到的库存我们还是放到VIO里边,方便我们最终的页面这一块来进行展示,好来等待订单服务启动成功,我们现在来清空控制台,来重新测试一下,来刷新页面这块,提示我们这个500控指针异常,我们来看一下我们的控制帧,主要呢是在这儿,在这我们要运行异步任务,我们这个拦截器呢总会执行,所以拦截器呢,这一块attributes总是空的啊,我们呢,现在我们无需共享数据,所以我们来判断一下attribute不等于空,来再做下边的事情,好,我们现在呢,把这一块呢,全部放到这个代码里边无所谓,因为如果我们这个WMS现在需要登录状态的话,我们可以像以前一样。
11:23
把我们的这一块的数据,因为每一个线程开了新线程都要在这共享,那我们现在呢,不需要登录状态,好我们现在重新来启动,好我们现在来清空控制台,来重新结算一下我们的订单刷新,我发现这一块呢,还是提示说我们这个负载均衡没有找到可用的古力庙这个库存服务,那么先来看一下我们的库存服务有没有启动,那这个库存服务诶好像没有启动,来把库存服务呢启动起来,要不然我们这个远程查库存那就有问题了,好,我们现在库存服务启动起来。所以我们在这一块要查库存,我们在这一块呢,来写一个to度,我们一定要启动,一定要启动咱们这个库存服务,否则咱们这个库存查不出,查不出我们这个页面呢,就展示不到。
12:13
这个状态呢就很不友好,好我们现在来重新清空我们库存服务呢,现在也启动起来,来重新刷新一下页面走,好第一次呢读取肯定超时,我们重新来刷新一下。好,现在呢,我们看到我们所有的数据呢,就有了,那这一块的状态是无货,那确实是无货,那接下来我们就来给购物车里边多添几个,来添上几个有货的古力麦,鼓励麦尔康,好,那现在呢就来手机,手机里边我们来看一下哪些商品有货,那现在给库存里边就SQID1234这三个商品有货,那么现在呢,就把1234这几个商品加进去点一下,那这是一号商品,好,我们来加入购物车。点击加入购物车,那我们购物车里边我们去结算,来结算呢,我们现在把我们的这个商品我们也来选中,那相当于又新选了一个商品,然后呢,我们在这儿来刷新一下我们的结算页,刷新那么多了一个商品,那这个商品呢,那就是有货状态,而且呢,这个库存状态都是实时查询的,没问题,那么呢,第一个功能,每一个商品的库存状态信息,我们现在呢,已经查到了,那下一课我们再来优化我们的这一块地址选择。
我来说两句