java 实现拖拽排序

java 实现拖拽排序

/**
 * 
 * @param id  (对象id根据id查询出对象)
 * @param showRank(移动的位数,向下移动为正数,向上移动为负数)

 */
	public void linkSort(Long id, Integer showRank) {
	//g根据id查出需要移动的对象
		Link single = linkDao.get(Link.class, id);
	//判断是向上移动还是向下移动
		if(showRank >0) {
		//如果是向上移动 showRank为几就是向下移动几个位置筛选出需要向上移动的对象
			CommonFilter filter1 = QueryBuilder.createFilter().ge("showRank", single.getShowRank())
						.le("showRank", single.getShowRank()+showRank).neq("id", id);
			move(single, showRank, filter1, -1);
		}else if(showRank <0) {
			CommonFilter filter = QueryBuilder.createFilter().le("showRank", single.getShowRank())
						.ge("showRank", single.getShowRank()+showRank).neq("id", id);
			move(single, showRank, filter, 1);
		}
	}
private void move(Link link,Integer showRank,CommonFilter filter,Integer bit) {
		link.setShowRank(link.getShowRank()+showRank);
		linkDao.createOrUpdate(link);
		List<Link> list = linkDao.getList(Link.class, filter);
		list.stream().forEach(x ->{
			x.setShowRank(x.getShowRank() + bit);
			linkDao.createOrUpdate(x);
		});
	}

猜你喜欢

转载自blog.csdn.net/weixin_41656377/article/details/108122623