V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zppass
V2EX  ›  程序员

商品排序调整有什么好的方案,做到随心所欲调整顺序还快速?

  •  
  •   zppass · 2019-04-02 12:10:24 +08:00 · 2152 次点击
    这是一个创建于 1823 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近遇到一个问题,就是商品列表排序调整问题: ( 1 )商品列表,有时候会有新品上新,或者活动商品要出现在列表首页,有的旧的商品,吸引力不高的商品要调整到后面去甚至是最后,不想白白浪费前几页的宝贵位置给他。 ( 2 )现在项目是根据更新时间来确定排序,商品上新,活动商品首页是可以的,做一下修改就可以了,但是调整位置蛋疼,运营的同学说我想自己来排,谁在第几位,我自己设置甚至拖拖拽拽就排好了。

    痛点:想了几个方案,批量什么的都想到了,但是不太理想。把 C 商品拖到 A 和 B 之间,怎么个拖法,尽可能保证效率要考虑商品多的情况。

    4 条回复    2019-04-19 18:22:00 +08:00
    airyland
        1
    airyland  
       2019-04-02 12:26:21 +08:00 via iPhone   ❤️ 1
    运营的排序需求我处理过特别复杂的方案。

    排序最简单的是添加一个数字类型的 order 字段。

    至于拖动也是可以简单实现的,而且跟数量无关,核心是添加一个支持小数的数字排序字段,拖动到任何位置只要生成前后两个商品 order 范围内的一个数就可以了。
    zppass
        2
    zppass  
    OP
       2019-04-19 18:17:31 +08:00
    嗯,@airyland 老哥说得对。我说一下我这边最后的方案,需要排序的两个地方。
    ( 1 )一个是商品列表,商品很多索性跟我一起的老哥又建了一张表索性把别的相关需求也一起做了,专门展示商品给前端也是有一个你说的 order 字段,只不过不是用的一个范围,比如说这个 order 字段都是 1000 起步上移就是加一,作为排序的一个参照,他就顶到上边上去了。缺点:后台代码要判断逻辑,一个一个商品操作。优点简单,还有就是也考虑了设置范围,发现会出现操作太频繁,导致一个范围区间内商品太多,很可能就没空间给你移动了。举个例子用最简单移一次,就放在区间中间,相当于一次范围少一半次数多了范围就小的可怜了。现在这种傻一点,次数太频繁也无所谓,上不封顶。
    zppass
        3
    zppass  
    OP
       2019-04-19 18:20:18 +08:00
    ( 2 )我做的关于商品图的排序,因为一个商品图不会特别多就没高的那么复杂。就是设置一个字段,默认是 0,你想排序你就设置一下数字大小,数字大的排在上面。
    希望帖子,能对有需要的人有帮助。
    airyland
        4
    airyland  
       2019-04-19 18:22:00 +08:00
    @zppass 排序数字不使用整数,保留 5 位小数点左右,这个可操作区间实际上特别大,而且完全可以前端生成。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3564 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:59 · PVG 12:59 · LAX 21:59 · JFK 00:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.