00:01
接下来去。写其他的一个内容啊,我再多点几下,多添加几条啊,这样我去写列表三条吧。接下来完成我们的列表啊,列表的话呢。啊,因为我们的地址一般比较少,也就十来个左右啊,十个左右。我们的收货地址,所以说一般不去做这个。啊,分页也不去做一个搜索,所以我们直接就简单的返回所有的一个地址的一个数据就可以了。Where有色杠ID?啊,直接get获取所有数据就可以啊,最后return这个数据啊,当然返回的时候呢,我们可以去结合这个啊,顶果API的这个响应生成器啊,利用transform去返回。
01:05
来,我们。先返回一个response,然后返回一个集合啊,这个数据放这这个transform,我们先在这里等着啊,下面写呢,先去写一下,复制一个。用户的吧。用户的就是好改一些。Transform。Address transform。啊,这里是啊。接着把这些变量改一改啊。这些没有的就先不写了。然后这个时间。复制几条啊。
02:02
有一个city-ID。那这个我们要给它转成什么呢?我们要给它转成啊,实际的一个省市县。清楚吧,我们要转成比如说这个北京市昌平区。昌平区是不是?沙河。继续。好。这里我们啊给上啊这个name。或者说这个str就是字符的一个形式去显示地区,这个是ID,但这个我们先临时这么写着,肯定要根据这个ID去,呃,找他的这个负极啊。嗯,接着还有看看有什么字段。看一下我们这里验证啊。还有手机号是吧。啊,还有地址。
03:08
然后还有手机号。啊,这么多啊。哎,主要是处理这个啊,这个我们想办法把它给处理成。啊,就是通过城市ID。就是通过这个乡镇的或者这个ID去查到一个完整的一个地址啊,这时候我们可以去写一个辅助函数。啊,写个辅助函数比较简单的。通过。啊,三四级。ID。查询完整的。省市县信息。啊。
04:01
CT内我们统一用CT内,然后这里我们要接收一个。ID。啊,这里也换一换啊,这里还没有用,这里也换一换,我们同一c name啊。这个就。还要接受一个什么?接收一个分隔符啊分隔符。我们等会再说吧,先把这个功能写完之后再去优化它。接下来就是去查询。啊,这个城市通过它不断的一层一层往上的去查,直到查到这个顶级,就是说PID为零的时候为止。接下来我们来写一下,我们来想一想,我们在处理它的子集的时候,在模型里面定义了一个关联,那我们处理这个负极可不可以定义关联?对不对?那子集是has many,它有很多子集,那负极是不是北belong子to,它属于哪一个父集?
05:01
对吧,所以我们复制一个这个。改成负极。Hey。把这个改成啊。负极就是它属于哪个负极,这个应该就是给浪子图了啊,这个关联关系不用变,还是PID进行关联的啊,那这样的时候。啊。我们这个方法啊,我们这个help这里面,哎,就可以得到,就是说查按这个ID去查,就说。城市信息的时候。Where city ID?哎,等于这个dota c。啊,不是这个是ID啊,等于。City ID。哎,查这个城市的ID的时候,同时让他去携带上谁的这个信息呢?啊携带上这个。Parent。
06:03
啊parent啊,因为我们可能有有多个parent啊,所以我们就多复制几个。就是最多不过四个嘛,对不对啊,那无所谓啊,你最后一个你拿不到的时候,它是空嘛,是一个空数组。好,来first取一条,好,然后我们先把这个city给返回啊,看一看,然后在transform里面,这里就不这样写了,去调用这个方法。把我们的这个ID传过来好吧。来看看。这里啊,扩容器这里空隙这里我们要使用上这个传的form母啊。之前是没有没有使用是吧,这里我们要使用那个。地址的,这个传承父母才可以啊。来看一下。这是我们的啊,这个区域的这个ID,然后。
07:01
这是查的这个区域的这个名字这个信息对吧?好。嗯,接着是他,他的父亲呢,然后是。他的负极的,然后是他的负极的。是不是这样,然后最后到他就没有了。啊,就没有了,就不拿了啊,所以你这里拿的有点多啊。其实只要往上拿两层就可以了。啊,这里拿的有点多,往上,因为本来它就是一层了,他往上再拿三层就可以了。是吧,不然拿的有点多啊。但是因为我们这个是,嗯。1234级的,所以说我们到这儿可以拿到这个啊,但我们比如说我们这个ID是三级的一个情况呢。是不是它就会多一个负ID为空的一个情况啊,所以我们怎么去拿到这个零,就说这个名字。名字的话,我们肯定是从最后一集开始去拿。啊,从最后一题开始去拿。倒着去拿对不对,所以我们去数嘛,啊,这是它的结果123啊三个三个parent对吧。
08:07
好。那就是从这个city。我们先定一个str等于CT里面的。啊,一层。嗯,这么写也行啊,其实你写个循环也行都可以。啊,我是拿他的这个三层,但三层呢,他有可能。这个不存在啊。取它的这个内,但是它有可能不存在,所以不存在的时候呢,我给一个空啊,防止它报错,接下来。就不断的去连接就可以了啊。然后是两级的。一级的。对吧,一直连上,哎,我们。这个的它的一个内容。
09:01
哎,一直连上它的这个内容四级嘛,你看啊1234。对吧,如果是level是三的话,那可能就是没有第一层,没有第一层,第一层就空嘛,那从他开始选嘛,我们这么写是比较取巧,你其实可以写个循环也可以啊。最后我们来返回这个str。啊。看一下啊,看一下效果。啊,可以看到这个数据是对的啊,但是我们如果想加上这个空格的话呢,啊,你还可以啊,在每个的地方去连上这个空格。在哪去连呢?在。这个最后去连啊,连这个空格。啊,把它给括起来。啊,不这么不这么连也行啊,我看看在哪连。在这前面去连吧,好吧。还是在后面连连个空格啊。
10:05
嗯,但是要把前面把这个给括起来,作为一个运算来算啊。啊,同样的啊,这个。这么写比较麻烦是吧。麻烦的话,我们我们换一种写法,换一种就是说使用数组的方式啊。哎,我们把它都。我们定义一个数组,然后把这些东西都给放到一个数组里面去啊。最后数组我们使用数组连接嘛,把它们给按照啊,这个空格给连接起来嘛。就可以了吗?啊。对吧,这个就不要了啊,最后我们返回的是嗯。Plot。把这个。
11:00
然后是连接的一个规则。按照空格去连接啊,连接谁我们的这个数组这样也行。对吧。是不是就有这个空格了。对不对,但是我们考这个情况,就是假如是三级的情况,三级情况这里是没有的,这里是个空空的话呢,他也会去补这个空格,我们来找一个三级的试一试。找到城市表。啊。搜索这个level等于三的。往上翻一翻。这样很快的。看一看啊,Level等于三的。应该是直辖市啊,直辖市level等于三。那我就直接在这个。辅助函数里面啊,我去查一下啊。
12:07
Find。一啊,查北京的。使用这个使用这个方法去查,然后去查他的所有子集。嗯。ID丘疹丘疹,然后拿它两个子集,因为这个北京的话它没有啊到第四级啊,只到这一个第三级。好看一看。这是我测试一个数据啊,我只是为了拿他的这个。啊,那这个不能用它用一我在写四。看一下啊。好。它的第三级是什么?是街道啊,北京因为指这个市区,然后到街道就没了,它是三级,所以我们现在来测一个level等于三的,试一下啊。
13:03
那得到这个ID以后,这个就可以不要了。这个就可以删掉了,嗯,把谁呢。把我们地址表的这个数据。这里不是关联了一个城市的ID吗?我们把它改成它啊。看看三级的会不会有问题啊。可以看到三级的是吧,没问题,四级的没有,但是三级的呢,它会多一个空格,因为我们第一位。是不是它为空为空的话,但是我们呃一个就是说lo的时候,它也会给它连一个,所以我们加上这个。把它两边的空格给给过滤掉,这样的话就比较完整了。这样我们这个就处理好了,是不是这个辅助函数啊。当然你如果感觉每次处理会查询数据库一下比较费事的话,你也可以对它做一个缓存啊,这里我们就不做了。嗯。都写好了,这个川字也写好了。
14:03
关全部关掉啊。列表这样就写完了,接着去写啊,地址管理,其他相关的一些功能。地址的一个详情啊,地址的详情这个比较简单啊,直接你来注入进来这个地址就可以了。啊,最后。直接一个ITEM1条数据吗?嗯,这就完了啊,我们来看一看。看第一条地址的一个详情,Get方式请求斜杠一。是不是有了是吧,包括这个信息都有。好,详情写完了,那接着写更新地址,更新地址呢,跟添加一样,你首先得用这个表单验证是少不了的啊。接着呢?啊,这些都是一样的,都是一样的。只不过啊,这个换成update。
15:05
题啊,Update。嗯,这里返回一个啊,能CL的一个响应就可以了。我们来试一下。那这个就不用去追加这个用户ID了,用户ID我们不需要。清楚吧,而且这个是要依赖注入地址的这个模型,然后使用这个模型的这个啊D的方法去更新啊,应该是这么去写。哎,这样就完成更新了。来试一下。呃,更新我们就更新第一条吧,使用put方式,然后加上这个地址。这个包子里面写上我们的这个数据。我们把这个11号改成12号。啊,更新完成204数据库看一看啊。
16:06
没有打开。是不是12号啊更新。更新也写完了。删除删除就更简单了,只要直接使用它,然后复制一下使用它的这个。啊,Delete方法就可以了。也是返回一个,没有任何的一个响应,我们把第几个删了,第三个删掉啊。来还是这个地址,三使用delete方式把这个地址改成三。哎,我们就把第三条给删掉了。看一下数据库啊。没了是吧,哎,这样地址的这个增删改查就写完了,然后还有一个是否设置为默认地址。现在都是零啊。是否设置为默认地址?来这里我也要去。把我需要设置的这条数据给依赖注入进来啊,看地址里面我们应该是有这个参数的。
17:08
是不是开启方式是注入的一个参数的啊,那在设置之前呢啊,先把先把所有的。所有的都设置为,所有的地址都设置为。非默认啊,然后再设置为默认,再把。再设置为当前的这个为默认为默认,好嗯,先把所有的设置为封门啊。啊,记住是设置你你你自己的啊,你不要把别人的也都给设,设置成了非默认啊。Where右侧到ID。
18:03
从这里面取U感D也行啊,你就不用从奥里面取也可以啊。就是杠。嗯,从二里面去吧,都一样的。然后使用它的update的方法啊打谁。Default给设置成零啊,全部取消。这个默认。啊或者呢,我们先查出来原来的默认啊,先查出来原先的默认啊。先查出来原先的默认,如果没有的,没有的话就不用操作数据库了嘛,这样是。嗯,比较合理的一个方式。Where default?等于一的啊,那我们先查一下啊。
19:00
然后first,因为只有一条默认嘛,好。Default。First。对,上号。啊,如果原来没有默认。啊,如果。不为空啊,就是原来你有设置过默认。我们才给你进行一个更新嘛,否则的话就不进行更新。哇,Default里面的。Default。等于零啊,把你取消掉这个默认。Default。我们把变量给写写规整一下啊。防止你看着就乱了啊,如果没有就说如果先查一遍,如果原来没有这个默认地址。
20:00
我们就直接往下进行,如果有的话才给你进行一个设置。好吧。啊,那接着是把我们现在的这个啊,给它设置为默认。等于一。然后是C5。利用他的这个私有方法。哎,这样就更新完成了,最后。Response。No content。啊,因为。哎,我们这里可能会涉及到这个表操作,还有这个数据的一个操作啊,所以呃,有可能的话呢,我们就把它给放到一个。15里面啊。防止我们取消了一个默认,但是另外一个默认设置的时候报错了啊,我们就没设置成功,所以涉及到多表的时候,我们就是使用。
21:00
数据库的一个事物啊,并且用拆开去去补货,可能出现的一个异常。肉一啊,抛出这个,如果出现异常干什么呢,回滚。啊,并抛出这个异常,那首先在这里你要去开启啊,开启这个。开启这个数据库的一个失误啊。然后如果没有异常的话,我们就正常的提交就可以了啊。啊,并且。啊,Return这个响应啊,在这如果有异常就抛出这个异常好,这样我们设置为默认地址也完成了,来试一下啊,要使用派启方式。去请求我们把一设置为默认啊,一设置为默认。然后加上一个default。啊,这是我们的请求的一个地址。
22:02
啊,Talking过期了,时间有点长了。Default没有这个字段啊,我们数据库应该是is default啊,是这个is default。所以都写错了。Is default。Where is default?这里也是啊啊,现在来是这个异常,就是我们抛出的这个异常吗。啊,成功来刷新一下数据库。它是不是,一是默认的一个地址,就是我们设置二看一会不会自动取消。把二设置为默认地址。啊,也设置成功啊。好。
23:00
刷新是不是好?那么如果我们还是这样呢?它是不是还是会更新一遍数据库?你看。知道吗?对不对。你看他把。如果我们原来就是。这个。他把它给啊更新成零了啊接着。又干什么,又把这个模型给,这就出问题了。所以我们不能不能对这个啊,已有的这个虚进设置。可以再看效果,现在是二啊,这样肯定是成功了。对不对,然后如果我再次执行,再次执行呢,注意它这个流程啊,它这里会先会先查到这个IDV2的这个数据。啊,AR的这个数据啊,接着这里会把它给更新成零啊,这个模型把它给你更新成零。清楚了吧?啊,那这个模型在设置。就。
24:00
没有效了啊,这涉及到一个模型的刷新的一个问题,我们来看一看啊。是不是就没了啊。所以哎,我们还要做一个判断。就是你如果查出来的这个ID。就是说在你不未婚的情况下啊,如果。直接放到这也行啊,如果你不为空,或者你的这个ID。不等于。我这个ID啊,我要更新的这个ID,这时候我才去更新你是吧,这样就不会和它产生一个冲突,也就说如果相同的就不更新了。嗯,但其实如果相同的话呢。我们应该直接返回。所以不放到这里去判断。
25:03
直接在这啊。就是说如果你存在了,并且你的这个ID等等于我要更新的这个ID,就是现在已经是默认的一个情况,直接就返回就可以了。是不是直接返回就可以了啊。好。那这样应该就没问题了。看下数据库呢。一。哎,再更新它就直接返回了,就根本没有走数据库,现在。因为到这一步,到这一步就返回了吗?到这步就返回了。或者说啊怎么写呢。就是这一步就啊不用写了,那既然这里已经我们能拿到这个地址的这个实例,我们直接在这判断吧,如果他的这个。Default is default。
26:01
等等,也就是说他已经是设置为默认了,那你就。嗯。也不用给他报错啊,这种东西没有必要报错,让前台这个用的时候再去判断一遍,直接给他就完了,对不对。就正常的直接给这里他就完了,你反正你现在已经是移动,我下面就我我就不走了,就完了呗。这种简单的API,你如果还在给他抛个异常说啊,当前已经是默认,那前台他还要去做这个处理。啊,当然你非要追求严谨,你可以给他加上啊,这里给他一个。没穿啥?定格一片的这个,然后一个II这个request啊,当前地址已经是默认,就是不能重复设置,是不是你这么提示也行啊。
27:00
啊,简单的,最简单的直接给他这个返回。哎,就是说更新成功,你用户就是说前端他写的时候他也不知道,你就让他更新就完了呗,反正他不走不走数据库这里我们都做了判断了嘛。那接着我们再来试一下啊,那现在因为这个已经是默认了。那我应该是再次请求就。提交不过来了,其实这样好一些,这样的话至少。啊,我们的逻辑严谨一些啊。啊,那除非我们去改第一个的。他才能改。对不对,改第一个才能改。啊,而且第二个会自动给我们取消零啊这样的话。稍微好一些,那我们就这么写吧。好,这样到现在我们地址相关的所有的管理就完成了。
我来说两句