一个简单的遍历需求

今天开发一个前端遍历展示的接口,被前端怼了

看图需求很简单

  1. 多行展示
  2. 每行多个,可显示更多,每行可左右滑动

为了图省事简单组装一下直接返回回去了,方便是真的方便,前端生气也是真的生气,可以简单对这个横向、纵向接口压缩一下

  1. 横向空间上,可以取分页,前端自己传,无论是懒加载还是更多,根据pageSize、返回的数据量决定,可以提供给前端自定义的空间
  2. 纵向空间上,入参加入 type,前端自己写死对应枚举

这样无论扩展还是数据冗余都有比较大的改善

    /**
     * 兑换页信息
     */
    @RequestMapping("tab")
    public ResultVO<ShopTapBrieVo> tab(@RequestHeader(HttpHeadConstant.lgType) int lgType,
                                       @RequestParam int tabType,
                                       @RequestParam int pageIndex,
                                       @RequestParam int pageSize) {
        return ResultVO.success(shopService.tab(tabType, pageIndex, pageSize, lgType));
    }
    
    // service
    public ShopTapBrieVo tab(int pageIndex, int pageSize, int type, int lgType) {
        for (ShopTab shopTab : ItemManager.getShopTabs()) {
            if (shopTab.getId() != type) {
                continue;
            }
            ShopTapBrieVo vo = new ShopTapBrieVo();
            LanguageInfo language = LanguageManger.getLanguage(Module.SHOP, ItemManager.TYPE2_SHOP_TAP_NAME, 0, shopTab.getId(), lgType);
            if (language != null) {
                vo.setTapTitle(language.getContext1());
            } else {
                vo.setTapTitle(shopTab.getName());
            }
            List<ShopDefineBrieVo> collect = ItemManager.getShopTabDefines(shopTab.getId())
                    .stream()
                    .map(e -> new ShopDefineBrieVo(e, lgType))
                    .collect(Collectors.toList());

            // 内存分页
            int total = collect.size();
            int fromIndex = Math.min(pageIndex * pageSize, total);
            int toIndex = Math.min((pageIndex + 1) * pageSize, total);

            vo.setVos(collect.subList(fromIndex, toIndex));
            return vo;
        }
        return null;
    }

由于规则数据是预加载到内存中,所以直接使用内存分页,由于 subList 采用的是视图,并不会创建多余的对象,这里顺便回顾一下其他知识 java集合中sublist()的坑

这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/Go-Solo");
console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18332136");
posted @ 2024-07-30 13:30  Go_Solo  阅读(17)  评论(0编辑  收藏  举报