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);
});
}