00:00
就是下面呢,我们要实现这么一个地方,也是一个功能的完善,各位看啊,比如我现在,哎,我把这个请起来啊,刚才我给它关掉了啊。往前启动,就刚才呢,我们看到啊,在我这个课程的列表页面中,咱们里边有很多的课程,而我这课程呢,它可能是免费,也可能是收费。所以这个时候呢,我们目前是没做什么处理,咱目前的效果就是当我点击某一个课程,进入到他的详情页面,而在详情页面中大家看啊,目前在这里边是不是都是叫立即购买,不管你是免费收费,咱是不是都需要购买,所以我们下面把这个地方我们最完善,怎么完善呢?比如现在当我们是一个免费课程,咱们进入到页面,那这个课程它可以直接播放,也就是这置显示应该不叫立即购买,咱们可以叫立即观看,当你是一个收费课程,我们进入之后,这个位置才叫利益购买啊,这是我们做的完善,但是里边还有一个细节。
01:09
比如我现在啊,假如我这门课程已经购买过了,而你进入之后,这里边应该也叫做立即观看,所以这个是咱们要做的这么一个完善,也就是把这个按钮给它完善出来,我们的判断之后的那个效果。那我在里边啊,给大家写下,然后咱们把这过程我们具体做个实现。我写到这个位置啊。嗯。把这个啊往下稍微拉一点啊。然后咱们说这个过程啊。就是现在。在我们这个详情的页面中。它有这么一个按钮啊,叫立即观看。或者说也可以叫立即购买。这个啊寿命按钮,所以这个按钮咱要做完善,那怎么完善,就是我刚才给大家背出来的,我在里边写下啊,首先第一种情况,如果说你这门课程是一个免费的课程,那我们这个按钮应该显示的叫立即观看,这是第一个,然后第二个,如果说你这课程是已经支付过的课程,或者已经购买过的课程,那咱的按钮。
02:26
也是显示叫立即观看。这个啊是我们的第二个,然后第三个,如果说你这课程没有购买。并且它也是啊,或者它也是一个。就是。不是一个免费的这么一个课程,那这个时候我们按钮要显示的应该叫立即购买。这个啊是我们要做的这个功能,也就是说有这么几种情况,如果你课程是免费的,或者说你课程是已经支付过的,那它显示都叫立即观看,如果说你课程是没有购买,或者说课程是免费的,那我们显示就是叫立即购买,这个啊是我们要做的这么一个过程啊,没有购买并且不是免费,它就叫立即购买,如果你是免费并且已经支付过的,它就是立即观看。
03:19
所以咱们把这个我们给他做个完善啊,按照咱的过程,把这个咱们给他最终做一下,那咱们看这个我们该我们就实现啊,那我在里边给大家我来写一下啊。这些我先都关掉啊,就是咱们重新启动,我们来执行一下啊,首先呢,我们现在咱先看一下前端页面,然后再写接口,在前端页面中呢,因为咱们做的是课程详情页面,所以说打开课程详情页,这个页面叫下线id.vouee在这里边咱找到那个叫立即购买那个按钮,或者说立即观看按钮。
04:00
大家看。是不是在这位置啊,就这个A标签这里边,我现在写的叫立即购买,而现在这位置我们要给它做一个判断了,然后实现它的功能,那怎么做,咱们来一个做一下啊,首先有一个做法,咱在之前写列表的时候应该写过,也就是我这个。列表页面中啊,里边显示的内容,那我们找到一个地方啊,是咱们在之前写过的。大家看这段代表。不知各位是否记得啊,我们用了一个指令叫V-E,那这怎么做到的,你看我写法,如果说你课程价格是什么是零,那表示课程是不是就免费的,也就是说你价格是零,那咱显示是不是应该叫立即观看啊,这是第一个啊,所以咱们可以做这判断,但是这个判断中的看我刚才分析到的只是判断课程是免费的是不是,并没有判断是否已经支付过的,所以咱们一步来做啊,先把第一个做到。怎么判断课程是否是免费的,那我现在就可,其实就可以把这段代码直接复制到咱刚才那个地方去做个判断就可以了,那我们来写一下啊。
05:11
也就是到这个位置。这个地方啊,我们来一个V-E。大家看啊,就是现在我这里写到,如果说你这个课程的价格啊,咱用这个对象啊,它叫cos web view,如果价格是零,表示是免费的,免费的话这里不显示立即购买显示什么。是不是叫立即观看啊,这个叫立即观看啊,这是第一个就是如果说你价格不是零,咱们是不是再显示立即购买,那咱们再加一个判断啊,把这个我再复利好。怎么判断呢?这叫V-E。应该还有一个指令。大家也说过这个指令。叫什么V-else啊,或者说你再写V-if,它不等于零是一样的,我就加个V-else,就是它等于零或者不等于零,那如果它不等于零表示价格不等于零是收费的,那里边咱就选什么,是不是叫立即购买啊,包括这里边我们也叫立即。
06:14
购买这个啊是咱们做的一个最简单判断,就是判断价格到底是不是零,如果是零的话,显示立即观看,如果不是零,我们就显示叫立即购买啊把这个我们给他做到。所以各位把这个给他知道啊,那我现在啊,咱把这个重新启动,我们再把这效果显示一下啊,看一下目前的这个效果。这效果如果没有问题,咱再加上那个是否购买的一个判断。呃,包括这个我都停掉了啊,我再给它重启起来啊,OSEDU,包括U3,因为这几个我们目前应该都需要啊。启动起来啊。
07:00
这个啊,咱们稍等一会儿啊,然后现在我们是做了第一个判断啊,那先启动,咱先看我的刚才分析过程啊,咱们刚才判断第一个是不是免费,然后第二个就是表示你现在课程是否已经支付过了,那这个咱要怎么做了,怎么知道课程是否已经支付过了,那怎么做。大家可以考虑一下啊,各位注意啊,我们在这里边啊,有两张表,一张是这个就是订单表,还有一张是你的支付记录表,而大家看啊,在我们这个表里边其实存储了一些相关信息,比如咱就看这个订单表中,订单表中咱是不是存了课程ID,课程名称,课程封面。包括还存了一个东西,就是你的这个状态,包括还存了一个叫用户ID,那其实我们要判断你课程是否支付,是不是可以到这里面查询,怎么查呢?咱是不是能根据课程ID。包括你的用户外地就是哪个用户买这门课程,另外还可以根据一个状态,根据这三个值来查一下这课程,这个用户是不是是否购买过。
08:08
加入我的课程叫HTM5入门课程,然后我这个用户,比如说张三,那你就判断张三对于这门课程是否已经购买过了,那咱查这个表应该可以做到,就是查它的状态是否等于一,如果状态是一表示就购买,如果状态是零,那他就没有购买啊,这个是咱一会儿要写这么一个接口,做个查询,把这完善。那我们先看一下啊,目前的效果。这个没启动啊,我们都给它启动起来,OSEDU和U3头,咱看目前那效果能不能出来啊,就是刚才我们写那个是否是免费课程的一个简单判断,在我们的页面中就加个V杠,If,然后加上这么一个价格是否等于零。那咱们啊,先把这个先简单看一下啊。这个启动了啊,我来到这里边。
09:01
重新啊,我们重新登录。这个啊,先给他登录进去,然后登录之后我点击课程,咱们来做个测试啊,大家看我这门课程呢,是收费的,这个是免费的,我先点击免费的课程,大家看效果啊,我一点页面。可以看到这是什么,是不是立即观看,这没有错,那比如现在我点个收费的,因为这些没有显示都是收费,假如我点这个收费课程,大家看里边是不是叫立即购买,咱们要做的是不是这个效果啊,所以把这个我们先初步做到了,但是目前这么做肯定不完善,因为我们现在这么做只是判断他收费和免费,咱并没有判断课程是否被购买过,这下面咱们把下一个的判断就是判断我们的课程是否被购买过,如果说你购买过的话,咱就让它显示立即观看,没有购买还是继续显示立即购买。
10:05
啊,这个啊,我们进一步完善,那怎么来完善,在下面给大家画一下啊,然后咱们把代码做个实现。这里边啊,我写一下。那这位置啊,就是咱的做法怎么做呢?就就是现在我们要做的话,咱们可以根据我们的课程ID,包括你当前登录的用户I的去查咱的订单表,查这个订单的一个支付状态,如状态是一表示是不是就是已经支付,如是零,那就没有支付啊,所以现在我们要写一个接口。我写一下啊,就是咱们的实验过程。就是如何判断课程是否已经支付了,那怎么做,咱的做法就是我们可以根据我们这个。课程ID,还有这个用户ID。用这两个去查询咱的订单表。
11:03
查询就是这个订单那个状态,比如它里边那个C的状态,如果说它的状态这值是一,那就表示已经支付了,如果状态它这个值不是一就是零,那表示就是没有支付,或者说正在支付。这个啊是我们的实验过程,根据课程ID,用户ID去查你的订单表,看这数据能不能查出来,如果说里边能查出这个值,它的状态就是表示一申请支付,如果查不到,它就没有支付啊,这个是我们的一种实验方式,那咱们下面把这个我们先写一下,然后再做操作啊,但是这个过程呢,因为咱们要查那个O,所以说咱就在O的这个模块中,把这接口先写一下,为了一会儿其他模块中可能要做个调用。在这个啊,我们先把这个接口先做个实验。
12:00
就是创建这么一个接口,完成我们刚才说的这个过程啊。那咱们来给他写一下啊。我现在啊,这些先都关掉啊。先关掉,然后来到咱的O这个模块,在O的模块中,现在我把这个o crl打开,在里边我们就写下刚才我说这个方法。我在这个位置做个描述啊,这个方法就是根据。课程ID。还有我们那个用户ID去查询咱的订单表中的那个订单的一个状态,把这个我们来写一下啊,这时候我们要这个接口,因为这个接口然后面向模块中要调用到,所以咱们来把这个给它完成。那我来实践一下啊,因为它就是一个查询嘛,所以咱就来一个。Get提交get提交里边我给这方法起个名字,它就是判断这个课程是否被购买,那我来起名字啊,比如就写一个叫呃,意思BY这个Co啊,就是否买了这门课程。
13:13
这个啊,拜这个cos。这个啊是咱们写到的啊,我先关掉啊。然后这里边刚才我们说到它需要有两个参数,一个是课程ID,一个是用户ID,那把两参数我们都给它传进去,第一个Co ID,我们叫这个cos ID,第二个是用户ID,我们叫这个。ID啊。就是用户ID或者说会员ID啊,这是我们写的方法结构,然后写完之后,咱下面继续写一下,我写个public。啊,因为它表示啊,是否被购买,咱们可以返一个R对象,大家为了后面我们调用方便,我给他直接返一个类型就可以了,比如说给他返一个这个布尔类型吧。
14:01
啊,波尔类型,比如一会儿咱做个操作,如果说他这个课程已经被支付了,咱就给他return true,如果没有被支付,我就return for,为了后面调用方便,给他就直接返一个布尔类型啊,这样的话更加方便啊。然后后面写的方法,方法我就叫e by Co。这个方法啊,最后那个布类型,我先return false,把它报错,然后写完之后在方法中把两个值得到一个课程ID,一个用化ID,我用这个注解。第一个是课程ID。就是这个扣赛地,然后第二个是我们那个优坏地。啊,就来一个string,我们这个叫做。把这个啊给它拿过来,这是两个值,然后两值得到之后,下面我们就可以调方法,把这个做个查询,就是通过order service调下里边方法做个实验,那咱来写一下啊,因为现在他要有这个条件,所以咱把条件给他就先拼接一下啊。
15:10
就拼这个条件。我把这个拿过来来写条件,条件中的第一个值是我们那个课程ID,那我来个rapper.eq加上课程ID,课程ID呢,我到表里边把那个字段咱们复制一下啊。就是这个名字,叫这个扣赛地。把这个咱先拿过来,然后后面加的是这个叫扣菜地啊,这是里边的第一个值。然后除了他之外,下面还有一个这个条件,第二个EQ,第二个是咱那个member ID,就是用户ID,在表里边应该有这个ID,咱也是复制一下啊,应该是。Member_ID是咱那个用户ID。这个我也。输入过来啊,Number ID,然后除了它之外,下面还有一个条件,因为咱要查这个订单的一个状态,也就是啊,查里边这个C的值,看这值是否等于一,如果它等于一,咱表示是不是已知符,如果它不是一,那就是没有知符,所以咱要查这个。
16:19
那我来再写一下啊,这叫CS,它的值是一。再来一个rap.eq。这是CS,然后它的值就是一个。一啊,咱看这个类型是int还是润啊,这是一个int类型,所以我们就写一个一,这样的话把条件写出来了,根据。你的课程ID,用户ID,还有它那个状态,这是支付状态,一代表是已经支付。这个写出来了啊,然后咱们调方法,Order里边的方法。那这方法要调什么呢?给大家说一下啊,因为咱们现在啊,这个课程,包括你的用户这一条记录,应该只有一条记录,所以咱们可以用一个叫get y是可以的,但是我现在这个方法,我们的目的并不是为了得到值,我只是想看我这个状态是否是成功,所以呢,Get y没这个必要,咱可以再换个方法,咱之前也用过这个方法。
17:23
大家看啊,这是什么count count就表示啊,你这个条件中能不能查出记录,所以大家注意啊,如果说能查出记录,就表示咱是有支付状态就已经支付的,那我们就return处,如果查不出来,我们就return for用个count可以了,因为咱只想看里边能不能有能做个支付,如果说这里边我们不是查数据,就没必要用,那get one用count就足够了啊,那我加一个rapper。它返回就是一个int类型。那咱们下面做个判断啊,也就是说,如果说你这个条件能查出记录,那这countt肯定是大于零的,表示它已经支付,那我来。
18:08
第二个判断。就是里边这个count大于零,它就表示已静支付。如果说已经支付的话,那我们就吞一个值,就这个处,如果说他没有支付,那我们就吞这false啊,通过这个我们给他做一个判断,所以这样的话,咱把这接口就写出来了,根据我们的课程ID,会员ID,还有你的状态是一来做查询,如果说能查出记录是支付,咱就return处,如果查出记录,那我们就returnfor。这个啊,咱就快速完成了这么一个基本的一个接口。所以各位把这个也能给他快速做到啊,我们就是按照刚才咱分析这个过程,把这接口咱就写出来了。就是里边的这个部分啊。
19:00
我把这个给各位截过来啊。所以咱们现在完成了这么一个接口啊,然后这个接口做完之后,下面啊,咱就开始在我们的里边做个调用,把这个流程做到现在接口的准备已经做到了啊,然后下面怎么做,给大家来说一下啊,咱们下面做法。各位注意啊,咱们这里边要做的效果就是当我进入到那个课程的详情页面,咱是不是来显示你的,就是立即购买和立即观看呀,所以说咱们项目要做的话,咱就把那个详情查询那个接口需要做个修改,在里边给他加上一个查询,就是查询他课程是否已经购买,咱们需要这么来修改。啊,那我在里边写一下啊,一个过程,然后咱再写代码。这个位置啊,到这里。就刚才咱们把这个接口已经写过了,这接口就是根据这些值查这个订单是否已经支付成功,然后这个做到之后,咱下面继续来写,下面写什么呢?给大家写到这里啊,我们的做法就是。
20:10
因为啊,咱们现在是在课程的详情页面,就是在这个页面,我们要显示那个立即观看。或者立即购买,所以咱现在要怎么做呢?咱就需要把这个课程详情这个接口给他做修改。啊,就是我们就需要修改课程详情查询的这个接口,把这个需要改一下,而里边怎么改呢?咱改的方式就是在里边给他添加上一个返回,值什么值呢?就返回一下你当前这个要显示详情的课程是否已经被。购买过了啊,就要做这个事情,这时候我们要做一个判断,就是我再说一遍啊,因为咱们现在详情页面中去显示你是立即观看还是立即购买,所以我们现在需要把这详情页面这个查询这部分的接口需要给他做个修改,怎么修改呢?在你查询接口中,因为咱之前返回的应该是你的课程基本信息,包括课程的章节小节信息,咱现在需要给他添加多一个返回值,添加什么返回就是返回你当前课程是否已经被我当前用户购买过了,需要给他加上这么一个东西。
21:30
这个啊,是我们要做的这么一个完善。所以各位啊,把这个知道啊,而这个咱们购买过,咱刚才刚洗过接口,所以咱们就可以通过一个我们之前学那个远程调用过程调这个接口,然后把它做个实验。那咱们啊,到里边我们来改一下啊。首先咱先来到我们那个课程的详情的接口,把这找到。课程详情接口在CTRL里边,应该是这个位置。
22:01
然后咱们打开详情。是不是就这个接口。各位看啊,咱之前查询的有两部分,第一部分就是根据课程ID查课程的基本信息,第二部分是根据课程ID查询你课程里边的章节和小节信息,但是把这两个查出来了,然后下面咱需要再写第三个,第三个是什么呢?咱就可以根据课程ID和你的用户ID去查询。当前这个课程是否已经支付过了,就要做这个,咱通过它查询,给这里边也加一个返回值,为了咱们页面中能做个判断,这个啊是咱要做一个完善,那怎么做,我们来写一下啊,这个过程呢,还是按照咱之前那个。就是远程调用过程,那我们看一下啊,首先order应该在我们的na中,咱做了一个注册啊,应该注册过了,这里边都做到了,然后咱们需要在我们的edu里边去调这个order中的方法,那咱看这个也注册过了,包括也加上这个fin的这些注解啊都有,那咱们看下面怎么做。
23:14
希望各位要知道啊,咱昨天写过很多这种远程调用方式,那我来说一下啊,它的做法就是呢,咱们在里边是不是能建一个interface,然后在interface上边指定你调的那个服务的名字,包括定义你调的方法的路径是不是就可以了,然后咱们一调用就能实现啊,那我来写一下啊。当然这个过程中呢,咱之前呢,在配置文件中应该加过这个东西。就是这个熔断器啊,就你加熔断器之后呢,需要来个时间内啊,这个我就不加了,各位把它完善一下,我就写一个接口啊,最后调用你这个你可以给它打开,按照我们之前讲过这种方式加一个接口,包括它的熔断器,当你出错了,它会反应这个内容啊,我就简单写一个调用,然后各位把这个细节给它完善一下啊,那咱们来写一下啊,怎么做,在这个client里边,我现在再来新建这么一个interface。
24:12
咱重新创建一个新的interface,比如这个,我起个名字又叫orders。这么一个interface,然后创建之后,在这个接口interface上面我们加上注解,第一个注解。Com。然后第二个注解,这个叫b client,在里边加上你要调的那个服务的名字啊,把那个服务名字我们给他加过来。那我们给他就加一下啊。这些我先都关掉啊,你就保留一个啊,然后这个服务名字我到这个配置文件中,咱们把它直接复制过来,就是service order。这个拿过来了啊,然后拿回来之后,下面在这个interface里边,我们就定一下你要调用那个接口,那个路径,包括它那些参数,那些信息,也就是咱们刚才写那个查询订单状态那个接口,那我把它打开,也就是里边的。
25:11
这个接口,咱现在把这个接口就复制到我们这个interface里面来啊,直接复制过来。然后复制之后给他改几个地方啊,首先第一个路径咱改成它这个完全路径,这个路径eduo加上一个O。后面是is by,这个cos,这是第一个啊,然后第二个还需要改个地方,我之前说到过啊,咱们做远程调用的时候,这个注解后面你需要加上一个参数,名字不加的话会有问题,那就把名字给它加上,第一个叫cos。第二个叫member ID。这个我们就加上啊,在这个我们在里边把它就创建了,然后创建之后咱下面就来做这个调用啊,把这个过程我们最终实现。
26:02
那我们来调用一下啊。咱们来到还是这个。课程的详情那个接口中。就是我们的这个接口,然后在协用接口中,咱就通过远程调用过程把它做到啊,也就是你把这个兰注进来,然后一调就可以了。
我来说两句