最近遇到一个问题,就是商品列表排序调整问题: ( 1 )商品列表,有时候会有新品上新,或者活动商品要出现在列表首页,有的旧的商品,吸引力不高的商品要调整到后面去甚至是最后,不想白白浪费前几页的宝贵位置给他。 ( 2 )现在项目是根据更新时间来确定排序,商品上新,活动商品首页是可以的,做一下修改就可以了,但是调整位置蛋疼,运营的同学说我想自己来排,谁在第几位,我自己设置甚至拖拖拽拽就排好了。
痛点:想了几个方案,批量什么的都想到了,但是不太理想。把 C 商品拖到 A 和 B 之间,怎么个拖法,尽可能保证效率要考虑商品多的情况。
1
airyland 2019-04-02 12:26:21 +08:00 via iPhone 1
运营的排序需求我处理过特别复杂的方案。
排序最简单的是添加一个数字类型的 order 字段。 至于拖动也是可以简单实现的,而且跟数量无关,核心是添加一个支持小数的数字排序字段,拖动到任何位置只要生成前后两个商品 order 范围内的一个数就可以了。 |
2
zppass OP 嗯,@airyland 老哥说得对。我说一下我这边最后的方案,需要排序的两个地方。
( 1 )一个是商品列表,商品很多索性跟我一起的老哥又建了一张表索性把别的相关需求也一起做了,专门展示商品给前端也是有一个你说的 order 字段,只不过不是用的一个范围,比如说这个 order 字段都是 1000 起步上移就是加一,作为排序的一个参照,他就顶到上边上去了。缺点:后台代码要判断逻辑,一个一个商品操作。优点简单,还有就是也考虑了设置范围,发现会出现操作太频繁,导致一个范围区间内商品太多,很可能就没空间给你移动了。举个例子用最简单移一次,就放在区间中间,相当于一次范围少一半次数多了范围就小的可怜了。现在这种傻一点,次数太频繁也无所谓,上不封顶。 |
3
zppass OP ( 2 )我做的关于商品图的排序,因为一个商品图不会特别多就没高的那么复杂。就是设置一个字段,默认是 0,你想排序你就设置一下数字大小,数字大的排在上面。
希望帖子,能对有需要的人有帮助。 |