Java后端实现拖拽排序

后端代码实现:

public void moveToPosition(Long currentId, Long targetId) {
          
   
        // 得到当前数据 获取sort
        Video currentS = videoService.getById(currentId);
        Integer currSort = currentS.getOrder();
        // 得到目标数据 获取目标sort
        Video targetS = videoService.getById(targetId);
        Integer targetSort = targetS.getOrder();

        // 获取当前和目标之间的数据
        QueryWrapper<Video> queryWrapper = new QueryWrapper<>();
        if (targetSort < currSort) {
          
   
            queryWrapper.between("`order`", targetSort, currSort);
        } else {
          
   
            queryWrapper.between("`order`", currSort, targetSort);
        }
        List<Video> videoListByTarget = videoService.list(queryWrapper);

        ArrayList<Integer> notList = new ArrayList<>();
        notList.add(currSort);
        videoListByTarget = videoListByTarget.stream().filter(model -> {
          
   
            return !notList.contains(model.getOrder());
        }).map(model -> {
          
   
            if (targetSort < currSort) {
          
   
                model.setOrder(model.getOrder() + 1);
            } else {
          
   
                model.setOrder(model.getOrder() - 1);
            }
            return model;
        }).collect(Collectors.toList());

        // 目标位置sort 给 当前数据sort
        currentS.setOrder(targetS.getOrder());
        targetS.setOrder(currentS.getOrder());
        videoListByTarget.add(currentS);

        boolean flag = videoService.updateBatchById(videoListByTarget);
    }
经验分享 程序员 微信小程序 职场和发展