00:00
接下来我们来编写秒杀功能,秒杀呢是我每一个电商系统里边非常重要的模块,商家会不定期的发布一些低价商品,发布到我们这个秒杀系统里边,秒杀系统的商品呢,一般都会放在首页来进行展示,这样我们就可以来引导用户去来购买我们这些商品。那秒杀的整个购买流程跟我们普通的这个购买流程,它最大的特点呢,就是瞬时流量非常大,那如果是我们普通的购买与我们时间段比较分散,我们在任何时间呢都可以购买,所以呢,留给某一段时间段的这个流量,它可能呢比较均匀,当我们这个秒杀就不一样了,比如秒杀说我们当天的12点开始秒杀一件或者几件商品,那大家呢都等到12点,等12点时间一到,我们大量的流量全部涌进来,而且都是秒杀这一件商品,所以呢非常考验我们系统对峰值流量的应对能力,所以在我们这个秒杀系统里边,我们更多的关注的是一些限流、缓存等等这些应对瞬间高并发的技术,特别是呢,我们这个秒杀系统也应该独立部署,也就是说我们应该独立的去来创建一个微服务,因为我们如果跟其他服务混合起来,比如放到这个商品服务里边,如果秒杀时间一到,那这个。
01:20
瞬时流量全涌进商品系统,而我们其他的正常的商品购买流程有可能就会瘫痪,我们呢就没有更多的现能力去来处理这些功正常功能的,所以秒杀呢一般都是独立部署,那秒杀用到的这些技术呢,我们后来再来详细介绍,那接下来就来开始开发我们的秒杀功能,整个秒杀呢,我们先来开发第一个功能,那么先通过后台上架我们这些秒杀商品,那么先来启动我们的后台管理系统,来看一下我们后台管理系统呢,在这来启动起来,包括我们整个鼓励商城的这块启动,我们也可以给它加上后台管理系统,在这来添加一个后台管理系统以后,我们启动我们整个鼓励商城项目,你就启动我们这12个系统,那么这个后台管理系统启动起来以后,我们通过后台的管理系统页面,我们可以来添加一些秒杀商品。
02:12
那么先来启动我们的后台的前端项,好,我们在这一块呢,还是使用我们以前的这个命令n PM run DV来启动我们的前端项,我们通过后台管理系统的前端项目来上架一些秒杀商品,那整个秒杀逻辑呢,我们也可以来参照京东。那京东这一块呢,比如这儿有一个秒杀,秒杀呢,当前京东这一块我们做了秒杀的这个场次,几点场的,几点场的,我们在这呢都可以来进行预览,所以我们在我们的后台管理系统里边,我们应该能添加我们这些秒杀系统,我们每一个场次里边到底要秒杀哪些商品,在这一块呢,也有商品的价格跟它的正常售价呢不一样,我们点进这个商品里边,它的这个正常售价,我们是这个188,如果我们此时在秒杀系统里边再来进行购买的话,那它就是这个价格,好,那们现在先来上架我们的这些秒杀系统,我们来到这个后台管理系统,使用ain的in来进行登录,我们输入验证码。
03:11
好,现在登录进系统里边,秒杀呢,在我们这个优惠营销系统,优惠营销系统里边有一个每日秒杀,那每日秒杀呢,我们就像这一块一样,然后呢,我们可以录入一些每天的这个秒杀的时间场次,当然这个呢,可以是全系统固定的,我们也可以应该是我们能任意发布的,我们可以发布18点的,也可以发布17点的等等等等,那所有的功能呢,我们全在这儿录入,我们先来F12看一下控制台,那在这儿它会发什么请求,比如我们来看,我们点每日秒杀的时候,他会查询什么,我们来点一个查询,我们就能知道他发的是什么请求,我们来选中这个,哦,那现在呢,他会查询这么一个数据叫API卡,我们这个秒杀的整个URL地址list,然后呢,会给我们这儿发请求,这是一个封页请求,所以们先得打通我们这个优惠服务的这一块请求接口,这个优惠服务呢,由于我们整个服务全部都搭建好了,后台发的这个请求都是以API开始的,所以们。
04:12
只需要给网关,网关这一块呢,我们来添加一个我们的路由,好我们在配置文件里边,在配置文件里边我们这个API商品服务,那它会转到商品服务,我们现在来配一个我们的优惠服务,我们配在下边,好我们现在呢,就叫ID,我们的卡优惠服务,我们优惠服务的这个路由,优惠服务呢,全部路由到我们的这个优惠系统,我们路由到这儿,我们只需要来把这一块改一下,所有的优惠服务的请求,我们看后台管理系统都是以API卡这一块呢请求开始的,然后他截一个串来添加一个网关路由们看这一块能不能成,先把这个网关启动起来,后台管理系统呢,我们重启一下,把我们这个网关主要来启动网关。我们后台管理系统呢,大家只要把我们之前后边的这些代码直接往进一复制,点进来呢就有了,那这一块的功能呢,我们就不带大家写了,有兴趣的同学也可以自己来写一遍,我先来确认我们的这个网关要启动完成,我们这个网关呢,这一块启动报错,启动报错主要是我们这一块的问题。
05:19
但我们这一块呢,写了一个uri,我们是uri负载均衡到我们的happen服务,那现在呢,就是我们这个格式写的不对,它读取异常,异常的原因就在这UI跟ID这一块呢,应该是同级别的,好我们拿过来,现在我们来将网关重新启动一遍,来启动完网关以后,我们来到我们的后台管理系统,我们再一刷新,我们看我们的整个API,这个优惠服务的整个接口能不能访问通好网关这呢启动完成,我们把这一块网关这一块清掉,然后包括它的这个hello,诶我们不映射这个请求,然后我们现在再来刷新一下,来刷新好,我们现在呢在这儿去来获取我们这个秒杀的,我们称为叫秒杀场次信息,因为我们每日呢有十点场,12点场等等,这有一个场次信息,这一块呢,是我们之前录入的这个测试数据,当我们也可以来删除,比如我们是逆向生成的,所以这一块增删改查方法默认都是有的,比如我们来添加一个场次来看一下,比如我们这个场次。
06:20
的名称,八点场来写一个八点,然后呢,每天的开始时间,因为每天的场次可能不一样,所以我们来录入每天自己的,比如我们现在录一个这个此刻时间,我们现在呢,录一个我们2月19号的,比如早上的这个八点场的,我来找一个八点场,八点好,我们先录一个八点场的,这是它的起始时间,而且呢,它的结束时间,比如这个八点到十点结束,我们开始此刻。我们让他呢,在十点结束好,相当于两个小时内,这些商品呢,你要不买那就没了,好我们在这儿来写一个结束,这是我们的开始时间,结束时间启用状态,我们来写一个一,那就认为一已启用,点一个确定,那我们相当于录了一个场次的名称,包括我们再来新建,我们再来录一个,比如十点场的啊,来写一个十点每日的开始时间,我们现在只录我们这个今天的这个时间,比如我们现在有一个十点场的啊,来写一个十点场,点一个确定,这么这个十点当几点结束呢?比如是我们的这个11点结束,我当然可以给他录任意的结束时间,11点结束,当然这个结束时间呢,肯定应该是在开始时间后边。
07:31
大家可以去来做数据校验,来点一个确定,我现在默认都是使用它印向深动的方法,CTRL的呢,我们什么都没改,那现在就有了,有了以后呢,这是我们第一个增删改查这个场次信息,我们后台管理系统呢,直接有F12,我们来打开控制台网络,接下来第二个先修改删除,我们就不看了,现在第二个叫关联商品,关联商品呢,就是给我们这个场次来新增一些它要秒杀哪些商品的信息,我们来参照这个京东逻辑呢,就是这一块,我们14点厂有一些要秒杀的商品,商品的价格是什么,包括我们这个秒杀的商品总共有多少件,我们的秒完呢就完了,以及我们16点场,18点场的,还有我们的这个结束时间,所以呢,我们每一个场次它呢,都应该有它的商品,所以我们在这儿呢,关联商品,那这些数据呢,分别对应我们数据库里边,数据表里边的这个在我们这个SMS这个优惠系统里边有。
08:31
有一个s SQ scale啊,这个就是秒杀second kill,那么这里边呢,有一个session,这是秒杀场次表,诶我们刚录的八点场,十点场开始结束时间在这呢都有,然后呢,接下来还有一个叫场次的商品关联,Second q SQ relation,就是我们这个商品关联我们这个场次,比如我们刚才的这个八电厂,它的场次呢是四,关联了哪个商品,然后呢,接下来这个商品秒杀价格是多少,我们呢,总共能有多少件,相当这个秒杀商品的库存,总共呢200个,然后呢,接下来我们这个秒杀的限制,像当每人最多呢买几个,每人比如最多买一个买两个,还有我们现在这个商品的排序,我们放在前边还是后边,这是我们这个秒杀的场次和商品的关联表,那都在这儿,咱们接下来再来添测试一下们添加的这个关联信息,如果我们在这来点一个关联商品,我点一个关联商品,首先呢,弹出这个对话框,它会发一个请求,这个请求叫API。
09:31
Skill SQ relation带一个list,但是大家注意除了在分页数据外,还带一个promotion,这个session ID相当于我们这个活动的场次ID,那现在相当于四号这个八点场,我们给他来关联商品的,所以我们就应该把这个接口呢改一下,我们查询的时候呢,能按照场次的ID来查,能查出这个八年场的这些信息,如果场次ID没带的话,我们就可以给他来查,所有所们现在呢,先来改这个SQ,我们这个second q SQ relation的这一块来到优惠系统里边。
10:06
我们先来改一下这个查询在它的这个controller里边,SKU的这个relation在这,那现在呢要找一个SKU relation list啊,那就是这个请求,然后呢,这有一个cor page按照分页查询,按照分页查询呢,这有一个查询条件,这个查询条件呢,我们除了带分页条件,我们看到前端还带了一个promotion这个session ID场次的ID,所以我们现在呢就来拼装一下这个查询条件。当然这个查询条件呢,人家也可能会带我们的这个查询的K,我们以前都做过,按关键字这个K呢,可以按照商品ID查,按照场次ID查,按照主ID查,这都行,所以我们现在呢,这块我们就不处理了,以前咋处理大家还咋处理,我现在就多处理一个promotion这个session ID,那么现在拿到这个waper,把这个vaper呢,应该传到下边,然后我们给这个vaper里边来拼装条件,条件是什么?先来啊,这个vaper里边要返回的实体类就是它条件呢应该是这样,我们的这个corry wrapper,如果我们来传了这个场次的ID,我们按照场次ID查,所以呢,我从powers里边来get一下,因为我们所有的请求参数都会被这个map升封装,我们看到controlrler呢,输的是这个map,将所有请求参数直接收成map,然后呢,MAP1封装,一封装以后呢,我们就从里边直接来get请求参数,能传来什么我们就get什么。
11:35
我们看请求参数呢,能传来一个promotion session ID,所以我们就来获取一个它,如果我们能获取到它,来返回一下,我能获取到它呢?比如我们现在是一个string,因为超文本传输协议传过来呢,默认都是一个字符串,好,我们可以来获取一个string,如果我们能获取到它,If string u求不等于空if,我们的这个string u,我们使用spring加的string u is empty,我们来判断我们来获取的这个场次ID不是空的。
12:06
它不是空的,那就是我们在这儿场次ID,场次ID不是空。那我们相当于呢,就来查这个场次的所有的SQ关联信息,咱们就给waper里边拼装一个条件就行了,点一个ECOECO什么呢,咱们这个数据库里边,那SQ这个关联表里边专门有一个场次ID promotion这个session ID,好把这个呢拿过来,将这个session ID传过来,按照这个场次来进行查询,好查完以后我们把这个waper呢给这里边一传,那我们这个方法呢就好了。好,然后呢,我把这一块来重新,我们重新呢,将我们优惠服务来重启一下,并且呢,我们把这一块写好,相当于默认呢,一进来就能查到了,比如我们给数据库里边录两条数据来测试一下,这两条数据呢,我们现在已有一个场次,就是我们这个四号场,四号呢是八点场,我们给这个四号场里边随便录一个数据,我们就来写一个111,然后呢,我们给这个五号场次,我们也随便录一个数据,我们来写一个222,好,我们来保存一下,来看我们选中某一个场次以后,能不能查出这个场次的这个数据信息。
13:22
我们来到我们这一块,我们把这一块呢,还是关掉好。我们现在呢,有两个场次我来点查询,那么现在两个场次,四号场和五号场,那五号场呢,我们关联了222,四号场呢,关联了我们这个一一来看一下关联商品,诶我发现呢,这一块呢,查的就单独是五号厂的,然后我们在这点关联商品,他查的呢,就是四号厂的,诶这都是固定的,那么就写好了,那写好以后呢,接下来我们点新增,那就是给我们这个场次新增一个关联商品,比如我们来点一个新增,新增呢这一块自动填上了我们关联的这个场次是四号,我们想要关联哪个商品呢?比我们二号商品,我们来给他一个新的售价,比如998,然后呢,接下来我们秒杀的总量,现在呢。
14:07
商品呢,只有十件,每人限购一件,先到先得,诶我们这个排序写一个一,我点一个确定,你看能不能填上来好确定呢,这个也能填上来,因为增删改查呢都是默认的,包括我们来点一个删除,这个也可以来再点一个修改,修改呢这有一个秒杀总量来修改成100件,我们再来点一个确定啊,这一块呢也可以,那我们现在呢,就可以通过后台去来增删改查一些场次和场次关联的这些商品呢。
我来说两句