前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >猿设计20——真电商之购物车设计

猿设计20——真电商之购物车设计

作者头像
山旮旯的胖子
发布2020-08-05 09:47:23
2.1K0
发布2020-08-05 09:47:23
举报
文章被收录于专栏:猿人工厂猿人工厂

经过前一章节的学习,相信你对购物车的业务和和功能有了一定的了解。其实购物车,很多朋友都多多少少接触过一些,上一章节我们也挖掘了购物车的需求。经过需求的挖掘,相信你应该有一些了解了吧,购物车的功能相对来说比较繁杂,还有一些隐含逻辑,埋得比较深。天猿人工厂君,就和你继续从业务和功能层面去梳理购物车的那些隐含逻辑,至于技术实现,会在设计系列完成之后,的功能实现专辑中体现。

猿设计同样是一个原创系列文章,帮助你从一个只是具备一些技术名词的小白猿人,开始掌握一些行业内通用的设计系统方法,提高你需求挖掘、需求分析、系统分析和设计的能力,完成属于你的能力聚变,更多精彩内容,敬请大家关注公主号猿人工厂,点击猿人养成获取

提及购物车的那些事情,我们上一章节已经进行过一些需求和功能的挖掘,现在我们通过对功能点的梳理,来挖掘购物车的实体信息已经其背后的隐含逻辑。

从页面展示功能来看,购物车需要展示的展示信息主要有:商品标题、商品图片、价格、数量、规格(颜色、尺码等)、商家(自营或店铺)、库存状态(是否有货)、促销信息等。而这些信息是需要持久化的,那么问题就来了,我们存储数据的时候一条记录的维度是什么?

有很多小伙伴,第一时间就会说肯定是SKU啦,因为SKU的信息很大程度上看上去是唯一的。如果真这样设计,只能讲你过去接触的是假电商,最多只能算是小得不能再小的电商系统了——就一句话,遇到多维度叠加促销你怎么去支持展示。最典型的某SKUA,单买和作为赠品,一条记录怎么办?

带着这些问题,我们先提取下实体,来分析下,购物车应该具备哪些属性。

哈哈,最主要的信息已经放在类图上了,想一想,为什么没有库存?为什么没有促销的明细?为什么没有优惠券?这些变化比较多,持久起来就不合适了。保留关键的信息,到展示前实时获取。

大家都知道,在未登录的状态下,用户依然可以使用购物车,那么购物车就需要把数据存储在用户本地了——一般来说使用cookie来存储。当用户登录时,用户本地的数据就需要和存储在服务端的数据进行合并,这个逻辑比较复杂,我们通过流程图来表示下吧。

由于站点一直在售卖商品,商品的库存以及商品自身的状态都在发生变化。比如说,某个商品下架了,那么进入购物车的时候需要告知用户,我们选择采取默认删除已下架的商品。由于库存也在随时发生变化,需要给用户做无货提示,或者提示用户库存紧张。

那么在购物车中,购物车必然和商品系统/模块,库存系统/模块发生关系了。我们可以通过时序图的方式更直观的来体现这些关系。

提起排序和分类这个问题,可能由的小伙伴,不是很清楚怎么去做了。猿人工厂君可以先提示你一小下,先按商家分组,按照业务规则选择商家顺序(我们来简单点而吧,按sku加入时间倒排吧),商家内部再按促销信息排序。至于怎么来做,天天Map的各种实现讨论得比要不要的,怎么遇到见真章的时候就不行了呢?给你一个数据结构吧,自己看着办Map<Long,List<CartSku>>。

促销信息主要用于商品的展示和选择参考,属于动态获取的信息,值得一提的是赠品类的东西,加入购物车之前就得想好了。画个简单的图表示下就可以了。

关于降价提示这个功能,如果想简单有效一点的话,可以在将商品加入购物车时,保存下商品的当时经过促销优惠的价格。这样一来,只要是有发现促销力度更大的价格,刷新促销价,然后展示价格差额。

但是这样实现由一个弊端——如果用户刷新购物车,那么就看不见了。所以要实现的话,需要两个字段,一个保持初始化时的价格,一个保存最新的价格,只要最新的低于初始化时的价格,就存在优惠提示了。看起来我们需要更新下实体信息了。

选择商品

购物车最基本的操作:勾选商品、删除商品、修改商品数量、清空购物车。删除商品和清空购物车,背后都存在一个隐含逻辑——刷新购物车。修改商品数量这个操作除了需要刷新购物车之外,还要多一个逻辑判断——库存判断。

由的同学可能会说,库存数量可以放在页面上让前端去实现,好多不规范的系统也是这样做的——就问一句话,库存数量能放在页面上被人看见么?所以这个还真得和后端交互,虽然复杂,但是胜在安全。可以化一个简单的流程图。

商品结算

用户在购物车选中商品时,会根据选中实时算出订单金额。同时如果用户选择了不同的优惠,也需要将优惠的金额计算进去。之所以将选择商品的功能放在结算处,是因为选择商品的逻辑和结算相关。而且较为复杂,需要考虑多方面的事情。

以上就是购物车的业务逻辑和概要设计,在接下来的一章中,我们会讲到订单结算的一些事情。可能你会觉得简单了些,或者有不同的设计,欢迎你联系猿人工厂君噢。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿人工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择商品
  • 商品结算
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档