00:00
前面我们收集好了拖拽成功以后所有要修改的节点的信息数据,我们最终将这些数据呢,封装成了一个数组,数组里边每一个对象都代表当前要修改的节点信息,比如当前要修改哪个节点,我们有待它的ID以及它的最新排序,或者呢,有更多信息,比如当前是哪个节点,它的最新层级以及它最新的负ID,以及它的最新排序。那将这些数据呢,我们最终要发给我们的服务器进行保存,那接下来我们就应该编写一个请求接口来处理我们这个请求,我们来到我们这个controller,我们找到category controller,我来编写一个方法来批量修改我们提交上来的数据。在这一块呢,已经逆向生成了一个方法,只不过这个是来修改单个节点信息的,我们现在呢,提交的是一整个数组里边,每一个都是要修改的一个分类信息,所以我们可以来写一个批量方法。
01:00
我把这个复制过来,我们的批量修改呢,比如我们路径就叫update sal,我们主要更新它的排序,我们这个排序我们现在的request body,也就说我们从请求体中获取提交过来的数据,由于它是一个数组,所以我们将它们封装成一个category n t的数组,那这样的话,我们只要一发一个posts请求,将我们整个数组的杰森提交上来,Spring m VC自动给我们封装成它,那我们想要修改我们逆向生成的这个方法里边已经携带了我们的批量修改方法,比如我们点一个有一个叫update duch8id,也就说呢,批量修改按照它的ID进行修改,我们每一个kindor re的ID都是它的看ID,我们提交数据的时候呢,也都携带了相当按他修改修改哪些字段,那就是我们带了哪些字段就修改哪些字段。我们。
02:00
没带的这些字段,自然其他都为空,不修改就行了,所以我们在这儿收集好数据以后,我们将它传进来,将它传进来我们让它进行批量修改,只不过这一块呢,要接收一个collection集合对象,我们把这个数组呢可以转成集合,我们可以使用a race工具类点安list,我们将我们数组传进去,转成category entity集合,让他帮我们来批量修改。修改成功以后呢,自然会返回成功,我们可以来重启一下我们的product application,我们在这postman里边进行一个测试,我们还是所有请求都发给网关,发给网关,我们最终呢要发一个,我们可以看一下。启动了没,那么最终要发一个update不sort这个请求。Category update,我们要更新它的排序,而且呢,我们要发成一个post请求。由于我们最终前端会将整个。
03:03
数组以杰森的方式提交给我们,所以我们在这要模拟,我们来写一个body,我们在请求题里边携带一个杰森,选中application杰森,那么杰森数据的格格式我们写一个数组,数组里边我们要提交的第一个对象,比如我们来写一个count ID,我们先来写一个冒号count ID属性名count ID们要修改什么呢?假设我们就修改上几个吧,前面的看ID是一,它的这个排序是零。我们就照着这几个把前面几个一修改,看的ID是一,它的排序sort,它的排序是零,这是我们要修改的第一个对象,第二个对象。它的这一块呢,有一个叫count ID,它是225 count level是二,我们可以来修改一下count ID。
04:00
Cant ID我们是225,包括它的cant level是二。把这个属性复制过来,我们在这进行测试,看level是二行,我们就来修改上这两个。那为了好看起见呢,我们将cat IDE的这个sot直接改为十,我们看批量修改能不能成功。我们发送请求。这块呢,已经返回0SUCCESS,这是成功的,我们来数据库先看一下我们的cat id225。225它的这个层级走,看到level呢,现在变成了二没问题,接下来再来看我们的一号,一号它的这个顺序有没有变成十,诶也变成了十,没问题,那我们这样呢,接口就算是写好了,我们的这个CTR了,我们用它逆向生成的方法稍加修改就可以使用了,那我们来前端呢,我们来写完这个功能,当我们整理好数据以后,这是我们打印好的,要拖拽的所有的这些节点,要更新的这些数据信息,我们将这些数据信息呢发出去,我使用http post out shift f代码整理一下我们要发什么请求。
05:19
我们在这复制一下API前缀不用带,我们直接发给product category update sort,而且呢,我们要携带数据,这个数据呢,就是这个this update no,我们就放在这儿,那如果请求成功了以后,那我们就应该告诉他成功,我们使用message,我们来找到我们以前的成功的message提示消息,用this Dollar message,我们就叫顺序修改成功。我们就将菜单顺序,菜单顺序等修改成功,二、shift f,当然当我们修改成功了以后,我们还应该将整个菜单重新刷新一遍,并且呢,我们以前拖拽的是哪个节点,将这个节点所在的负分类也要展开,比如我们拖的运营商,我们给它拖到了图书音响里边,那为了看效果,图书音响就得展开,我们才能看到这个运营商,所以我们在这儿还要做两件事儿,修改成功,刷新菜单,刷新菜单,这个刷新菜单呢,我们以前用过,我们直接在这把这个方法获取过来,就像添加成功一样,修改成功一样,完了都要刷出新菜单,并且呢,设置我们默认要展开的菜单。
06:48
把这块呢复制过来,那我们这个刷新出新菜单调用完了以后,接下来我们要默认展开的菜单,默认展开的菜单是要看上一次拖拽的是哪个菜单,是这个菜单它被拖拽到了哪个最新的负ID里边,我们相当于要展开这个节点,所以我们在这呢,只需要将要展开的这个菜单,我们把它的这个负ID,我们之前都想方设法都获取过,把这给这儿一放就行了。
07:22
保存,我们看最终的页面效果,我重新来刷新,刷新以后呢,我们现在页面的菜单是这样,由于我们上一次将图书音响输开,这个顺序变为了十,其他都是零,所以它是在最后边,那比如我们来拖拽一下,我们将它拖到时尚视频前边,那我们整个呢,打印菜单顺序修改成功,那就应该是从手机开始,重新给所有人都排了一个顺序,我们来看一下我们的这个数据库刷新,我们发现呢,手机的顺序是零,其他所有人的人一直往下进行排序,而我们的这个图书电子书刊已经变成了20。
08:01
那这一块的效果呢,基本就是正确的,那我们再来测试一下,比如我们将整车这里边有一个全新整车,我们发现啊,这个整车总共只有两层菜单,我能不能拖到生鲜里边,总共合成一个三层菜单,我们现在来试一下这个功能,我们将整车给生鲜里边拖,大家发现这个给里边放的时候呢,它是一个静止标志,也就是说我们放不到里边,只能放到生鲜的前边,原因就是它在这判断深度可能为三,我们看一下我们这一块的代码是否能被拖拽到某一个节点,我们在这儿使用a lot job会判断,判断前呢,我们会计算一个深度,这个深度加当前这个节点的深度必须小于等于三,那现在问题就是我们在这算深度的时候又出了问题,在这一块都已经打印是三了,再加上我们要进入的这个节点本身的层级一。
09:01
单加一就已经是四了,所以他判断呢,不能进入,说明我们这个a job方法还是有问题的,我们来到我们的这一块代码,它在这计算的这个深度,最终加上我们当前节点的这个level值有问题,那这个问题呢,们就直接在控制台打印一下,我们看它算到的这些结果都是什么样的,到底是哪个结果出了问题,比如我们先打印它的这个this max level,它算出来的是多少,那既然要获取呢,我们就使用反引号,好,我们给它呢可以动态取值反引号,那它的冒号,它的值呢,就是刀乐符大括号,我们来动态取出它上一次算的这个东西,那在接下来这个max level有了,我们再来打印一下我们正在拖动的这个节点本身的level层级,来打印一下它,它的值呢,我们也Dollar大括号,获取一下Dollar大括号。
10:01
将它的这一块的值我们直接拿来,再包括我们打印一下我们正在进入的这个节点的level。那我们来打一下这个。封号好,它的这个level,我们看一下这三个level计算的都是什么样的,保存,我们重新进行测试,我们原来呢,整车在射线的前边,我们把它呢往里边拖,那我们发现现在呢又可以拖拽成功了,那比如我们再把它拖出来,把它拖出来,那拖出来以后呢,我们重新往进拖,那现在呢就不可以了,那我们发现啊。这一块呢,有时可以有时不可以,那说明还是我们这个程序有问题,那我们刷新一下页面。看一下是不是可以解决这个问题呢,我们来在这儿整车往声线里边拖,哎,又是可以了,那说明原因是我们没有在拖动结束以后获取到最新数据库的数据,所以导致我们这个没有节点应用到最新的一些层级信息,所以它的这个判断呢是失效的。
11:13
那我们来看一下我们这一块的代码,代码在这儿我们更新完以后,我们都已经让它刷新出菜单了,那我们要拖拽的所有节点这些数据呢。这个方法也已经将mus都更新了。而我们每次拖拽呢,都要重新计算我们的max level,以及将数据整理到update no里边,所以我们拖拽成功以后,我们就应该将这两个数据附到初始状态,否则导致的效果第一个就是我们越拖拽我们的update notes节点越多,我们可以看一下我们随便拖拖,越拖呢,我们这是46个,再往上拖,那就变成了68个,我们再再拖又变成了90个,越来节点越多,所以我们将这一块这两个数据,我们在拖拽成功以后,我们都给它清空到默认值,我们在这儿来写上清空方法,那就是this.update no就应该等于一个空数组,准备来接收新数据,包括this.max level,那就应该等于零,从零开始进行计算。
12:26
我来。代码整理保存一下,重新看一下页面效果。刷新整个页面。我们现在来进行拖拽,我们将整车呢拖拽到生鲜里边,现在是可以拖拽的,我们再把它拖拽出来,现在呢也是可以拖拽的,我们再把它拖拽到里边,以前是没有清空是不可以的,现在我们又可以了,所以大家一定要注意。每次操作完了以后,由于我们页面是无刷新状态的,以前用来保存数据的这些属性就应该清空回他以前的默认值,这样才能避免一些不可预知的问题。
我来说两句