前端拖拽排序,后端更改数据的java代码

contrlller
/**
 * 指令排序接口
 */
@PostMapping("/sortCategory")
public Result sortCategory(@RequestBody SortCategoryDTO dto) {
   broadScopeService.sortCategory(dto);
    return Result.success();
}
/**
 * 排序传的参数
 */
@Data
public class SortCategoryDTO {
    /**
     * 分类id
     */
    private Long id;
    /**
     * 分类排序字段
     */
    private Long sort;

}

service:

void sortCategory(SortCategoryDTO dto);

serviceimpl:

/**
     * 排序字段
     *
     * @param dto
     */
    @Override
    @Transactional
    public void sortCategory(SortCategoryDTO dto) {
        if (ObjectUtil.isNull(dto.getId())) {
            //id为空
            throw new BusinessException(MessageConstant.ID_NULL);
        }
        if (ObjectUtil.isNull(dto.getSort())) {
            //sort为空
            throw new BusinessException(MessageConstant.SORT_NULL);
        }
        //先通过id查询旧的sort?
        long oldSort = broadScopeMapper.findBySort(dto.getId());

        //判断区新旧区间内排序是增还是减,如果新sort大于旧sort
        if (dto.getSort() > oldSort) {
            //新sort大于旧sort 区间内会减
            boolean updateByRange = broadScopeMapper.sortByRange(oldSort, dto.getSort());
            if (!updateByRange) {
                throw new BusinessException(MessageConstant.SORT_FAILED);
            }
        } else {
            //新sort小于旧sort 区间内会增
            boolean updateByRange = broadScopeMapper.addSortByRange(dto.getSort(), oldSort);
            if (!updateByRange) {
                throw new BusinessException(MessageConstant.SORT_FAILED);
            }
        }
        //然后修改sort,传来的sort就是新的sort,只是修改当前移动的那一个sort,替换传过来的那个位置
        boolean sorted  = broadScopeMapper.sortCategory(oldSort, dto.getSort());
        if (!sorted) {
            throw new BusinessException(MessageConstant.SORT_FAILED);
        }
    }

mapper:

/**
 *  根据id查询sort
 * @param id
 * @return
 */
long findBySort(Long id);

xml:


mapper:

/**
 * 根据新旧sort批量修改
 * 新sort大于旧sort 区间内会减
 * @param oldSort
 * @param sort
 * @return
 */
boolean sortByRange(@Param("oldSort") long oldSort,@Param("sort") Long sort);

xml:



    update broadscope_prompt_category
    set sort = sort - 1
    where sort between #{oldSort} + 1 and #{sort}

mapper:

/**
 *  根据新旧sort批量修改
 *  新sort小于旧sort 区间内会增
 * @param sort
 * @param oldSort
 * @return
 */
boolean addSortByRange(@Param("sort")Long sort,@Param("oldSort") long oldSort);

xml:



    update broadscope_prompt_category
    set sort = sort + 1
    where sort between #{sort} and #{oldSort} - 1

测试:

前端拖拽排序,后端更改数据的java代码_第1张图片

你可能感兴趣的:(java,开发语言)