00:01
下面呢,我们继续来开发取消预约接口,刚才呢,咱是完成了里边几个相关的方法,包括微信退款方法,在退款里边呢,咱可能得到支付记录,然后添加退款记录到咱那个退款记录表中,包括这微信接口得到它返回的数据,刚才把这些都完成了,那咱们下面继续往下来做,那下面我们做什么呢?咱就可以开发它的control,包括最终完成这个取消预约的这部分。那这部分我们要怎么做呢?下面啊给大家我先做个分析,然后咱一会儿做个实现,咱们看这该怎么实现啊,首先咱们这里边要做一个就是这个取消预约的这么一个接口,那接口中要怎么做呢?给各位写步骤,首先第一步咱们可以根据我们这个订单ID得到我们这个订单的信息,这是第一步,然后得到信息之后,我们的第二步做什么呢?是不是要判断一下这个时间,这部分就是判断你的时间,比如说现在当天时间已经超过了你这个退号时间,就是不能再退了,那咱是不是就不让他进行这个退款操作,如果说没有超过,咱再进行这个替换操作,所以这是我们的第二步,判断时间是否超过这个时间。
01:21
然后这个做到之后,我们的第三步干什么呢?给大家强调,因为现在我们这里边是在平台中操作,所以第三步咱就去调用医院那边的接口,然后实验一个就是这个预约的一个取消,去调用医院那边接口,然后第四步我们做法就是根据医院那边接口返回的数据,再进行下面的这个操作,第三步咱要去掉医院接口,然后第四步再进行线外操作。而第四步之后我们要做什么操作呢?给大家写一下,首先第一个咱是不是要去更新一下我们的订单的状态,比如说你这里边医院那边已经成功了,咱们把订单状态改成就是已经取消,或者说什么操作,然后这个做到之后,我们的第二部分,咱是不是就能去调用刚才写那个微信退款的这么一个方法,这里边实现咱的操作,包括在操作中咱可以把里面相应值改成咱们的状态,比如说。
02:21
已经退款,或者说订单已经取消等等,因为刚才在退款方法中,咱已经添加上了相关的这个记录,比如说咱们的退款记录等内容,所以咱最后就来完成里边的证明步骤,这各位知道下面呢,我就按照这个步骤把这个接口咱给他最终完成出来。那下面咱就来写一下这个健康接口,我们来实现一下啊,首先第一部分因为咱是订单嘛,所以我就来到我们这个order API ctrl里边,在这个里边写上咱们这个就是取消订单或者说取消预约的这个接口。
03:00
我写一下取消预约,然后在里边我想一个方法,比如我们叫get mapping,在里边加上入境,咱们叫这个author,比如叫这个council,这个order。CNCEO后面传入咱们这个订单的ID就是O的ID。这是一个路径,下面加方法public result,我们叫这个council order。在里边传入我们这个订单ID,咱们通过这个pass注解把这个得到啊,这些各位同学应该很熟悉了啊,咱们写了很多遍了,然后得到之后呢,下面咱就可以调用service里边的方法来做这个,就是取消订单的这个操作,那我们调一下啊order service里边我们调这个方法,就是咱们调这个conso order里边传入订单的ID,然后调用这个方法来实现,咱们就用这个和操作这个方法,比如让他返回一个布尔类型,就是一个true或者force啊布尔类型。
04:11
咱们叫这个就叫意思order。然后最终把这返回值,咱给他做一个对推。result.ok里面加这个is order,这样的话CTR了我们就写出来了,然后写完之后,下面咱们来创建这个service,在service里边先把它的方法创建,创建之后咱们来到它的实现类中,在实现类中实现一下它最终的这个方法。那我们在里边写一下啊,这个过程呢,刚才给各位同学应该咱们做了详细的分析,那我下面就按照我刚才的分析过程,把这个代码给各位来写一下啊,咱看一下第一步先根据订单ID先得到我们的订单信息,那我们来获取一下啊,我写个注释。
05:04
先获取订单的信息,那咱们调方法,我们就调这个base ma里面这个叫做啊,应该叫select,白地里边传入OID,然后得到的是咱们这个订单的信息,这是咱们的第一步,然后得到其订单信息之后,下面呢,咱们做过判断,就是判断我是否可以取消,就是这么一个号源是不是可以取消,那怎么取消呢?大家看一下啊,在O的音for里边呢,有这么一个就是值叫get头。Time这么一个方法,这个方法就表示你当前这个退号时间,咱用它可以做判断,那怎么判断呢?这里边各位同学该记得啊,在我们那个data type,一个方法叫意before,或者is afternoon切换方法,用它咱会自我判断,那我写一下,我把它就转成这个。
06:04
Datetime。然后比如我叫这个q it time。啊,就是等于咱们里边的new上一个date time里边传入这个值,我把它就直接。传进来啊,这样的话给它变成一个get time一个类型,然后变成之后呢,下面咱们做一个判断,什么判断呢?比如说我现在时间呢,如果说超过这个时间,那我们就不能再退号,如果说它没有超过,那我们再进行退号,那我写一下啊,就是里边这个Q time.is before no。比如说现在时间啊,他你超过他就是这一在现在时间之前,那这里边我们就里边已经不能退号了,那咱直接给他抛出一个异常,我们就来一个预约挂号exception,然后里面加一个result,这个扣的枚举里边一个啊,比如说我们看一下里边应该是有一个值。
07:04
呃,应该是这个,就这个。O no no啊,就是不能。取消这个。约因为现在时间已经过了这个时间,所以咱们这里边做了这么一个判断,这个位知道啊,用到data time中这个方法,把这个时间,比如说现在他约定我们是15点就不能退号了,然后现在你又超过了15点,那他就直接抛异常,如果这个完成之后。我们里边的第二步实验楼,然后第三步呢,咱就可以去调用。医院那边的接口,然后实验一个这个。预约的这么一个取消去调用医院,而调用医院部分呢,咱们看一下啊,在咱们这个医院的模拟系统中,这个系统中有它相关这个方法,那咱找一下啊,看一下里面这个方法。取消预约是不是这个方法,所以咱一会儿就来调这个方法进行实现,而这个方法调的时候呢,跟咱们之前写的一样,那这个代码我就不再敲一遍了啊,你之前写过很多次了,咱就是用个map集合往里面设置值,然后设置值之后最终去调用这个方法,根据它的返回结果,我们再进行相关的操作,那现在我把这个给个复制过来,咱们看一下这个写法啊,在写法中首先得到这个。
08:26
Sign info view,对他那个签名的T,然后里面设置house code,包括它的ID值,然后最后去调用这个方法。这个方法中咱们传入一个map,然后这是得到它的路径包,里边是order update cancel thes,最终返回是result,然后返回result之后咱们就可以解下根据。我们这个医院接口返回的数据,然后进行我们的相关的操作,那我们来写一下啊,在医院接口中给咱们加上一个if。
09:04
然后这个值是result,咱们写一个result.get应该是一个int类型,然后里边一个值是一个叫扣啊扣的这个状态吧。扣的,如果说它的状态码的值,比如它不等于这个200啊,不等于200,那里边肯定是失败的,咱们做一个处理,如果他等于200,那我们再进行这个相关的退款操作,然后写一下,如果说不等于200,那表示我们那个医院那边是失败了,咱就给他抛出一个异常就可以了,那我现在把异常给他抛出去。啊,就是子new一个预约挂号exception,然后咱来一个else else表示呢,医院那边是调用成功的,如果医院那边调用成功,那我们做什么,就可以调用咱们微信退款的方法,然后进行我们相关的这个操作啊,那咱们下面往下给他做实现,就是调用退款的方法,请做到。
10:06
然后在退款方法中呢,我这里边呢,也是加了一个判断,就是里边的这个判断,咱要判断一下啊,我当前的订单是否可以退款,就是它的状态是否是可以退款的状态,里边写的这个判断。我把这个给大家来不来啊,所以各位注意啊,我们写代码的时候呢,一定要把每种情况都给它详细考虑到这里边我们考虑就是判断当前的订单是否可以就是取消。或者说是否可以退款,然后里边有这个纸,如果他是。已支付咱可以退款,如果它里边没有支付,咱是不是就不需要退款,因为你没有付钱,那肯定不退款,而现在是可以退款,那咱就调用刚才我们写那个退款的方法进行做到我们调这个就是。微信里边这个service,那微信service呢,咱们看到啊,里边应该没有注入,咱们把它先注入进来。
11:06
我们加一个包,然后加一个微信。Service,咱们就调用微信里边这个方法,把这个最后退款,退款方法刚才刚写过要这个refund,然后里边传入咱们这个订单ID,传入之后它返回的是一个布尔类型啊,比如我们叫这个意思。Re,放的啊,不是类型,如果说这个值呢等于false,那就表示退款失败,大家给它抛异常,如果说退款成功,那我们再继续往下进行,那我来写一下啊,咱做个判断。我加个。If如果说这个值呢,等于false,就是意思。Refund,那咱给它就抛出一个异常,我把这个啊给它直接出去,如果说它的值等于负,那我们再进行下面操作,那下面操作做什么呢?咱就可以来更新一下咱们订单的状态,表示它就是已经完成这么一个,就是取消操作,那咱给他就更新一下这个状态啊。
12:18
那怎么更新呢?咱这里边有这个older info,就是咱们这个订单信息,然后像里边设一下他这个订单的状态,Older thes,咱们用到那个霉菌。我写一下啊,就是order里边这个thes枚举里边有个值,这个值应该是这个取消于啊这个值,然后叫get thes,咱做设置,设置之后呢,我们来调这个方法,就是里边这个base map中这个叫update,白地传入或info,这样的话把咱们订单状态就改成了取消预约,也就是里面的这个状态。
13:01
所以大家看啊,我刚才写的这个过程是不是就是我刚才给大家分析这个流程,我就按照这个流程把这个功能咱们最终给他写出来了,所以现在我们就完成了,然后完成之后呢,最后还有一个小功能,因为咱们现在取消了订单之后,那我那个剩余数量是不是要加一啊,所以这个过程呢,咱用到相同的方式,咱还是发送一个MQ去更新一下它那个就是相关的预约的数量,把这个做到,这个过程咱在之前是写过的,那这个代码给各位我就直接复制过来了啊,咱们给它直接拿过来,通过rub b和MQ进行这么一个发送。然后把这个代码给大家复制过来,然后咱们看一下啊,首先咱们用一个叫O的MQVO项里面设置它的相关的值,然后这里边我们有一个短信的一些相关内容的设置啊,把这个做设置,设置之后咱通过ric m service发送send message,然后里边发送这个消息内容,而这个过程中会到我们当时写那个就是好的批里面去咱们找到啊。
14:14
在好批斗中能接收到你发送这个消息。有这个里边。然后在里边咱们可以做这个。更新的数量,他应该会到我们这个位置做这个更新啊,这个这些咱都写过了,所以现在我们把这个过程咱就给他最终完成了,也就是里边的这么一个流程。然后这个完成之后啊,最后就是咱给它加上一个蕊退啊,我们就要蕊吞一个这个触啊,因为它是一个。布尔类型。然后,否则我们就吞一个。这是关于我们写的这个相关的接口,咱们现在把它就最终完成了啊,所以各位能按照我们这个流程呢,完成咱们最终这个代码,现在我们就做到了啊,然后做到之后我把这过程呢给大家再分析一下,因为这个过程呢,要稍微麻烦一点啊,那我们看我是怎么做到的啊,首先我们的咱就从接口部分看,第一部分里边我写了一个CTRL了,根据咱们的订单号去取消订单,这里边会调咱们的service中的方法,在service里边呢,我们做了这个事情,第一步先得到订单信息,然后判断是否可以取消,如果超过时间就不能取消,如果没有超过,那我们先去调用医院那边的接口,通过医院的返回值,我们给他做一个相关操作。
15:44
然后在医院那边,如果它反应值不是200,咱直接抛异常,如果反应值是200,那我们怎么做判断当前订单是否可以取消。如果可以取消去调用微信,咱们写这个退款这个方法做取消,取消成功之后更新状态,然后发送MQ去更新我们的数量,在咱的退款方法中,刚才我写过一些相关的内容,所以大家看啊,我们就是获取了支付记录,然后像退款记录表中加数据,当你退款成功之后,他也做了一个相关的更新,所以这是关于我们写的退款的,就是预约挂号取消的接口开发,咱们把这个就最终完成了。
我来说两句