00:00
接下来我们从页面出发,来编写我们秒杀的立即抢购功能,首先们这个当前商品呢,处于我们这个秒杀时间段,那在这儿呢,就应该显示立即抢购,那这个加入购物车那就可以不显示了,那来到我们这个当前商品的详情页来看,确认一下当前商品的详情页,那在详情这页这一块呢,我们来处理一下,我们加入购物车,来CTRLF来搜一下加入购物车,加入购物车的这一块链接地址,我们现在来重新变一下,我们得做一个判断,Th if,那这个判断呢,那就是我们当前呢,是处于秒杀这个区间的,所以我们就需要显示成我们的抢购按钮,那来到我们秒杀区间的这一块,判断在我们这个上边,我们来看一下,那在这儿呢,可以来判断我们是不是秒杀区间,那在我们下边我们来判断,如果我们当前的这个时间正好呢,是我们这个秒杀区间范围内,我们把这一块的判断直接复制过来就行了。
01:00
好,CTRLC这个呢,表示我们现在呢,就在秒杀区间来找一下我们的这个加入购物车,那么这一块的按钮呢,Th if来写一个Dollar服大括号,那如果我们是满足这种条件,那说明呢,我们现在这一块要显示成立即抢购,好我们就叫立即抢购,那否则呢,我们就才来显示成我们其他的这个情况,好我们在这儿再来加一个。如果我们的当前这个时间是小于我们的这个区间,小于我们这个开始时间,或者呢,我们当前的这个时间大于我们的结束时间,这个呢,都不算在我们这个区间范围内,那如果是这种情况下呢,我们才来显示加入购物车,加入购物车,因为之前给加入购物车绑定了一个and to cut a,那么现在呢,给我们的立即抢购,那现在就变为second kill a,我们现在抢购的这个A标签,抢购的这个A标签,我们来想,我们如果一旦点击这个立即抢购,我们要发什么请求出去,我们先把这个页面呢,CTRLF9,我们来编译一下,来保证我们页面的这个按钮能在这儿来做一个正常显示,我来刷新,好,那现在呢,确实是立即抢购,那立即抢购,我们一点以后,那应该给我们的秒杀系统来发送请求,那么整个的流程呢,我们可以是这样,如果是我们以前走购物车流程,我们秒杀系统。
02:28
我们想要点立即抢购,我们就给秒杀系统来发这个请求,因为我们想要秒杀就要带上随机码SQ的ID,咱们只带这个SQID其实是不够的,们看red里边我们保存当前商品的这个秒杀信息,那这一块呢,存的都是场次杠一个SQID,咱们这个页面呢,也可以完全把我们这个场次信息带过来,所以们在这个立即抢购的时候来整上两个属性,一个是呢,我们at tr的SQID,另外呢是一个我们的session ID,我们当前场次的ID,场次的ID呢,我也直接Dollar大括号可以取出来item,如果我们当前是秒杀呢,我们有这个秒杀的这个info,这个info里边呢,有我们当前的这个session ID promotion,我们这个session ID代表我们这个场次的ID,所以我们这个超链接上,我们有当然场次的idsq ID,另外我们还要把这个随机嘛,我们也拿过来,所以呢,我们现在再来给我们这一块呢,来写一个code code呢就等。
03:28
Dollar符大括号,那么这个随机码呢,请求发的时候也要带上item.second kill这个info点一个我们现在有一个随机码random code,只要我们现在是秒杀期间,我们这个随机码呢,我们都可以拿到这一块的值,CTRLF9,我们先把这一块编一下来,重新刷新来确认一下我们这一块的效果,立即抢购来右键检查元素,我们来看这个SQID是1SESSION ID是七随机码,我们这一块呢也有,那当我们这点立即抢购就应该跳到我们指定的地方,那这个跳转呢,你就可以绑定一个单击函数,我们来执行这个功能,好,这个叫second q a,那controlrl end,你在后边来写一个方法,Dollar符小括号,我们给页面的这个元素来绑一个单击事件click,如果它一被点击,我们就来要发送秒杀请求。
04:21
那这个秒杀请求呢,我们先来准备location.ref点一个ref,我们要跳转到这个地方,然后呢,Return force,我们一定取消掉它的默认行为,然后我们这个地方呢,是我们指定的秒杀系统,秒杀系统我们叫second kill,我们这个系统把这一块呢取值拿过来,我们放到这,然后呢,我们当然希望有一个请求就叫秒杀,那我们就叫kill,这个秒杀呢,给我们带来一个商品的这个秒杀ID,比如我们就叫KID,我们这个ID呢,是我们商品的ID加上我们这个场次ID的组合,这是第一个,然后呢,我们还会带一个,比如我们就叫七杠二,然后呢,并且我们还会带带一个我们扣的这个随机码,这个呢我们称为K,那就是我们的一个唯一令牌信息,那当然这个,并且呢,我们还应该带上一个你这个商品呢,买几件number等于洗,所以想要秒杀呢。
05:21
这个键数我们也得带,那么这三个值我们就来获取一下,首先第一个是我们的KID,秒杀用的这个ID,那就是我们当前被点击的这个元素this,点二,如果有的话,我们直接取出它at tr自定义属性里边的这些值,我们来确认一下,直接右键检查元素,首先呢,第一个叫SID的值,SQID的值来找一下,那这个呢,就找到了SQD,然后呢,我们整个这个ID,什么SQID前面呢,还有一个场次ID,则点一个at tr,那再来获取一个场次ID,这两个呢,使用我们这个下划线拼接起来,这个组成我们秒杀商品,咱们red里边存的ID,好,我们现在把这个ID拿过来,我们的场次ID,那就应该是这个session ID,我们拿这个有什么用,直接带一个扣单码不行吗?我们害怕他秒杀了其他的乱七八糟的商品,他。
06:21
扣德码呢,在这儿不断重试,所以我们这个扣德码,因为跟这个商品ID是唯一对应的,这两个都得带对才是一个,我们的这个秒杀信息,好,我们的QID那就有了,我直接把这一块呢去掉,来加上我们的QID,然后呢再来加上我们的这个key。就是唯一的这个令牌信息,那现在呢,每一个秒杀都有一个随机值,我们挖一个T等于我们Dollar this,还是我们来找到当前元素点一个at tr吧,好,那at tr呢,现在来直接取出我们这一块code的这个值,那就行了,那这个code的值呢,我们最终作为我们的这个K,我们来进行携带,好我们来带它,包括呢,我们现在秒杀了几件商品,这还有一个input框,那把这个input框number input,它的这个值直接拿过来画一个我们的number number,这个number的值呢?
07:21
就是Dollar符小括号不是this了,你现在直接找到这个输入框,这个输入框呢,有一个at tr,那也不是at tr,因为它是输入框直接调用一个Y6值那就行了,现在相当于我们这个商品呢,就秒了这么多件啊,那我们这个呢,就可以来直接操作,当我们来点击这个,那请求就发出去了。来CTRLF9,我们来确认一下,我来重新刷新,咱们来点击立即抢购,来点我们把这一块停掉,我们再来刷新一下,我们只要呢,这个抢购按钮遍利出来,我们在这儿检查元素,那这一块呢都会有,然后呢,我们会给它绑定这个单击函数,然后跳到我们指定的这个位置,好我们来点一下,我们发现这个跳转呢,我们来看一下,来点击这个立即抢购,我们并没有跳转到这个指定位置,我们把这个页面重新CTRLF9,我来编译一下,好我们再来刷新们来刷新。
08:14
那么现在给这个立即抢购按钮,因为我们绑了单击函数,所以我们来点它,那它就应该跳到指定的位置来点,好,那现在呢,跳到我们这个秒杀的指定位置了,那带了秒杀的这些信息,但大家现在来想,那么这个秒杀呢,如果我们每次点立即抢购都跳跳到我们这个秒杀系统,这个可能稍微有点不合理,因为我们只要能想要秒杀,首先得保证我们当前呢是登录的,那登不登录呢,我们秒杀系统肯定要得判断,但是呢,我们接下来我们说这个限流,限流既然你在这儿点了,我们在这个页面呢,其实就可以做一个限制,如果你登录了,你就可以来点直接跳过去,你没登录,我给你提示登录,所以我们可以来做一个最快速的限制,我们能取到我们当前系统的登录信息来,看到我们这块页面来,CTRLF有一个请登录,然后我们在这呢,就有一个session logging user。
09:10
如果我们这个能登录的话呢,我们login user那就是不等于空,那就是有值的,我们登录了就是有值的,否则呢,那就是没值的。所以我们在接下来就在下边来做一个判断,我们想要这么来判断,我来写一个,哇,我们来判断是不是已经登陆了,我就叫is loggan,那是不是已经登录呢?我给它来取成这么一个值,来写一个双中括号,那么在这里边呢,使用双证括号,我们任意取值Dollar符大括号,我直接从session里边,就像取出以前的这个login user一样,我们来给它做一个判断,Session login user不等于空,我们来control end来到最后边。Ctrl end,那么就在这来取这个值,如果session user等等空我们在这儿呢,会返回,如果是true,那就是没登录,否则呢,那就是登录了,那么最好来写一个合理的逻辑,那飞空,飞空呢,那就是登录了,If is login,那这个代码里边呢,判断它登录了,登录了以后我们才来给你执行下边的逻辑,好,下边这一块的跳转逻辑CTRLX剪过来,否则没登录,我们呢,可以来先提示一个alert。
10:25
说们请先登录好,这个登录呢,我们让它用户自己跳去登录也行,来CTRLF9说明我们在前端,我们先来做一个限制流量的操作,就是我们的前端限流,那么在这儿来做了以后呢,只有登录的的人,我点一个立即抢购才行,那现在点立即抢购都没有任何效果,所以只要没登录我们就不会放到我们的秒杀服务,这是第一个,那接下来我们就专门为我们的这个秒杀服务来编写一个我们这个功能处理,那么现在假设来登录一下。
11:00
来点击一个请登录我们在这儿使用社交登录来重新登录一遍。第一次这个远程服务呢,经常会失败,我们再来重新测试一次啊,我来重新登录,现在呢,只要登录成功,我们再来去秒杀,我们点进里边,我们想要点立即抢购,因为我们现是登录的,我点立即抢购,这样才可以跳过来,但我们说这个前端限流呢,其实是我们一个最简单的限定操作,它也容易被攻破,因为只要我们这个用户知道了,我们以后的秒杀都是给这一块发请求,所以呢,他只需要来写一个工具给这儿发请求就行了,但既然要给这儿发请求,那你就必须带队我们这些信息,所以只有当我们这个秒杀期间,我们这一块信息你才能获取到,非秒杀期间你永远获取不到,那接下来我们就来给秒杀服务里边添上我们处理这个请求的功能,来到我们这个秒杀服务。好,来到这一块,我们来找一下controller,这个controller呢,接下来我们就要有一个请求,那还是来匹配get map来映射get请求public r,我们来返回对象,那我们现在呢就叫second q,那这次呢就到了我们真正的秒杀功能,来写一个return先,好,我们现在来处理一下我们要处理的这个请求地址,来点一下立即抢购,那就是这个Q,这个请求呢,是我们的秒杀请求,但是它会带上这么几个数据,首先第一个数据是什么?这个QID,我们秒杀用的这个ID,这个ID呢,请求参数叫他,我们把这个呢复制过来。
12:33
我们直接来标注上request请求参数必须有一个,它没有的话呢就不算,然后呢,接下来第二个我们秒杀还会带一个K,就是我们说的随机码信息,所以我们把这个随机码我们也拿过来,来把这个key拿过来,还是一样,Requestar必须携带request PAR那必须来携带这个key随机码,另外呢,就是我们这个number,那当前这个商品你想秒杀几件。
13:01
那么接下来再来写一个number呢?那就是类型的number nu。来加上request。好,那在这来获取到number的值,那只有一切成功了,那才会调用秒杀服务来进行秒杀功能,那在这个秒杀之前呢,我们自己的这个秒杀服务也一定得判断是否登录,所以我们在这儿呢,也得判断是否登录的,那这个判断登录呢,我们也可以来整合我们以前的这些拦截器机制,因为我们这个只要我们是登录了的请求,我们来看一下在我们这个商品的详情页,我们现在呢是登录了有这个数据,所以我们的cookie里边呢,就会有这个session ID,那这个session呢,我们只要一登录以后,我们发的任何请求都会带上这个session,我们来监控network来点一个立即抢购,我们发这个请求呢,相当于也会带上我们的这个cookie信息,Cookie有我们的鼓励,Session就是这个,所以我们只要整合了spring session,也可以容易的获取到这个登录状态信息,那么就来到我们的秒杀服务里边,我们也来整合一下spring session。
14:11
那就像我们这个订单服务,还有我们这个商品服务,我们来整合一下,好,我们就随便来取一个服务,我们把这个spring的依赖我们先复制过来,首先呢,它就要需要使用red,然后呢,再将spring session的这个依赖来复制过来,Controltrl c来到我们的秒杀服务里边,我们将spring session的依赖呢,我们来转过来,另外我们说这个red,它默认的这个letters这个客户端总是呢有问题,我们排它可以排除,让它使用的解edit来进行操作就行了,所以我们在这来顺便把它一排除,Exclion exclion我们来排除一下,然后呢,我们让它来引入我们的j editid斯好版本呢,自动控制也不用写了,那现在我们把这个都引入了以后。Spring的session这个配置呢,我们也赢了,赢了,接下来我们在这来配置一下,首先配置一下我们session的存储方式,我们在秒杀服务里边,我们也写一个我们的session type,我们是使用red来保存的,然后呢,我们再来开启我们red的这个session功能,当我们这个session的所有配置,我们也可以直接参照订单,因session里边有一些序列化器,我们都要全局统一,只有全局统一了我们才能用到。
15:27
CTRLC我们复制过来,全部呢放到这,我们现在来整合spring session,那就是这个我们现在用的cookie这些名字,包括序列化器这些机制都在这有,另外呢,们要使用session,那就得开启一个red hb session这个功能,那有了这个功能呢,我们才能写上一个拦截器,那这个拦截器我们还是把以前的这个复制过来,所以大家会发现这个拦截器呢,其实非常有用,我们每一个服务呢,都会用到,把这个拦截器呢也复制过来,那这个拦截器就会给我们来判断是否登录,那默认呢,我们也得给他放行一些请求,咱我们这个秒杀服务里边,那现在除了这个秒杀是要判断登录外,那剩下的这些信息呢,都是让别人能调用的,所以我们在这个拦截器这里边来做一个判断。
16:16
如果当前请求match,我们是这个秒杀,如果呢,它是这个秒杀请求,所以我们在这来判断if match,如果呢,是秒杀请求,我们才需要登录,做下边这一串的事情,给你说登录怎么着,如果不是,否则呢,那么就直接return处给他放行就行了,所以我们在这一块呢,要把我们这个需要登录的,我们在这儿单独处理一下,那接下来来到订单服务里边。想在这儿处理逻辑,那就得先来进行登录,来重新启动一下我们的秒杀服务,那先来看他的登录验证有没有成功,这个登录验证呢,只要能过来,我们先来到我们的这个首页,我们现在就叫艾好。
17:01
现由于呢,我们这个item要获取我们这个秒杀服务的这些相关商品信息,来等待我们秒杀服务的启动,好,秒杀服务呢,我们现在启动起来,来重新刷新一下我们的详情页,我们现在呢,正在秒杀期间,因为我们这个登录了,我点一个立即抢购跳到这,这是一个空白页,那是因为我们response bos返回的是一个空的,那没问题,但是如果是没登录,怎么着没登录呢?来F12 f12我们直接将这个COOKIE1清就行了,那这个cookie我们直接来。选择一个删除,这样呢,我们就是没登录状态,我来刷新一下,没登录,我们去哪一块呢,都是没登录国立妙来确认一下,好,我们去首页呢,也是没登录,来重新访问我们的这个详情页,我们再来秒杀,或者呢,我们把这个秒杀请求再来执行一遍,这个item走们现在要进行秒杀,由于我们没登录,没有这个cookie,我来点立即抢购,他呢就提示我们请先登录,包括如果我们现在即使是自己来访问,然后呢自己来访问我们的这个Q请求,这个Q请求以前自己访问过来回车,那这一块呢,应该给我们提示跳到我们的登录页来看我们的这个拦截器有没有生效。
18:10
那这个拦截器呢,没有生效,没有给我们跳到登录页,那原因是那拦截器写了以后呢,一定要配到我们这个web中,所以我们必须来写一个web配置,那秒杀服务里边也有一个second kill的web config,这个config呢,必须实现我们的web mvc config,那就是它来先来说一下这是一个configuration,然后呢来添加一个and intercept方法来添加一个拦截器,然后这个拦截器的作用。那么就把这个容器,我们把容器中的这个拦截器先来注入过来,把这个拦截器呢,一定要填进来,好,我来写一个over,当前项目的所有请求都要拿这个拦截器来拦截,来到registry里边,点一个and intercept,那填一个拦截器,那就是填它,然后呢,拦截哪些路径,我们来加上这个路径,直接来写一个杠双星,那么就来拦这些路径,或者我们直接在拦截器配置的时候,我告诉你拦哪些路径,那我们拦截器里边呢,其实就不用做这种模式匹配了,那我们为了方便,我们就直接杠双星。
19:16
重新启动一下我们的秒杀服务,保证我们秒杀的这个前置逻辑先一切正常,能来到我们这个秒杀服务的所有请求都必须是先经过登录的,这样呢,我们就可以过滤掉很多的用户。那来到我们这一块,只要你登录了,我们才给你进行执行,那没登录你去直接来执行我们这个K是不行的,来看一下效果好,秒杀服务呢,现在启动成功,我们来直接访问我们的Q,我来回车,诶我们发现他帮我们跳到了登录页,那这一块呢,就没问题了,那下节课我们再来填充秒杀里边的完整逻辑。
我来说两句