00:00
下面呢,我们要完成提交订单,那么提交订单的时候,我们先要开发出这个提交订单的接口。提交订单的目的就是我们需要将那些数据啊,我们的这购物车什么负的各种数据要提交到咱们的all的这张表中,在all的表中保存着,在订单列表上保存这个实物,然后将来呢,我们就会去进行支付了。好,呃,我们来看怎么做啊,我们来开发这个。提交订单的函数。我们给order添加一个远程函数,那么前方是叫post就好了,函数名字呢,是提交订单。The summit order。那么它一共需要哪些参数呢?呃,首先所有参数都放在贝塔里面。是玻璃一个参数,我们先把基本结构写一下,然后我们来说明一下它设计的参数。
01:00
我们这里面呢,最终要创建一个order,而order需要的参数,我们可以再回忆一下我们之前的这个创建的这个数据模型。他有店家ID、用户名、手机号、收货地址,还有这个总价,这些信息后面都是关联,不用管,所以这些数据是正常,是必须要的。与此同时还要创建与之相应的order food,因为订单本身它并没有实物,它只有店家这些信息,而代表实物的内容是在这个order food里面。所以说我们既要在order这张表中创建这个订单,同时要为对应的订单创建N个order food。也就是说,你这个订单店家有一个,下面有两个商品,那么你就应该在order中创建一条数据,在order food中创建两条数据,而order food需要的数据就是order ID和负ID。所以我们就进行设计啊,它的一个参数。它应该有哪些参数呢?我们一起来在这里写写清楚啊。
02:00
在这里写一下,大家就可能对参数就会更加理解,首先我们对于咱们的这个O的订单的参数都需要什么,SOID。对吧,然后还有这个username mobile address。好,这些都是正常的啊,还需要这个money。喂,这是这几个数据,同时我们要创建对应的这个负的数据,那么负的数据我们只要什么呢?只需要负的ID就好了,就可以创建了,那么food的因为有多个,所以说我们就创建一个,它给我一个food的意思,这个food list里面包含的是所有的food的ID。所以我们需要这么多数据啊。好,需要这些数据之后,接下来怎么办呢?就去串接order,那么就order decrease。然后创建这些order数据就好了,呃,把这些参数塞进来对吧?For this不需要啊,不需要,然后。
03:05
那么这里就是创建,创建订单。好,创建订单之后呢,它会有一个返回值,返回值就是创建好的这个订单对象,我们需要提取它的ID。结构得到它的ID,我们需要得到订单ID,因为我们在创建这个order food的时候,需要订单ID才能创建order food,所以说我们在这里得到创建后的订单的ID。好,得到第八题之后,接下来我们就要创建。订单食品对吧,订单食品。那么电动食品因为可能有多个,所以这里涉及到个便利啊,我们用负循环便利就好了。对吧,来这个I等于零,I小于负的意思认。
04:02
然后呢,爱加加。好了,然后在这个里面呢,我们就去便利创建这个订单实物啊,那么。订单表是order的订单实物,这个表怎么得呢?这个时候我们就需要通过一个它这里有个固定的量models models代表的是所有的模型对象,那么从这个所有的模型对象中,我们可以找到我们想要的这个order food的这张表。诶,就这样找啊,那么我们去create创建order food,那么out food呢,它需要两个参数啊,一个是order ID。那么就是上面这个ID,一个是负的的ID,好负的ID呢,就是这个负的绿色,取这个I啊,取你遍地的这个元素,这个就是负的ID,这样呢,就是就是创建我们的啊订单食品。好,当你订单一旦生成好之后呢,那么购物车就不能再有这个商品了,因为我要付钱了,你不能再再让我再看到了,所以我们还要删除。
05:08
对吧,购物车对应的数据。那么我们接下来又要去models,点这个cut去第啊DESTROY2,我们要删除多个,那么删除哪些呢?我们可以用过二尔法法去删除,通过这个负的例子去删啊。我们把这个负对应的这个数据呢,全都删掉。是不是就好了,对吧,把佛的意思对应的删数据都删掉,或者是说还有一个简单一点的,就是说八。啊,其实就是简单点就收D,把这个收ID对应的,并且is selected。为处的,把他们给删掉。大家想是不是这样的?我们对应删除的是这个说ID对应的数据,因为我要下单肯定是这个店家对应的数据,那么店家对应的有哪些数据呢?选中的这些数据我们要删掉。
06:03
那么这样写的话呢,可能会更简单一些。好了,那么最终全部做完我们就可以返回啊,一旦有一个失败,我们就呃抛异常。好了,那么这里因为涉及到咱们的多个表的操作啊,所以说一旦有一个出现问题的话呢,下面的流程应该都不要走。对吧,所以这时候我们引出一个叫事物的概念。那么事物的话呢,就是你可以把它把整,把我们多个这个表的操作呢,它可以整成一个操作,相当于可以看作一个操作,那么这些操作全都做成功了,那么我最终才成功,只要有一个失败,那么所有操作都会取消。就不会出现,比方说我订单创建好了,但是下面的失败了,导致我空有个订单,下面东西没有,那么这个订单就没有意义。
07:01
所以我希望所有做成功才成功,所以这时候我们可以用一个事物的内容。怎么做呢?我们首先要呃开始事物,或者说创建事物。就是什么时候开始,什么时候结束,对吧,结束的时候要干啥,我们可以操作啊。来,我们可以定义这个事物,通过这个order去创建啊,它有个begin事物的一个方法。开始这个事物。好啊,这样的返回值就是那个事物对象啊,然后呢,我们接下来在每一个操作的后面加上这个事物。就是这个TS。啊,加上这个TS就好了,然后在每一个操作上都加一个,那么他就会把这个操作看作是一个整体。再加上这个好,最后呢,当你全部做成功了,下面就说全部成功了,那么我们要提交事。
08:00
代表全都做成功了,那么这些事情才会真正的生效。但是一旦有一个失败,他就会来到这个开始流程,那么我们就要去回滚事物,就要把它数据回滚到之前的一个情况。那么这里就可以呃,TS点。回过是back。那么这样的话呢,就会对代事物呢,进行对代码进行回滚,对咱们的数据进行回滚,回到我们最开始的样子。好了,所以整个呢就会比较不错啊,那么事物的话呢,一般就是对应着我们要对表,多个表做各种操作的时候,那么我们还能加入事物,如果就一个表一个操作,那就没必要了,因为他做成功就做成功,做失败就做失败,没必要回国。好,那么多个表就是一起操作的话呢,就会可能存在啊,有一个表成功了,其他表失败了,这样就导致我们那个成功的那个表的数据呢,没有任何意义了。
09:04
好了,那么做完之后我们点击保存。发布并重启测试环境。好了,到此呢,我们就开发好了提交订单的这个接口。
我来说两句