自如属性分类商品弹窗数据处理方案

2,205 阅读6分钟

背景

在商品电子化过程中,商品的特性可以由多个“属性及对应的属性值”进行描述,而根据一组属性值,可以确认唯一的商品信息。对商品选择时,不同属性值选择对应不同商品信息,其名称、价格、提示等不尽相同。对于不同属性,其选定后相互组合是否有对应的商品,需要一定算法判断。 以保洁产品选择为例,构建了一套属性分类商品选择处理方案。 不同保洁类型对应会有单产品、多产品样式选择。单产品选择为给定多组类似属性的组合的商品,通过多个不同属性选择匹配后给出对应产品,多产品之间同一次服务只能选择一个,根据选定的产品下单,金额根据产品制定。 多产品为可叠加使用的不同服务项,可在一次上门期间根据需要自由组合下单,金额为所选服务的叠加。该方案解决了自如保洁产品选择的问题,同时对于类似产品选择问题有较大的通用性。

处理方案

本次算法设计,提供一种商品选择方案,通过选定不同属性,组合展示对应商品信息,且属性选择时给出其余属性是否可选的提示。本次算法由后端一次性提供相应商品信息及属性信息,前段进行属性组合得出相应商品,减少每次接口查询造成的耗时和网络不稳定造成的问题,给用户更好的体验。

商品电子化过程中,沉淀了通用描述方法, spu- Standard Product Unit 标准化产品单元,即某种产品。sku-stock keeping unit库存最小单位,即产品的不同属性,本文商品描述同样采用通用规则描述。

image2021-6-17_14-33-4.png

方案主要分为商品池、属性池数据整理,数据选择处理,展示处理三部分。采用MVVM架构,model层为格式化数据信息,首次进入规范数据格式统一为指定model。数据处理、存储、计算统一由shoppingManager处理。又根据商品规格分类划分为单产品选择和多产品选择两种基本样式,划分为singleManager和multipleManager,分别处理数据逻辑。

整理流程

主流程图.png

主要处理流程:

  1. 外部获取初始数据,之后进行标准化转为标准模型。根据类型区分单产品,或者多产品样式。再根据不同样式处理数据。
  2. 单产品选择,主要为不同属性组合匹配不同商品,并对选择结果进行展示。处理重点主要为属性初始格式化和产品选择互斥逻辑两部分,两部分算法后续展开说明。页面展示由manager控制,交互主要为属性选择和提交。
  3. 多产品选择,主要为产品类型判断,购物车功能。产品判断指根据商品规格属性展示不同的样式及交互按钮。购物车指用户已选产品的记录和更新。页面展示由manager控制,交互主要为产品选择、取消选择、清空选项,合并下单。
  4. 用户操作后根据商品信息去后台获取最新价格和优惠信息,点击下单携带选择产品信息至下单页。

格式化流程

单产品-数据初始格式化.png

其主要流程为:

  1. 根据获取的属性信息和产品信息,根据定制模型构建统一属性模型和商品模型,便于后续数据统一处理。其中属性列表包含同属性类型内所有属性信息,和属性优先级字段。优先级用于后续排序。产品列表包含产品信息和产品对应属性信息。之后需要根据属性信息对商品进行定位。
  2. 先对属性进行根据优先级的排序,此顺序决定了后面不同属性保存顺序,保证不停类型属性的key不会因错位造成错位。
  3. 首次进入没有选中数据,有默认商品,则以默认商品对应的属性设为选中属性,匹配后续逻辑。
  4. 将所有产品以字典形式存储,其key为产品对应属性code根据优先级排序后组合成的字符串,值为当前产品模型。存储目的为之后便于根据选中属性查找是否有产品信息。

商品选择互斥算法

单产品-选择互斥 (1).png

其主要流程为:

  1. 商品选择算法用于根据选择属性,匹配对应产品信息作展示。且计算出其他属性值是否可选的逻辑。首次进入选择默认产品,及用户切换某一属性值,都需要重新计算。
  2. 算法初始条件为,一直全部属性列表且一直优先级关系。产品字典、选择的一组属性值。
  3. 产品匹配:根据选中的属性构造属性字符串,根据属性字符串,从产品字典里取出产品信息。
  4. 属性互斥:为方便提示用户产品选项,每次匹配完成后,会根据该属性与其他已选属性集合判断有没有商品,没有商品则属性置灰,显示不可选样式。给用户以提示。
  5. 价格信息、优惠信息等较容易变化的值,采用根据选择商品信息从接口查询的方式,保证数据准确性。

总结

以上就是属性选择处理方案的主要内容, 商品选择算法用于根据选择属性,匹配对应产品信息作展示。 且计算出其他属性值是否可选的逻辑。首次进入选择默认产品,及用户切换某一属性值,都需要重新计算。算法初始条件为,一直全部属性列表且一直优先级关系。产品字典、选择的一组属性值。产品匹配逻辑主要根据选中的属性构造属性字符串,根据属性字符串,从产品字典里取出产品信息。为方便提示用户产品选项,每次匹配完成后,会根据该属性与其他已选属性集合判断有没有商品,没有商品则属性置灰,显示不可选样式。给用户以提示,而互斥显示给出了用户商品提示,也给定用户选择范围,可选择的属性都能查找到对于商品,可直接存储,减少一次便利查询,简化逻辑提高效率。价格信息、优惠信息等较容易变化的值,采用根据选择商品信息从接口查询的方式,保证数据准确性。

本文作者:自如大前端研发中心-吴柳燕 蒋志炜

招聘信息

自如大前端研发中心招募新同学!

FE/IOS/Android工程师看过来

公司福利有:

  • 全额五险一金,并额外购买商业保险
  • 免费健身房+年度体检
  • 公司附近租房9折优惠
  • 每年2次晋升机会 办公地点:北京酒仙桥普天实业科技园 欢迎对技术有执着热爱的你加入我们!简历请投递 zhangxl122@ziroom.com