• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • 随笔>
  • 正文
  • java实现置顶排序功能

    2023年09月27日 1 k 阅读 0 评论 1666 字

    使用的是当前时间作为排序

    默认是拿到上一个排序号减一作为当前排序的排序号,但是有可能会重复排序号

    所以当前排序号后面的数据要顺延-1处理

     @Override
        public void topSort(String targetContentId) {
            if (targetContentId.equals(this.getContentEntity().getId())) {
                return; // 排序目标是自己直接返回
            }
            checkLock();
            //上一条数据
            CmsArticle prev = this.getArticleService().getById(targetContentId);
            Long topFlag = prev.getTopFlag() - 1;
            this.content.setTopFlag(topFlag);
            //排序时间重复 则后面的数据顺延-1
            LambdaQueryWrapper q = new LambdaQueryWrapper<CmsArticle>()
                    .eq(CmsArticle::getCategoryId, prev.getCategoryId())
                    .ne(CmsArticle::getTopFlag, '0')
                    .ne(CmsArticle::getTopFlagType, 'N')
                    .le(CmsArticle::getTopFlag, topFlag)
                    .orderByDesc(CmsArticle::getTopFlag).orderByDesc(CmsArticle::getSortFlag);
            List<CmsArticle> articles = this.getArticleService().getContentMapper().selectList(q);
            recursiveSort(articles, 0, topFlag);
            // 批量更新文章信息
            this.getArticleService().saveOrUpdateBatch(articles);
            this.getArticleService().updateById(content);
        }
    
        public void recursiveSort(List<CmsArticle> articles, int start, Long topFlag) {
            if (start >= articles.size()) {
                return;  // 递归结束条件:已经遍历完整个列表
            }
            CmsArticle currArticle = articles.get(start);
            if (currArticle.getTopFlag().equals(topFlag)) {
                currArticle.setTopFlag(topFlag - 1);  // 顺延-1处理
                topFlag--;
            }
            recursiveSort(articles, start + 1, topFlag);  // 递归遍历下一篇文章
        }
    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.019 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。