java拖拽排序_拖拽排序后台设计与实现

  • Post author:
  • Post category:java


前言

项目中有一个需求是拖拽排序,将类似卡片的东西拖拽重新排列

有以下几个需求:

允许更改元素的排序

允许新增数据,并更新现有排序

允许删除数据,并更新现有排序

实现思路

一、全量更新元素位置法

适用场景:排序元素数量较少,对于大量数据排序不适用

原理:每一个元素拥有一个字段,表示元素当前排序的位置,通过前端排序,将排好的元素位置,一次性发送到后端。然后,后端统一更新所有元素的位置

具体实现:

实体设计:增加排序字段sort,表示元素当前的位置。例如,sort=1,则表示元素处于第一位

接口设计:

前端发送id数组,数组的索引表示数组当前的排序位置

例如:[3,2,4,1] 表示id为3的sortId为1,id为4的数组sortId为3

移动元素:移动元素后前端将id数组发送给后台

删除元素:删除元素直接删除id对应的元素对排序没什么影响,不过可能出现sortId出现跳过某个值的情况。也可以删除前端发过来数组中不存在而服务器端存在的元素,然后根据删除后的数组元素进行全部更新

新增元素:新增元素时如果想要放在最后一位,那么sortId为sortId的最大值加一,如果想要将新增的元素放在第一位,那么将前端把新加的数组放在第一位,发数组id给后端再进行全排序

二、取中值法

适用场景:数据量较多,移动次数不是很频繁



版权声明:本文为weixin_36444911原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。